全国计算机等级考试题库二级C操作题100套(第19套)
第19套:
程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是將形參a所指結(jié)構(gòu)體變量s中的數(shù)據(jù)進(jìn)行修改,并把a(bǔ)中地址作為函數(shù)值返回主函數(shù),在主函數(shù)中輸出修改后的數(shù)據(jù)。
例如:a所指變量s中的學(xué)號、姓名、和三門課的成績依次是:10001、" ZhangSan "、95、80、88,修改后輸出t中的數(shù)據(jù)應(yīng)為:10002、"LiSi "、96、81、89。
請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include <stdio.h> #include <string.h> struct student { long sno; char name[10]; float score[3]; }; __1__ fun(struct student *a) { int i; a->sno = 10002; strcpy(a->name, "LiSi"); for (i=0; i<3; i++) __2__ += 1; return __3__ ; } main() { struct student s={10001,"ZhangSan", 95, 80, 88}, *t; int i; printf("\n\nThe original data :\n"); printf("\nNo: %ld Name: %s\nScores: ",s.sno, s.name); for (i=0; i<3; i++) printf("%6.2f ", s.score[i]); printf("\n"); t = fun(&s); printf("\nThe data after modified :\n"); printf("\nNo: %ld Name: %s\nScores: ",t->sno, t->name); for (i=0; i<3; i++) printf("%6.2f ",t->score[i]); printf("\n"); }解題思路:
本題是利用形參對結(jié)構(gòu)體變量中的值進(jìn)行修改并通過地址把函數(shù)值返回。
第一處:必須定義結(jié)構(gòu)指針返回類型,所以應(yīng)填:struct student *。
第二處:分別對成績增加1分,所以應(yīng)填:a->score[i]。
第三處:返回結(jié)構(gòu)指針a,所以應(yīng)填:a。
給定程序MODI1.C中函數(shù)fun的功能是:從N個(gè)字符串中找出最長的那個(gè)串,并將其地址作為函數(shù)值返回。各字符串在主函數(shù)中輸入,并放入一個(gè)字符串?dāng)?shù)組中。
請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
給定源程序:
#include <stdio.h> #include <string.h> #define N 5 #define M 81 fun(char (*sq)[M]) { int i; char *sp; sp=sq[0]; for(i=0;i<N;i++) if(strlen( sp)<strlen(sq[i])) sp=sq[i] ; return sq; } main() { char str[N][M], *longest; int i; printf("Enter %d lines :\n",N); for(i=0; i<N; i++) gets(str[i]); printf("\nThe N string :\n",N); for(i=0; i<N; i++) puts(str[i]); longest=fun(str); printf("\nThe longest string :\n"); puts(longest); }解題思路:
第一處: 要求返回字符串的首地址,所以應(yīng)改為:char *fun(char (*sq)[M])。
第二處: 返回一個(gè)由變量sp控制的字符串指針,所以應(yīng)改為:return sp;。
函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c 中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上。
例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=2415。
注意: 部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入
你編寫的若干語句。
給定源程序:
#include <stdio.h> void fun(int a, int b, long *c) { } main() { int a,b; long c; printf("Input a, b:"); scanf("%d%d", &a, &b); fun(a, b, &c); printf("The result is: %ld\n", c); NONO(); }解題思路:
本題是給出兩個(gè)兩位數(shù)的正整數(shù)分別取出各位上的數(shù)字,再按條件組成一個(gè)新數(shù)。
取a十位數(shù)字的方法:a/10
取a個(gè)位數(shù)字的方法:a%10
參考答案:
void fun(int a, int b, long *c) { *c = (b%10)*1000+(a/10)*100+(b/10)*10+a%10; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的全国计算机等级考试题库二级C操作题100套(第19套)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu4405:概率dp
- 下一篇: 蓝牙耳机测试软件apk_蓝牙5.0手机如