您的位置:首页 > 编程语言 > C语言/C++

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: