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

付费下载

下载本文档

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

文档简介

2025年全国计算机等级考试二级C语言上机题库及答案程序填空题(共3题)第1题函数fun的功能是:统计字符串s中各元音字母(即A、E、I、O、U)的个数(区分大小写)。例如,输入“HelloWorld!AaEe”,则输出应为:A:1E:2I:0O:2U:0。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。```cinclude<stdio.h>voidfun(chars,intcount[]){inti;for(i=0;i<5;i++)count[i]=0;while(___1___){switch(s){case'A':count[0]++;break;case'E':count[1]++;break;case'I':count[2]++;break;case'O':count[3]++;break;case'U':count[4]++;break;case'a':count[0]++;break;case'e':count[1]++;break;case'i':count[2]++;break;case'o':count[3]++;break;case'u':count[4]++;break;}___2___;}}intmain(){chars[80];intcount[5],i;printf("请输入字符串:");gets(s);fun(s,count);printf("A:%dE:%dI:%dO:%dU:%d\n",count[0],count[1],count[2],count[3],count[4]);return0;}```第2题函数fun的功能是:将一个3×3的二维数组转置(即行列互换)。例如,输入数组:123456789转置后的数组应为:147258369请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。```cinclude<stdio.h>voidfun(inta[3][3]){inti,j,t;for(i=0;i<3;i++)for(j=i+1;j<3;j++){t=a[i][j];___3___;a[j][i]=t;}}intmain(){inta[3][3],i,j;printf("请输入3x3矩阵(每行3个数,用空格分隔):\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);fun(a);printf("转置后的矩阵:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%d",a[i][j]);printf("\n");}return0;}```第3题函数fun的功能是:计算正整数n的所有因子(不包括1和自身)之和。例如,n=6时,因子为2、3,和为5;n=12时,因子为2、3、4、6,和为15。若n小于等于3,则返回0(因为没有符合条件的因子)。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。```cinclude<stdio.h>intfun(intn){intsum=0;if(n<=3)___4___;for(inti=2;i<n;i++)if(___5___)sum+=i;returnsum;}intmain(){intn;printf("请输入一个正整数:");scanf("%d",&n);printf("因子和为:%d\n",fun(n));return0;}```程序修改题(共2题)第1题给定程序中,函数fun的功能是:计算两个整数a和b的最大公约数。但程序存在错误,请修改错误部分,使程序正确运行。```cinclude<stdio.h>intfun(inta,intb){intr,t;if(a<b){t=a;a=b;b=t;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}returna;}intmain(){intx,y;printf("请输入两个整数:");scanf("%d%d",&x,&y);printf("最大公约数:%d\n",fun(x,y));return0;}```第2题给定程序中,函数fun的功能是:将字符串s中所有数字字符移到非数字字符之后。例如,输入“ab12c34”,处理后应为“abc1234”。但程序存在错误,请修改错误部分,使程序正确运行。```cinclude<stdio.h>include<string.h>voidfun(chars){inti,j=0,n;chart[80];n=strlen(s);for(i=0;i<n;i++)if(s[i]>='0'&&s[i]<='9'){t[j]=s[i];j++;}t[j]='\0';strcpy(s,t);}intmain(){chars[80];printf("请输入字符串:");gets(s);fun(s);printf("处理后:%s\n",s);return0;}```程序设计题(共2题)第1题编写函数fun,其功能是:统计一个整数n的二进制表示中1的个数。例如,n=5(二进制101),返回2;n=8(二进制1000),返回1。注意:n为非负整数。第2题编写程序,从键盘输入5个员工的信息(包括姓名、工号、月薪),存入结构体数组中,然后按月薪从高到低排序,最后输出排序后的员工信息(要求姓名、工号、月薪对齐显示)。提示:结构体定义如下:```cstructEmployee{charname[20];intid;floatsalary;};```参考答案程序填空题答案1.`s!='\0'`(或`s`)解析:while循环的条件是字符串未到末尾,即当前字符不为空字符`'\0'`。2.`s++`解析:每次循环后指针后移,遍历下一个字符。3.`a[i][j]=a[j][i]`解析:转置的核心是交换a[i][j]和a[j][i](i<j时避免重复交换)。4.`return0`解析:题目要求n≤3时返回0。5.`n%i==0`解析:i是n的因子的条件是n能被i整除。程序修改题答案第1题错误:原程序逻辑正确,但当输入a和b相等时,循环不会执行,直接返回a(正确)。经检查,原程序无错误?实际测试发现,当输入a=0时会出错,但题目假设输入为正整数。可能原题错误为“r=a%b”应放在循环内?正确修改:无明显错误,可能题目设定错误为“当a<b时交换后,初始r应重新计算”。正确代码应为:```cintfun(inta,intb){intr,t;if(a<b){t=a;a=b;b=t;}while((r=a%b)!=0){//将r的计算放入循环条件a=b;b=r;}returnb;//最终公约数是b,不是a}```第2题错误:原程序只保留了数字字符,非数字字符被丢弃。正确逻辑应为:先将非数字字符存入前半部分,再将数字字符接在后面。修改后的fun函数:```cvoidfun(chars){inti,j=0,k=0,n;chart[80];n=strlen(s);for(i=0;i<n;i++){//先存非数字字符if(!(s[i]>='0'&&s[i]<='9')){t[j]=s[i];j++;}}for(i=0;i<n;i++){//再存数字字符if(s[i]>='0'&&s[i]<='9'){t[j]=s[i];j++;}}t[j]='\0';strcpy(s,t);}```程序设计题答案第1题:```cintfun(intn){intcount=0;while(n>0){if(n&1)//检查最低位是否为1count++;n>>=1;//右移一位}returncount;}```第2题:```cinclude<stdio.h>include<string.h>structEmployee{charname[20];intid;floatsalary;};voidsortEmployees(structEmployeeemp[],intn){structEmployeetemp;for(inti=0;i<n-1;i++){for(intj=0;j<n-i-1;j++){if(emp[j].salary<emp[j+1].salary){//降序排序temp=emp[j];emp[j]=emp[j+1];emp[j+1]=temp;}}}}intmain(){structEmployeeemp[5];printf("请输入5个员工信息(姓名工号月薪):\n");for(inti=0;i<5;i++){scanf("%s%d%f",emp[i].name,&emp[i].id,

温馨提示

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

评论

0/150

提交评论