2025年全国大学生全国计算机等级考试二级C语言上机考试题库及答案_第1页
2025年全国大学生全国计算机等级考试二级C语言上机考试题库及答案_第2页
2025年全国大学生全国计算机等级考试二级C语言上机考试题库及答案_第3页
2025年全国大学生全国计算机等级考试二级C语言上机考试题库及答案_第4页
2025年全国大学生全国计算机等级考试二级C语言上机考试题库及答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年全国大学生全国计算机等级考试二级C语言上机考试题库及答案第一部分程序填空题(共30分,每题15分,每空5分)填空题1题干:给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符的个数,并存入形参n所指的存储单元中,再将字符串中的数字字符按顺序移到字符串前部,非数字字符保持原有顺序移到后部。待补全代码:```cvoidfun(char*s,int*n){inti,j=0,count=0;chart[strlen(s)+1];for(i=0;s[i]!='\0';i++)if(s[i]>='0'&&s[i]<='9'){t[j++]=s[i];【1】;}*n=count;for(i=0;s[i]!='\0';i++)if(!(s[i]>='0'&&s[i]<='9'))【2】;t[j]='\0';for(i=0;【3】;i++)s[i]=t[i];}main(){charstr[80];intnum;printf("输入字符串:");gets(str);fun(str,&num);printf("数字字符个数:%d\n调整后字符串:%s\n",num,str);}```参考答案:【1】count++【2】t[j++]=s[i]【3】t[i]!='\0'(或i<strlen(t))解析:【1】处统计数字字符的数量,每识别到一个数字字符计数加1;【2】处将非数字字符追加到临时数组t的尾部,保持原有顺序;【3】处循环将临时数组t的内容复制回原字符串s,循环终止条件为临时字符串遍历结束。填空题2题干:给定程序中,结构体student记录了学生的学号、姓名、3门课成绩,函数fun的功能是:找出N名学生中总分最高的学生数据,作为函数值返回。待补全代码:```ctypedefstruct{charnum[10];charname[20];intscore[3];inttotal;}STU;STUfun(STUs[]){inti,max_index=0;for(i=0;i<N;i++){s[i].total=0;for(intj=0;j<3;j++)s[i].total+=【1】;if(s[i].total>s[max_index].total)【2】;}return【3】;}main(){STUs[N]={{"2025001","张三",{78,85,90},0},{"2025002","李四",{88,92,79},0},{"2025003","王五",{91,87,95},0},{"2025004","赵六",{69,75,82},0},{"2025005","孙七",{83,79,89},0}};STUmax=fun(s);printf("总分最高学生:\n学号:%s姓名:%s总分:%d\n",max.num,,max.total);}```参考答案:【1】s[i].score[j]【2】max_index=i【3】s[max_index]解析:【1】处累加学生第j门课的成绩,计算个人总分;【2】处当当前学生总分高于已记录的最高总分时,更新最高总分学生的下标;【3】处返回总分最高的学生结构体数据。填空题3题干:给定程序中,函数fun的功能是用递归方法计算n阶勒让德多项式的值,递归公式如下:当n=0时,P₀(x)=1;n=1时,P₁(x)=x;n>1时,Pₙ(x)=((2n-1)*x*Pₙ₋₁(x)-(n-1)*Pₙ₋₂(x))/n。待补全代码:```cdoublefun(intn,doublex){if(n==0)return【1】;elseif(n==1)return【2】;elsereturn【3】;}main(){intn;doublex;printf("输入n和x:");scanf("%d%lf",&n,&x);printf("P%d(%lf)=%lf\n",n,x,fun(n,x));}```参考答案:【1】1.0【2】x【3】((2*n-1)*x*fun(n-1,x)-(n-1)*fun(n-2,x))/n解析:【1】【2】分别对应递归的两个终止条件,返回对应阶数的多项式值;【3】对应n>1时的递归计算公式,直接套用题干给出的递归式即可。填空题4题干:给定程序中,函数fun的功能是:将a所指数组中的n个整数和b所指数组中的n个整数按序交替写入到fp所指的文件中,写入顺序为a[0],b[0],a[1],b[1],……,a[n-1],b[n-1]。待补全代码:```cvoidfun(int*a,int*b,intn,FILE*fp){inti;for(i=0;i<n;i++){fwrite(【1】,sizeof(int),1,fp);fwrite(【2】,sizeof(int),1,fp);}}main(){inta[5]={1,3,5,7,9},b[5]={2,4,6,8,10},n=5;FILE*fp=fopen("data.dat","wb");fun(a,b,n,fp);fclose(fp);}```参考答案:【1】&a[i](或a+i)【2】&b[i](或b+i)解析:fwrite函数第一个参数为待写入数据的内存地址,【1】【2】分别取数组a、b第i个元素的地址即可。第二部分程序修改题(共30分,每题15分,每个错误5分)说明:程序中//found标注的下方存在错误,请修改错误使程序运行正确,不得增删行、不得修改程序整体结构。修改题1题干:给定程序中,函数fun的功能是:将s所指字符串中出现的与t1所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。此处要求t1和t2所指字符串的长度相同。待修改代码:```cvoidfun(char*s,char*t1,char*t2,char*w){inti;char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=t1;/*found*/while(r)if(*r==*p){r++;p++;}elsebreak;/*found*/if(*r=='\0'){a=w;for(i=0;i<strlen(t2);i++)/*found*/*a=t2[i];a++;}w++;}}main(){chars[100],t1[100],t2[100],w[100];printf("输入原字符串:");scanf("%s",s);printf("输入待替换子串:");scanf("%s",t1);printf("输入目标子串:");scanf("%s",t2);if(strlen(t1)!=strlen(t2)){printf("子串长度不同!\n");exit(0);}fun(s,t1,t2,w);printf("替换后结果:%s\n",w);}```参考答案:1.第一处错误:`while(r)`改为`while(*r!='\0')`(或`while(*r)`)2.第三处错误:`*a=t2[i];a++;`改为`{*a=t2[i];a++;}`(或简化为`*a++=t2[i];`)解析:第一处错误是循环条件错误,需要判断指针r指向的字符是否为字符串结束符,而非判断指针本身是否为空;第三处错误是for循环默认只执行紧随其后的第一条语句,a++未被纳入循环体,需要加大括号或合并为一条赋值语句。修改题2题干:给定程序中,函数fun的功能是:计算n个数的平均值,并统计大于等于平均值的数的个数作为函数值返回。待修改代码:```c/*found*/voidfun(intx[],intn,double*aver){inti,count=0;doublesum=0.0;for(i=0;i<n;i++)sum+=x[i];/*found*/*aver=sum/n;for(i=0;i<n;i++)/*found*/if(x[i]>=aver)count++;returncount;}main(){intarr[10]={12,45,78,36,90,23,67,81,55,49};doubleavg;intres=fun(arr,10,&avg);printf("平均值:%.2lf\n大于等于平均值的个数:%d\n",avg,res);}```参考答案:1.第一处错误:`voidfun(intx[],intn,double*aver)`改为`intfun(intx[],intn,double*aver)`2.第三处错误:`if(x[i]>=aver)`改为`if(x[i]>=*aver)`解析:第一处错误是函数返回值类型不匹配,函数需要返回统计的个数(int类型),不能定义为void;第三处错误是aver为指针类型,存储的是平均值的内存地址,需要解引用才能获取平均值的数值。第三部分程序设计题(共40分)说明:请编写函数fun的实现代码,实现题干要求的功能,不得修改main函数和已有代码结构。设计题1题干:请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,a=45,b=12,调用该函数后,c=4152。代码框架:```cvoidfun(inta,intb,long*c){/*请在此处编写代码*/}main(){inta,b;longc;printf("输入a和b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("结果:%ld\n",c);}```参考答案:```c*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);```解析:a/10提取a的十位数字,乘以1000对应千位;b/10提取b的十位数字,乘以100对应百位;a%10提取a的个位数字,乘以10对应十位;b%10提取b的个位数字对应个位,相加后得到合并结果。设计题2题干:编写函数fun,其功能是:判断一个整数是否是素数,若是返回1,否则返回0。在main函数中调用该函数,输出100到200之间的所有素数及素数的总个数。代码框架:```cintfun(intn){/*请在此处编写代码*/}main(){inti,count=0;for(i=100;i<=200;i++)if(fun(i)){printf("%d",i);count++;}printf("\n素数总个数:%d\n",count);}```参考答案:```cif(n<=1)return0;for(inti=2;i*i<=n;i++)if(n%i==0)return0;return1;```解析:素数的判断规则为:大于1的整数,除了1和自身外没有其他因数。首先排除小于等于1的数,再从2遍历到n的平方根,若存在能整除n的数则不是素数,否则为素数。设计题3题干:编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,s所指字符串中的内容为“ABCDEF12345”,其中ASCII值为偶数的字符是B、D、F、2、4,删除后t中的内容为“ACE135”。代码框架:```cvoidfun(char*s,chart[]){/*请在此处编写代码*/}main(){chars[100],t[100];printf("输入字符串:");scanf("%s",s);fun(s,t);printf("处理后字符串:%s\n",t);}```参考答案:```cinti,j=0;for(i=0;s[i]!='\0';i++){if(s[i]%2!=0)t[j++]=s[i];}t[j]='\0';```解析:遍历原字符串的每个字符,判断字符ASCII值的奇偶性,若为奇数则存入目标数组t,遍历结束后为t添加字符串结束符'\0'。设计题4题干:N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出学生的平均成绩,作为函数值返回。代码框架:```cstructslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h){/*请在此处编写代码*/}STREC*creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(i<N){q=(STREC*)malloc(sizeof(STREC));q->s=s[i];i++;p->next=q;p=q;}p->next=0;returnh;}main(){doubles[N]={85.5,76,69.5,91,72,88,79.5,83},aver;STREC*h=creat(s);aver=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论