C++课程学习[5]-问题的模块化求解之相关练习
2018-03-27 16:09
369 查看
前言
学习资料详见中国大学MOOC之西安交大计算机程序设计(C++)课程,传送门。这一部分主要讲: 问题的模块化求解。
题目及解答
编写字符串反转函数mystrrev
编写字符串反转函数mystrrev,该函数的功能是将指定字符串中的字符顺序颠倒(前变后,后变前)。然后再编写主函数验证之。注意,输入输出应在主函数中进行。函数原型为 void mystrrev(char str[])
# include <iostream> using namespace std; int n; char b[20]; void swap(char a[]){ int i; for(i=0;i<=n;i++){ b[i] = a[n-i]; //cout<<b[i]<<endl; } } int main(){ //---define--- char a[20]; int j; //---input--- cin.getline(a,20); //---execute--- for(j=0;a[j]!='\0';j++) n = j; swap(a); //---output--- for(j=0;j<=n;j++) cout<<b[j]; cout<<endl; return 0; }
编写一组求数组中最大最小元素的函数
编写一组求数组中最大最小元素的函数。该组函数的原型为int imax(int array[], int count); // 求整型数组的最大元素
int imin(int array[], int count); // 求整型数组的最小元素
其中参数count为数组中的元素个数,函数的返回值即为求得的最大或最小元素之值。要求同时编写出主函数进行验证。
# include <iostream> using namespace std; int imax(int array[], int count){ int imax = array[0]; int i; for(i=0;i<count;i++){ if(array[i]>imax) imax = array[i]; } return imax; } int imin(int array[], int count){ int imin = array[0]; int i; for(i=0;i<count;i++){ if(array[i]<imin) imin = array[i]; } return imin; } int main(){ //---define--- int num[100]; int count; int i; //---input--- cin>>count; for(i=0;i<count;i++) cin>>num[i]; //---execute--- //---output--- cout<<imax(num, count)<<endl; cout<<imin(num, count); return 0; }
编写函数判断一个整数是否为素数
编写函数int isprime(int a);用来判断整数a是否为素数,若是素数,函数返回1,否则返回0。调用该函数找出任意给定的n个整数中的素数。 注意,1不是素数。/*编写函数int isprime(int a);用来判断整数a是否为素数,若是素数,函数返回1,否则返回0。 调用该函数找出任意给定的n个整数中的素数。 注意,1不是素数。*/ # include <iostream> # include <cmath> using namespace std; int isprime(int a){ //cout<<"测试"<<a<<" "; float lim = sqrt(a); if(a == 1 || a == 4) return 0; if(a == 2 || a == 3) return 1; for(int i=2;i<=lim;i++){ if(a % i == 0) return 0; } return 1; } int main(){ //---define--- int num[100]; int xnum[100]; int i=0; int count = 0; int flag = 0; //---input--- cin>>num[0]; while(num[count]!=0){ if(isprime(num[cou 4000 nt])){ xnum[i]=num[count]; i++; } count++; cin>>num[count]; } //---output--- cout<<xnum[0]; for(count=1;count<i;count++) cout<<" "<<xnum[count]; return 0; }
编写函数去除字符串中包含的非字母字符(不包括空格),并将小写字母转换成大写字母
编写函数去除字符串中包含的非字母字符(不包括空格),并将小写字母转换成大写字母。注意,不在函数中输出。输入输出应在主函数中进行。
/*编写函数去除字符串中包含的非字母字符(不包括空格),并将小写字母转换成大写字母。 注意,不在函数中输出。输入输出应在主函数中进行。*/ # include <iostream> # include <cctype> using namespace std; char upper(char a){ if(a == ' ') return ' '; if(a>='a' && a<='z') return (char)toupper((int)a); if(a>='A' && a<='Z') return a; else return '.'; } int main(){ //---define--- char word[20]; char xword[20]; int i; int j=0; //---input--- cin.getline(word, 20); //---execute--- for(i=0;word[i]!='\0';i++){ if(upper(word[i]) != '.'){ xword[j]=upper(word[i]); j++; } } //---output--- for(i=0;i<j;i++) cout<<xword[i]; return 0; }
编写函数计算一个英文句子中的单词个数
编写函数计算一个英文字符串中的单词个数。输入为一个最长500个字母的英文字符串,不包含数字和特殊字符,但可能包含一些英文标点符号(逗号、句点、问号)。标点符号独立出现时不视为一个单词。 单词间可能包含一个或多个空格。
/*一个最长500个字母的英文字符串,不包含数字和特殊字符,但可能包含一些英文标点符号(逗号、句点、问号)。 标点符号独立出现时不视为一个单词。 单词间可能包含一个或多个空格。。*/ # include <iostream> using namespace std; bool judge(char a){ if(a>='a' && a<='z') return 1; if(a>='A' && a<='Z') return 1; else return 0; } int main(){ //---define--- char word[600]; int i,j; int count = 0; //---input--- cin.getline(word, 600); //---execute--- for(i=0;word[i]!='\0';i++){ if(judge(word[i]) && !judge(word[i+1])) count++; } //---output--- cout<<count; return 0; }
相关文章推荐
- C++课程学习[4]-复杂信息的处理之相关练习
- C++第五周mooc在线测评— 问题的模块化求解
- C++学习笔记——继承相关问题
- C++第六周mooc在线测评—问题的模块化求解(2)——特殊函数
- C++学习笔记-类相关问题总结
- C++类模板定义与实现的分离—学习C++数据抽象和问题求解
- 二叉树的基本操作以及相关问题的求解—C++实现
- 学习C/C++语言:递归求解hanoi汉诺塔问题
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题
- C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来)
- 最近学习ASP2.0相关的几个小问题(非创新性文章)
- 个人学习代码保存:例3. GridView相关练习操作
- C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来)
- 第二学堂课程相关学习贴子导读
- C++调用matlab时可能遇到的问题和相关设置
- SSD 590+直流数字驱动器手册(1)[声明:本人仅仅用来做翻译练习,同时对这个590+产品进行学习,对版权问题不承担责任]
- 请高手帮忙:C/C++内存分配的问题?实例求解
- 关于Xerces-C++执行schema校验相关问题的详细解答
- RFC3261相关学习[问题]
- C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来)(转帖)