1. 已知一个班10个学生的成绩,要求输入这10个学生的成绩,然后求出它们的平均成绩。
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: 已知一个班10个学生的成绩,要求输入这10个学生的成绩,然后求出它们的平均成绩。 // #includeint main() { double score[10], sum=0.0, avg; printf("请输入10名学生的成绩n"); for (int i = 0; i < 10; ++i) { scanf("%lf", &score[i]); sum += score[i]; } avg = sum / 10.0; printf("该10名学生的平均成绩为: %fn", avg); return 0; }
2. 已知一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: 已知一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。 // #includeint main() { double score[10]; int max=0;//max记录最高分数的次序 printf("请输入10名学生的成绩n"); for (int i = 0; i < 10; ++i) {//序号从0开始 scanf("%lf", &score[i]); if(score[max] < score[i]){ max = i; } } printf("该10名学生的最高成绩为: %f,序号为: %dn", score[max], max); return 0; }
3. 有3个学生,上4门课,要求输入全部学生的各门课成绩,并分别求出每门课的平均成绩。
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: 有3个学生,上4门课,要求输入全部学生的各门课成绩,并分别求出每门课的平均成绩。 // #includeint main() { double score[3][4], sum[4], avg[4]; for (int i = 0; i < 3; i++) { printf("请输入第%d名学生的成绩n",i+1); for (int j = 0; j < 4; j++) { scanf("%lf", &score[i][j]); sum[j] += score[i][j];//一列一列加成绩 } } printf("平均成绩分别为:"); for(int i=0; i<4; i++){ avg[i] = sum[i] / 3.0; printf("%f ", avg[i]); } return 0; }
4. 已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩记录排序。
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: 已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩记录排序。 // #includeint main() { double score[5][4]; //5个学生4门课 double avg[5] = {0}; double temp; //交换变量 //输入成绩 for (int i = 0; i < 5; i++) { printf("请输入第%d名学生的成绩n",i+1); for (int j = 0; j < 4; j++) { scanf("%lf", &score[i][j]); avg[i] += score[i][j];//将每个学生的成绩加和 } avg[i] /= 4.0;//算每个学生的平均成绩 } //开始排序---冒泡排序 for(int i=1; i<=4; i++){//总共比较n-1趟 for(int j=0; j<=4-i;j++){//参与比较的元素 if(avg[j] > avg[j+1]){//前比后大,就交换 temp = avg[j]; avg[j] = avg[j+1]; avg[j+1] = temp; for (int k = 0; k < 4; ++k) {//交换内容 temp = score[j][k]; score[j][k] = score[j+1][k]; score[j+1][k] = temp; } } } } //输出 for (int i = 0; i < 5; i++) { printf("第%d名学生的成绩:",i+1); for (int j = 0; j < 4; j++) { printf("%.2f ",score[i][j]); } printf("平均成绩为:%.2f n",avg[i]); } return 0; }
5. 将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: 5. 将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8 // #include#define n 5 int main() { int a[n] = {8, 6, 5, 4,1}; int temp; printf("逆序前:"); for (int i = 0; i < n; i++) { printf("%d ",a[i]); } //交换 for(int i=0; i< n/2; i++){//前一半后一半进行交换 注意下标之间的关系 temp = a[i]; a[i] = a[n-1-i]; a[n-1-i] = temp; } printf("n逆序后:"); for (int i = 0; i < n; i++) { printf("%d ",a[i]); } return 0; }
6. 有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则输出"无此数"。
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: 6. 有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则输出"无此数"。 // #include#define n 15 int main() { int a[n] = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; int temp; printf("请输入你要查找的数:"); scanf("%d", &temp); //折半查找 int low=0, high= n-1; if(temp>a[low] || temp a[mid]) high = mid - 1;//区别于一般折半查找的地方 else break; mid = (low + high) / 2; } //判断找到与否 if(low <= high) printf("该数是该数组中第%d个元素的值", mid+1); else printf("无此数"); } return 0; }
7. 输出以下图案:
*****
*****
*****
*****
*****
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: // #includevoid main() { int i,j,k;char a[5][5]; for(i=0;i<5;i++) { for(j=0;j<5;j++) { a[i][j]='*'; printf("%c",a[i][j]); } printf("n"); for(k=1;k<=i+1;k++) printf(" "); } printf("n"); }
8. 有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。
解:
// // @Author: Brisa // @Date: 2021/10/5 // @Description: 有一篇文章,共有3行文字,每行有个80字符。要求分别统计出其中英文大写字母、小写字母、空格以及其它字符的个数。 // #include#include #define n 5 int main() { char text[3][80]; int num=0, upLetter=0, lowLetter=0, space=0, others=0; for(int i=0; i<3; i++){ printf("请输入一行字符串:"); gets(text[i]); for(int j=0; j<80 && text[i][j]!=' '; j++){ if(text[i][j]>='A'&&text[i][j]<='Z') upLetter++; else if(text[i][j]>='a'&&text[i][j]<='z') lowLetter++; else if(text[i][j]>='0'&&text[i][j]<='9') num++; else if(text[i][j]==' ') space++; else others++; } } for(int i=0; i<3; i++) puts(text[i]); printf("英文大写字母有%d个、小写字母有%d个、空格有%d个、数字有%d个、以及其它字符有%d个", upLetter, lowLetter, space,num,others); return 0; }
9. 有一行电文,已按下面规律译成密码:
A->Z a->z
B->Y b->y
C->X c->x
…
即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。假如已知道密码是Umtorhs,要求编程序将密码译回原文,并输出密码和原文。
解:
#includevoid main() { int i;char str1[100],str2[100]; gets(str1); for(i=0;str1[i]!=' ';i++) if(str1[i]>=65&&str1[i]<=90) str2[i]=155-str1[i]; else if(str1[i]>=97&&str1[i]<=122) str2[i]=219-str1[i]; else str2[i]=str1[i]; printf("%sn%sn",str1,str2); }
10. 编一程序,将两个字符串连接起来,(1)用strcat函数;(2)不用strcat函数。
解:
(1) #includevoid main() { int i,j;char str1[100],str2[100],str3[201]; gets(str1); gets(str2); str3=strcat(str1,str2); printf("%sn%sn%sn",str1,str2,str3); } (2) #include void main() { int i,j;char str1[100],str2[100],str3[201]; gets(str1); gets(str2); for(i=0;str1[i]!=' ';i++) str3[i]=str1[i]; for(j=0;str2[j]!=' ';j++) str3[j+i]=str2[j]; printf("%sn%sn%sn",str1,str2,str3); }



