1、(15分)设计一个程序从键盘读入一段英文文本,统计各字母和数字出现次数,并将结果输出显示器。(基础题)
#include#include #define N 100 int main() { char str[N]; int i; int a=0,b=0;//a代表字母个数,b代表数字个数 gets(str); for(i=0;i ='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z') a++; if(str[i]>='0'&&str[i]<='9') b++; } printf("共有%d个字母n,也有%d个数字n",a,b); }
运行结果:
2、(15分)找出一个二维数组(不小于四行四列)的鞍点,即在该位置上的元素在改行上最大、在该列最小。也可能没有鞍点,如果有鞍点,输出该鞍点的行列号,如果无鞍点输出无鞍点的信息。(细节题:本张试卷最难的题)
#include#define N 4 #define M 4 int main() { int i,j,k,a[N][M]={2,3,5,4,3,5,7,6,5,4,9,8,7,5,6,3},max,maxj,flag; printf("二维数组为:n"); for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf("%dt",a[i][j]); } printf("n"); } for(i=0;i max) { max=a[i][j]; maxj=j; } flag=1;//纵向比较是否为最小 for(k=0;k a[k][maxj])//纵向还有比它小的值 不是鞍点 退出此次循环 执行下一行 { flag=0; continue; } if(flag)//max为此列最小值 { printf("你看看你看看鞍点是a[%d][%d]=%d",i,maxj,max); break; } } if(!flag) printf("没有鞍点n"); return 0; }
运行结果:
3、 (20分)设计一个学生成绩统计程序。程序从文本文件中读入每个学生的学号、姓名(姓名是拼音并不含空格)、5门课程的成绩,学生数不超过100。程序求出每个学生的5门课总分,按总分降序排序,并按此顺序显示器输出每个学生的学号、姓名、总分;并输出每门课程的平均分(课程总分/学生数)(综合题)
(注:本题需要自己先建立文件)
#include#include struct stu{ char stuid[13],name[20],g[3]; int score; }; int main(int argc, char *argy[]){ FILE *fp,*fq; struct stu *p, t; int i,j,k,n,a,b,c,d; fq=fopen("stu2.txt" ,"w"); if(!fq || (fp=fopen("stu1. txt" , "r"))==NULL){ printf("打开文件, exit...n"); return 0; } for(n=0;fscanf(fp,"%s%s%s%d" ,t.stuid,t.name,t.g, &t.score),!feof(fp);n++); if((p=(struct stu *)malloc(sizeof(t)*n)==NULL)) { printf("空文件 n"); return 0; } rewind(fp); for(a=b=c=d=i=0;i =90 && p[i].score<=100) a++; else if(p[i].score>=80 && p[i].score<=89) b++; else if(p[i].score>=70 && p[i].score<=79) c++; else d++; } fclose(fp); fprintf(fq,"优: %g良: %g中: %g差: %gn",a/(n+0.0),b/(n+0.0),c/(n+0.0),d/(n+0.0)); printf("优: %g良: %g中: %g差: %gn",8/(n+9.0),b/(n+0.0),c/(n+0.0),d/(n+0.0)); for(i=0;i
(过程复杂没有单独建立文件,理解代码即可)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)