1、假如10个整数存储在数组a[10]中,要求把其中能被12整除的数标记为T,其他标记为F。标记存储在字符数组b[10]中下标相同的对应位置。试编写程序,实现以上功能,并输出两个数组。
#include <stdio.h> int main() { int a[10]={12,23,34,36,24,11,77,98,48,15,};//数字数组 char b[10];//下标数组 for(int i=0;i<10;i++){ if(a[i]%12==0){ b[i]='T'; }else{ b[i]='F'; } } for(int j=0;j<10;j++){ printf("%d ",a[j]); } printf("\n"); for(int j=0;j<10;j++){ printf("%c ",b[j]); } return 0; }
2、编写程序,将输入的20名学生的成绩保存在数组中,求出其最高分、最低分及平均分。
#include <stdio.h> int main() { float a[10],max[1],min[1]; int i,t; float sum=0; printf("请输入10名学生的成绩:"); for(i=0;i<10;i++){ scanf("%f",&a[i]); sum+=a[i]; } printf("\n"); //求最高分和最低分 max[0]=a[0]; min[0]=a[0]; for(i=1;i<10;i++){ if(max[0]<a[i]){ t=max[0]; max[0]=a[i]; a[i]=t; } if(min[0]>a[i]){ t=min[0]; min[0]=a[i]; a[i]=t; } } printf("最高分为:%.1f,最低分为%.1f,平均分:%.2f",max[0],min[0],sum/10); return 0; }
3、 设计一个程序统计某班全体学生3门课的考试成绩,要求能输入学生人数,并按编号从小到大的顺序依次输入学生的成绩,再统计出每门课程的全班总分,平均分及每个考生所有考试的总分和平均分。
#include<stdio.h> #define M 100 int main(){ int str1[M],str2[M],str3[M];//分别储存全班的三门成绩 int n,i,sum1=0,sum2=0,sum3=0; float ave1,ave2,ave3; float ave[M]; int sum[M]; printf("请输入学生人数:"); scanf("%d",&n); for(i=0;i<n;i++){ printf("请输入第%d位学生的成绩:\n",i+1); printf("语文成绩:"); scanf("%d",&str1[i]); printf("数学成绩:"); scanf("%d",&str2[i]); printf("英语成绩:"); scanf("%d",&str3[i]); } for(i=0;i<n;i++){ //全班总分 sum1+=str1[i];//语文全班总分 sum2+=str2[i];//数学全班总分 sum3+=str3[i];//英语全班总分 } ave1=sum1/n;//语文平均分 ave2=sum2/n;//数学平均分 ave3=sum3/n;//英语平均分 printf("全班语文总分:%d 数学总分:%d 英语总分:%d\n",sum1,sum2,sum3); printf("全班语文平均分:%.2f 数学平均分:%.2f 英语平均分:%.2f\n",ave1,ave2,ave3); for(i=0;i<n;i++){ sum[i]=str1[i]+str2[i]+str3[i]; ave[i]=sum[i]/3; printf("第%d位学生的全科总分:%d 三科平均分:%.2f\n",i+1,sum[i],ave[i]); } return 0; }
4、编写程序,输出二维数组的鞍点,鞍点的元素值在该行上最大,在该列上最小,若没有鞍点输出“No”。
思路:外循环次数由行数决定,先找出每行最大的数,记下该数及该数的列,再将该数与该列的所有数进行比较若最小,则存在鞍点,若不是最小则跳过此次循环进入下一个外循环。注意:判断存在鞍点放在大循环里面,最后才判断没有鞍点
#include<stdio.h> #define M 6 #define N 6 int main(){ int x,y;//行,列 printf("请输入行数和列数:"); scanf("%d %d",&x,&y); int str[M][N]; int i,j,maxY,max,k,flag; //输入数组 printf("请输入数组:\n"); for(i=0;i<x;i++){ for(j=0;j<y;j++){ printf("输入第%d行第%d列:",i+1,j+1); scanf("%d",&str[i][j]); } } for(i=0;i<x;i++){ max=str[i][0];//假设每行最大值为每行第一个数 maxY=0; for(j=0;j<y;j++){ if(max<str[i][j]){ max=str[i][j]; maxY=j;//记下行最大的列 } } flag=1; //遍历行最大数所在列的数与行最大数比较,判断是否是最小值,若是将flag值不变,若不是改flag值为0 for(k=0;k<x;k++){ if(max>str[k][maxY]){ flag=0;//不存在 continue; } } if(flag){ printf("存在鞍点!鞍点所在位置是:str[%d][%d]=%d",i,maxY,max); break; } } if(!flag){ printf("不存在鞍点!"); } return 0; }
文章出处登录后可见!
已经登录?立即刷新