(2025年)南京信息工程大学C语言题库附答案_第1页
(2025年)南京信息工程大学C语言题库附答案_第2页
(2025年)南京信息工程大学C语言题库附答案_第3页
(2025年)南京信息工程大学C语言题库附答案_第4页
(2025年)南京信息工程大学C语言题库附答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

(2025年)南京信息工程大学C语言题库附答案一、选择题1.若有定义`charstr[]="NanjingU";`,则`sizeof(str)`和`strlen(str)`的结果分别为()。A.8,7B.7,7C.8,8D.7,8答案:A(`sizeof`计算数组总字节数,包含'\0';`strlen`计算字符串长度,不包含'\0',"NanjingU"共7个字符)2.以下选项中,能正确表示`a`和`b`同时为正或同时为负的逻辑表达式是()。A.(a>0||b>0)&&(a<0||b<0)B.(a>0&&b>0)||(a<0&&b<0)C.(a+b>0)&&(a+b<0)D.(ab>0)答案:D(两数同号则乘积为正)3.执行以下代码后,`k`的值为()。```cintk=0;for(inti=1;i<=5;i++){if(i%2==0)continue;k+=i;}```A.5B.9C.6D.15答案:B(i=1、3、5时执行k+=i,1+3+5=9)4.若有定义`inta[5]={1,3,5,7,9},p=a;`,则`(p+2)+2`的值为()。A.5B.7C.9D.11答案:B(p+2指向a[2]即5,5+2=7)5.以下关于函数参数传递的描述,错误的是()。A.数组名作为参数传递时,传递的是数组首地址B.指针作为参数传递时,函数内部修改指针指向的值会影响实参C.基本数据类型作为参数传递时,函数内部修改形参不影响实参D.结构体变量作为参数传递时,函数内部修改结构体成员会影响实参答案:D(结构体变量传递是值传递,修改形参不影响实参;若传递结构体指针则会影响)6.执行`intx=3,y=5;x^=y^=x^=y;`后,`x`和`y`的值为()。A.3,5B.5,3C.3,3D.5,5答案:B(异或运算交换两数,最终x=5,y=3)7.若有定义`typedefstruct{inta;charb;floatc;}STU;`,则`sizeof(STU)`的值在32位系统中为()。A.7B.8C.12D.16答案:C(结构体对齐:int占4字节,char占1字节(补3),float占4字节,总4+4+4=12)8.以下预处理指令中,能实现“若未定义宏`DEBUG`则编译代码段”的是()。A.ifdefDEBUGB.ifndefDEBUGC.ifDEBUGD.elseDEBUG答案:B(ifndef表示“如果未定义”)9.若用`fopen("data.txt","w+")`打开文件,以下描述错误的是()。A.文件不存在时会创建新文件B.文件存在时会清空原有内容C.可以读取和写入文件D.只能从文件开头读取答案:D("w+"模式允许读写,写入从开头覆盖,读取可通过fseek移动指针)10.以下代码的输出结果是()。```cintfunc(intn){if(n==0)return0;returnfunc(n-1)+n;}intmain(){printf("%d",func(3));}```A.3B.6C.0D.10答案:B(递归计算0+1+2+3=6)二、填空题1.执行以下代码,输出结果为______。```cinta=5,b=3;printf("%d,%d",a/b,a%b);```答案:1,2(5/3商1,余数2)2.若`intp=(int)malloc(4sizeof(int));`,则`p`指向的内存空间可存储______个`int`型数据。答案:4(`4sizeof(int)`分配4个int的空间)3.以下代码执行后,`i`的值为______。```cinti=1;while(i<=5){if(i%3==0)break;i++;}```答案:3(i=1→2→3时触发break,退出循环)4.若`chars[]="hello",p=s;`,则`(p+2)`的值为______(用字符表示)。答案:'l'(p+2指向第三个字符'l')5.定义`inta[3][4]={{1,2},{3,4,5},{6}};`,则`a[1][2]`的值为______。答案:5(第二行初始化为3,4,5,a[1][2]即第三个元素)6.以下代码的输出结果为______。```cintx=10;voidfunc(){x=20;}intmain(){func();printf("%d",x);}```答案:20(全局变量x被函数修改)7.若`unionData{inti;charc;floatf;}data;`,则`sizeof(data)`的值为______(32位系统)。答案:4(共用体取最大成员大小,float占4字节)8.执行`inta=5,b=7;a=a^b;b=a^b;a=a^b;`后,`a`和`b`的值分别为______。答案:7,5(异或交换两数)9.以下代码的输出结果为______。```cfor(inti=1,j=5;i<j;i++,j--)printf("%d,%d",i,j);```答案:1,52,4(i=1,j=5→i=2,j=4时i<j成立,i=3,j=3时不满足)10.若`intp=&a;`,要通过`p`修改`a`的值为100,应执行______。答案:p=100;三、程序改错题(指出错误并修正)1.错误代码:```cintgetNum(){intnum=100;return#}intmain(){intp=getNum();printf("%d",p);}```错误:返回局部变量的地址,局部变量在函数结束后被销毁,指针变为野指针。修正:使用静态变量或动态分配。```cintgetNum(){staticintnum=100;//或intnum=(int)malloc(sizeof(int));num=100;return#}```2.错误代码:```cintmain(){intarr[5],i;for(i=0;i<=5;i++)arr[i]=i;}```错误:数组下标越界,arr的索引范围是0-4,i=5时访问arr[5]超出数组边界。修正:循环条件改为i<5。```cfor(i=0;i<5;i++)```3.错误代码:```cintmain(){charstr[10];str="Nanjing";//尝试用赋值语句修改字符数组}```错误:字符数组名是常量指针,不能直接用赋值语句修改,应使用strcpy。修正:```cstrcpy(str,"Nanjing");```4.错误代码:```cintfunc(intn){if(n==1)return1;returnfunc(n-1)n;//计算n!,但n=0时未处理}```错误:未处理n=0的情况,0!应为1,否则n=0时会无限递归。修正:添加n=0的判断。```cif(n==0)return1;```5.错误代码:```cFILEfp;fp=fopen("test.txt","r");fprintf(fp,"Hello");//以"r"模式打开文件,只能读取不能写入```错误:文件打开模式错误,"r"模式只能读取,写入需用"w"或"a"等模式。修正:```cfp=fopen("test.txt","w");//或"w+"等可写模式```四、编程题1.编写程序:输入两个整数a和b,输出它们的和、差、积、商(商保留两位小数)。若b为0,输出“除数不能为0”。```cinclude<stdio.h>intmain(){inta,b;scanf("%d%d",&a,&b);printf("和:%d\n",a+b);printf("差:%d\n",a-b);printf("积:%d\n",ab);if(b==0)printf("除数不能为0\n");elseprintf("商:%.2f\n",(float)a/b);return0;}```2.输入10个整数存入数组,找出最大值、最小值、平均值,并统计正数、负数、零的个数。```cinclude<stdio.h>intmain(){intarr[10],i,max,min,pos=0,neg=0,zero=0;floatavg=0;for(i=0;i<10;i++){scanf("%d",&arr[i]);avg+=arr[i];if(i==0){max=arr[i];min=arr[i];}else{if(arr[i]>max)max=arr[i];if(arr[i]<min)min=arr[i];}if(arr[i]>0)pos++;elseif(arr[i]<0)neg++;elsezero++;}avg/=10;printf("最大值:%d\n最小值:%d\n平均值:%.2f\n正数个数:%d\n负数个数:%d\n零个数:%d\n",max,min,avg,pos,neg,zero);return0;}```3.编写函数`isPrime(intn)`判断n是否为素数(n≥2),主函数输入一个数,调用该函数输出结果。```cinclude<stdio.h>include<math.h>intisPrime(intn){if(n<2)return0;for(inti=2;i<=sqrt(n);i++){if(n%i==0)return0;}return1;}intmain(){intnum;scanf("%d",&num);if(isPrime(num))printf("%d是素数\n",num);elseprintf("%d不是素数\n",num);return0;}```4.使用指针实现字符串逆序(如输入"hello",输出"olleh"),要求不使用库函数。```cinclude<stdio.h>voidreverse(charstr){charstart=str,end=str;while(end!='\0')end++;end--;//指向最后一个字符while(start<end){chartemp=start;start=end;end=temp;start++;end--;}}intmain(){charstr[100];scanf("%s",str);reverse(str);printf("%s\n",str);return0;}```5.定义学生结构体(学号、姓名、成绩),输入5名学生信息,按成绩降序排序后输出。```cinclude<stdio.h>include<string.h>

温馨提示

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

评论

0/150

提交评论