logo资料库

上海电机学院C语言实训答案.pdf

第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
资料共45页,剩余部分请下载后查看
(1)编写一个程序实现如下功能:一个整型数组有 10 个元素,删除所有值为 n 的元素。 要求: int fun(int *b,int m); int c[10]; int i,p,a[10],n; printf("请输入 10 个正整数:"); //此处输入数据要用空格隔开 for(i=0;i<=9;i++) scanf("%d",&a[i]); printf("请输入 n"); scanf("%d",&n); p=fun(a,n); for(i=0;i<=p;i++) printf("%d",c[i]); ① 主函数完成 n 的输入,数组元素输入以及删除后数组元素的输出。 ② 删除功能用子函数完成。 #include main() { } fun(int *b,int m) { int j,k=0,q=1; for(j=0;j<=9;j++) { if(*(b+j)!=m) /* { } else while(1) c[k]=*(b+j); k++; //此处比较麻烦的做法无限循环用 于判断连续多个被选数字例:1 2 3 4 5 5 6 7 8 9 若 n=5 则需要 { else if(*(b+j+q)!=m) { } c[k]=*(b+j+q); k++; j=j+q; q=0; break; q++; BX0904 ALEX BX0904 ALEX
} return k-1; */ } } ——————————————————————————————————————— —— (2)编写一个程序实现如下功能:输入 10 个学生 5 门课程的成绩,分别用函数求:① 每个学生的平均分;②每门课程的平均分;③找出最高的分数所对应的学生和课程。 若输入 2 个学生的成绩,其运行结果如下图所示。 #include main() { int i,j, N,C; float a[10][6],average[5],H,sum=0.0,sum1=0.0; for(i=0;i<=9;i++) { printf("input score of student %d\n",i+1); for(j=0;j<=4;j++) { scanf("%f",&a[i][j]); sum+=a[i][j]; if(H<=a[i][j]) { H=a[i][j]; N=i; C=j; } } a[i][5]=sum/5.0; sum=0.0; BX0904 ALEX BX0904 ALEX
} for(j=0;j<=4;j++) { for(i=0;i<=9;i++) { sum1+=a[i][j]; average[j]=sum1/10.0; printf("NO. cour1 cour2 } sum1=0.0; } cour3 cour4 cour5 ave"); for(i=0;i<=9;i++) { printf("NO.%d",i+1); for(j=0;j<=5;j++) printf(" %4.2f",a[i][j]); } printf("\n"); printf("\n"); printf("\n"); printf("average:"); for(i=0;i<=4;i++) printf(" %4.2f",average[i]); printf("highest: %4.2f NO. %d course %d ",H,N,C); printf("\n"); } ——————————————————————————————————————— (3)编写一个程序实现如下功能:找最长的单词。设输入的英文短文不超过一行(假 设正文最后有“.”结束,以“,”或空格分隔,不出现其他符号),编程将所有单词输出,并 求其中最长单词的长度,并将该单词输出。 int i,j,m=0,n; char a[100][100]; #include main() { printf("请输入短文:\n"); for(i=0;;i++) { for(j=0;;j++) { scanf("%c",&a[i][j]); if(a[i][j]==','||a[i][j]==' '||a[i][j]=='.') { if(j>=m) BX0904 ALEX BX0904 ALEX
m=j; n=i; break; { } } } if(a[i][j]=='.') break; } printf("最长单词为:"); for(j=0;j<=m;j++) printf("%c",a[n][j]); printf("最长长度为%d",m); } (4)编写一个程序实现如下功能:有 8 位裁判为 1 个运动员打分,请计算并输出去掉 一个最高分和一个最低分后这个运动员的平均得分以及所评分最接近平均分的裁判员号。裁 判员号及其所打分数从键盘输入,假设裁判员号为整数,所打分数为实数。 int t,i,j,sum=0,N[8]={9,9,9,9,9,9,9,9},k=0; float a[8],b[8],ave,c,c1; #include #include main() { printf("请输入 8 位裁判的打分:"); for(i=0;i<=7;i++) { scanf("%f",&a[i]); b[i]=a[i];//为方便寻找裁判 } printf("\n"); for(j=0;j<=7;j++)//冒泡排序 for(i=0;i<=5;i++)//求均值 ave=sum/6.0; c=abs(ave-b[0]); for(i=0;i<=7-j;j++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } sum+=a[i+1]; BX0904 ALEX BX0904 ALEX
for(i=0;i<=7;i++)//找最接近的裁判号 此处比较麻烦因为考虑到裁判打分可能有 c=c1; N[k]=i; N[k]=i; k++; ",N[i]+1); 相同的情况 { } c1=abs(ave-b[i]); if(c1 #include main() { int i,s; char a[80]={0},b[80]={0},c[40]={0}; printf("请输入字符串\n"); gets(a); s=strlen(a); BX0904 ALEX BX0904 ALEX
b[i]=a[2*i]; c[i-1]=a[2*i-1]; puts(a); for(i=0;2*i<=s;i++) for(i=1;2*i-1<=s;i++) strcat(b,c); puts(b); } ————————————————————————————————————— (6)功能说明:编写程序,实现以下成绩处理功能(输出格式参见示例): 1)输入n和n个成绩(成绩为浮点数类型,数组名记为a,假设1≤n≤50); 2)计算并输出成绩的累加和(记为sum)与平均成绩(记为ave),将≥ave的成绩归为A 档,将<ave的成绩归为B档; 3)分别统计A、B两档的人数,计算在总人数中的比率; 4)求出A档学生的最低分和B档学生的最高分,它们与平均成绩的差值; 运行示例: 输入:9 55.5 99.5 50.0 90.0 88 59.5 48 60 78.0 输出: Sum=628.5, Ave=69.8 A: 4,44.4% B: 5,55.6% MinA: 78.0,+8.2 MaxB: 60.0,-9.8 说明:输入的第 1 个数表示学生人数(n=9),接着输入的 9 个成绩中,累加和为 628.5(所 有小数均保留一位小数输出),平均分为 69.8 分;平均分以上(A 档)有 4 人,占 44.4%, 平均分以下(B 档)有 5 人,占 55.6%;A 档的最低分为 78 分,超出平均分 8.2 分,B 档的 最高分为 60 分,距离平均分还有 9.8 分的差距。 #include main() { float a[50],ave,sum=0.0,max=100,min=100; int An=0,i,n; printf("输入:"); scanf("%d",&n); for(i=0;i=ave) { An++; scanf("%f",&a[i]); sum=sum+a[i]; if(a[i]-ave
max=a[i]; } else { if(ave-a[i] #include main() { int n,i,j=0; char a,r[100]={0},s[100]={0}; printf("请输入字符串\n"); gets(s); printf("请输入要删除的字符:"); scanf("%c",&a); n=strlen(s); for(i=0;i
} (8)编写一个程序实现如下功能:从字符串中删除指定的字符。同一字母的大、小写 按不同字符处理。 例:若程序执行时,输入字符串为:Shanghai Dianji University,从键盘上输入字 符:s,则输出后变为:Shanghai Dianji Univerity,如果输入的字符串不存在,则字符串 照原样输出。 #include #include main() { int n,i,j=0; char a,r[100]={0},s[100]={0}; printf("请输入字符串\n"); gets(s); printf("请输入要删除的字符:"); scanf("%c",&a); n=strlen(s); for(i=0;i #include void fun(char *a,int k,int n); int l; main() { printf("请输入字符串:"); int p=0,q=0; char s[100]; BX0904 ALEX BX0904 ALEX
分享到:
收藏