计算机等级考试之C语言上机考试题库.docx
- 文档编号:7325297
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:275
- 大小:154.94KB
计算机等级考试之C语言上机考试题库.docx
《计算机等级考试之C语言上机考试题库.docx》由会员分享,可在线阅读,更多相关《计算机等级考试之C语言上机考试题库.docx(275页珍藏版)》请在冰豆网上搜索。
计算机等级考试之C语言上机考试题库
第1套
一、填空题
给定程序的功能是求1/4的圆周长。
函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:
L=Πd,在程序中定义的变量名要与公式的变量相同)。
例如:
输入圆的直径值:
19.527,输出为:
15.336457
请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。
#include
doublefun(doubled)
{
return3.14159*d/4.0;
}
main()
{
doublez;
printf("Inputthedoftheround:
");
scanf("%lf",&z);
printf("L=%lf\n",fun(z));
}
二、改错题
下列给定程序中函数fun的功能是:
计算正整数m的各位上的数字之积。
例如,若输入202,则输出应该是0。
请修改程序中的错误,得出正确的结果
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构
#include
#include
longfun(longn)
{
longr=1;
do
{
r*=n%10;
n/=10;
}while(n);
return(r);
}
main()
{
longm;
printf("\npleaseenteranumber:
");
scanf("%ld",&m);
printf("\n%ld\n",fun(m));
}
三、编程题
请编写一个函数fun,它的功能是:
求出1到m之内(含m)能被7或11整初的所有整数放在数组b中,通过n返回这些数的个数。
例如,若传送给m的值为20,则程序输出71114。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#defineN100
voidfun(intm,int*b,int*n)
{
inti,j=0;*n=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
{
b[j]=i;
j++;
}
*n=j;
}
main()
{
inta[N],n,i;
FILE*out;
fun(20,a,&n);
for(i=0;i if((i+1)%20==0) printf("%4d\n",a[i]); else printf("%4d",a[i]); printf("\n"); out=fopen("outfile.dat","w"); fun(100,a,&n); for(i=0;i if((i+1)%10==0) fprintf(out,"%4d\n",a[i]); else fprintf(out,"%4d",a[i]); fclose(out); } 第2套 一、填空题 函数fun的功能是: 统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。 例如: 当test=89431676时,结果应该为: sum5=0sum6=2sum7=1。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 #include intsum5,sum6,sum7; voidfun(longtest) { sum5=sum6=sum7=0; while(test) { switch(test%10) { case5: sum5++;break; case6: sum6++;break; case7: sum7++; } test/=10; } } main() { longtest=89431676L; fun(test); printf("\nThecountresult: \n"); printf("test=%ldsum5=%dsum6=%dsum7=%d\n",test,sum5,sum6,sum7); } 二、改错题 下列给定程序中,函数fun的功能是: 将字符串str中的小写字母都改为对应的大写字母,其它字符不变。 例如,若输入“asAS”,则输出“ASAS”。 请修改程序中的错误,使它能统计出正确的结果。 注意: 不要改动 main函数,不能增行或删行,也不能更改程序的结构 #include #include #include char*fun(charstr[]) { inti; for(i=0;str[i];i++) if((str[i]>='a'&&str[i]<='z')) str[i]-=32; return(str); } main() { charstr[81]; printf("\npleaseenterastring: "); gets(str); printf("\nTheresultstringis: \n%s",fun(str)); } 三、编程题 请编写一个函数fun,它的功能是: 找出一维整型数组元素中最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。 数组元素中的值已在主函数中赋予。 主函数中a是数组名,n是a中的数据个数,min存放最小值,flag存放最小值所在元素的下标 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include #include voidfun(intb[],intn,int*min,int*d) { inti; *min=b[0]; *d=0; for(i=0;i if(b[i]<*min) { *min=b[i]; *d=i; } } main() { inti,a[20],min,flag,n=10; FILE*out; for(i=0;i { a[i]=rand()%50; printf("%4d",a[i]); } printf("\n"); fun(a,n,&min,&flag); printf("min=%5d,Index=%4d\n",min,flag); out=fopen("outflie.dat","w"); memcpy(a,"3.141592653589793238462643383279",32); fun(a,8,&min,&flag); fprintf(out,"min=%5d,Index=%4d",min,flag); fclose(out); } 第3套上机考试试题 一、填空题 请补充main函数,该函数的功能是: 从键盘输入一组整数,使用条件表达式找出最大的整数。 当输入的整数为-1时结束。 例如: 输入9612123343232548936589-1时,最大的数为365。 仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容 #include #include #defineNUM100 main() { intn[NUM]; inti=-1; intMAX=-1; printf("\nInsertintegerwiththe'-1'asend: \n"); do { i++; printf("n[%d]=",i); scanf("%d",&n[i]); MAX=MAX n[i]: MAX; }while(n[i]! =-1); printf("TheMAX=%d\n",MAX); } 二、改错题 下列给定程序中,函数fun的功能是: 将一个由八进制数字字符组成的字符串转换为与其数值相等的十进制整数。 例如,若输入11111,则输出将是4681。 请修改程序中的错误,使它能得出正确结果。 注意: 不要改动main函数,不能增行或删行,也不能更改程序的结构 #include #include #include intfun(char*s) { intn; n=*s-'0'; s++; while(*s! =0) { n=n*8+*s-'0'; s++; } returnn; } main() { charstr[6]; inti; intn; printf("Enterastring(octaldigits): "); gets(str); if(strlen(str)>5) { printf("Error: stringtoolonger! \n\n"); exit(0); } for(i=0;str[i];i++) if(str[i]<'0'||str[i]>'7') { printf("Error: %cnotisoctaldigits! \n\n",str[i]); exit(0); } printf("Theoriginalstring: "); puts(str); n=fun(str); printf("\n%sisconveredtointegenumber: %d\n\n",str,n); } 三、编程题 下列程序定义了N×N的二维数组,并在主函数中赋值。 请编写函数fun,函数的功能是: 求出数组周边元素的平均值并作为函数值返回给主函数中的r。 例如: 若c数组中的值为: C= 1 9 7 4 5 2 3 8 3 则返回主程序后r的值应为4.625000 请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句 #include #include #include #defineN3 doublefun(intb[][N]) { inti,j,k=0; doubler=0.0; for(j=0;j { r+=b[0][j]; k++; } for(j=0;j { r+=b[N-1][j]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][0]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][N-1]; k++; } returnr/=k; } main() { intc[N][N]={1,9,7,4,5,2,3,8,3}; inti,j; FILE*out; doubler; printf("**********\n"); for(i=0;i { for(j=0;j { printf("%4d",c[i][j]); } printf("\n"); } r=fun(c); printf("THERESULT\n"); printf("Theris%lf\n",r); out=fopen("outfile.dat","w"); fprintf(out,"%lf",r); fclose(out); } 第4套上机考试试题 一、填空题 请补充fun函数,该函数的功能是将字符串str中的小写字母都改为对应的大写字母,其它字符不变。 例如: 若输入”Welcome! ”,程序输出结果是”WELCOME! ”。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 #include #include #include char*fun(charstr[]) { intj; for(j=0;str[j];j++) { if((str[j]>='a')&&(str[j]<='z')) str[j]-=32; } return(str); } main() { charstr[100]; printf("\npleaseenterastring: "); gets(str); printf("\nTheresultstringis: \n%s",fun(str)); } 二、改错题 下列给定程序中,函数fun的功能是: 计算并输出n以内最大的10个能被11或19整除的自然数之和。 n的值由主函数传入,若n的值为300,则函数值为2646。 请修改程序中的错误或在横线处填上适当的内容并把横线删除,使程序能得出正确的结果。 注意: 不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #include intfun(intn) { intm=0,mix=0; while((n>=2)&&(mix<10)) { if((n%11==0)||(n%19)==0) { m=m+n; mix++; } n--; } returnm; } main() { printf("%d\n",fun(300)); } 三、编程题 请编写函数fun,其功能是: 将str所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在s所指的数组中。 例如,若str所指字符串中的内容为ABCDEFG123456, 其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它以此类推。 最后s所指的数组中的内容应是246。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意: 部分源程序给出如下。 #include #include #include voidfun(char*str,chars[]) { inti,j=0,n; n=strlen(str); for(i=0;i if(i%2==0&&str[i]%2==0) { s[j]=str[i]; j++; } s[j]='\0'; } main() { charstr[100],s[100]; FILE*out; printf("\npleaseenterstring: "); scanf("%s",str); fun(str,s); printf("\nTheresultis: %s\n",s); out=fopen("outfile.dat","w"); strcpy(str,"pleaseenterstring: "); fun(str,s); fprintf(out,"%s",s); fclose(out); } 第5套上机考试试题 一、填空题 请补充fun函数,该函数的功能是: 依次取出字符串中所有大写字母,形成新的字符串,并取代原字符串。 例如,输入sdfASDsd,则输出ASD。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意: 部分源程序给出如下。 #include #include voidfun(char*s) { intj=0; char*p=s; while(*p) { if(*p>='A'&&*p<='Z') { s[j]=*p; j++; } p++; } s[j]='\0'; } main() { charstr[100]; printf("\nPleaseInputastring: "); gets(str); printf("\n\nTheoriginalstringis: %s\n",str); fun(str); printf("\n\nThestringofchangingis: %s\n",str); } 二、改错题 下列给定程序中,函数fun的功能是: 先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。 请修改函数fun中的错误或在横线处填上适当的内容并把横线删除,得出正确结果。 注意: 不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include voidfun() { intaa[3][3],sum; inti,j; sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&aa[i][j]); for(i=0;i<3;i++) sum=sum+aa[i][i]; printf("sum=%d\n",sum); } main() { fun(); } 三、编程题 请编写一个函数voidfun(int*s,intt,int*result),用来求出数组的最小元素在数组中的下标,并存放在result所指的存储单元中。 例如,输入如下整数: 564,165,567,121,948,324,329,454,5345,783,434,124,561,985,555 则输出结果为: 3,121。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意: 部分源程序给出如下。 #include #include voidfun(int*s,intt,int*result) { inttemp,min; min=s[0]; for(temp=0;temp if(s[temp] { min=s[temp]; *result=temp; } } main() { intstore[15]={564,165,567,121,948,324,329,454,5345,783,434,124,561,985,555},result; FILE*out; fun(store,10,&result); printf("%d,%d\n",result,store[result]); out=fopen("outfile.dat","w"); fprintf(out,"%d\n%d",result,store[result]); fclose(out); } 第6套上机考试试题 一、填空题 给定程序的功能是判断字符串s中的某个字符是否与字符ch相同,若相同什么也不做,若不同则插在字符串的最后。 例如,输入test,如果输入e,输出的结果不变,但如果输入a,结果testa。 请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。 注意: 部分源程序给出如下。 #include #include voidfun(char*s,charch) { while(*s&&*s! =ch) s++; if(*s! =ch) { s[0]=ch; s[1]=0; } } main() { charstr[81],c; printf("\nPleaseinputastring: \n"); gets(str); printf("\nPleaseenterthecharactertosearch: "); c=getchar(); fun(str,c); printf("\nTheresultis%s\n",str); } 二、改错题 下列给定程序中,函数fun 的功能是: 按顺序给t所指数组中的元素赋予从2开始的偶数。 然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在r所指的数组中。 若t所指数组中元素的个数不是5的倍数,多余部分忽略不计。 例如,t所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请修改程序中的错误,得出正确的结果。 注意: 不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #defineNUM20 intfun(double*t,double*r) { intj,i; doublesum; for(j=2,i=0;i { t[i]=j; j+=2; } sum=0.0; for(j=0,i=0;i { sum+=t[i]; if((i+1)%5==0) { r[j]=sum/5; sum=0; j++; } } returnj; } main() { doublea[NUM],b[NUM/5]; inti,j; j=fun(a,b); printf("Theoriginaldata: \n"); for(i=0;i { if(i%5==0) printf("\n"); printf("%4.0f",a[i]); } printf("\n\nTheresult: \n"); for(i=0;i printf("%6.2f",b[i]); printf("\n\n"); } 三、编程题 请编写一个函数voidfun(intx,intsum,intselect[]),该函数的功能是: 将大于整数x且紧靠x的sum个素数存入select所指的数组中。 例如,输入: 1218,则应输出: 127131137139149151157163。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意: 部分源程序给出如下。 #include #include voidfun(intx,i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机等级考试 语言 上机 考试 题库