2025年重庆大学c语言期末试题及答案_第1页
2025年重庆大学c语言期末试题及答案_第2页
2025年重庆大学c语言期末试题及答案_第3页
2025年重庆大学c语言期末试题及答案_第4页
2025年重庆大学c语言期末试题及答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

2025年重庆大学c语言期末试题及答案一、单项选择题(每小题2分,共30分)1.以下关于C语言数据类型的描述,正确的是()A.char类型变量只能存储ASCII字符B.float类型变量在内存中占8字节C.枚举类型的每个枚举常量本质是整型值D.用typedef定义的新类型会创建新的数据类型2.若有定义inta[3][4]={{1,2},{3,4,5},{6}};,则a[1][2]的值是()A.0B.4C.5D.随机值3.执行以下代码段后,输出结果是()intx=5,y=3;printf("%d",(x++)(--y)+(y++));A.5B.6C.7D.84.关于指针的声明,正确的是()A.intp[5];表示指向整型数组的指针B.int(p)[5];表示指针数组,每个元素指向intC.intf();表示返回整型指针的函数D.int(f)();表示指向返回int的函数的指针数组5.以下不能作为C语言标识符的是()A._stu_nameB.2025_scoreC.func_3D.is_valid6.若有定义charstr[]="Chongqing\0University";,则strlen(str)的值是()A.8B.9C.10D.197.以下关于函数参数传递的描述,错误的是()A.数组名作为参数传递时,传递的是数组首元素地址B.结构体变量作为参数时,进行的是值传递C.指针变量作为参数时,函数内修改指针指向的值会影响实参D.函数可以返回局部变量的地址8.执行以下循环后,变量i的值是()inti;for(i=0;i<5;i++){if(i%2)continue;i+=2;}A.5B.6C.7D.89.若有定义structStudent{charname[20];intage;}stu,p=&stu;,则以下访问age成员错误的是()A.stu.ageB.p->ageC.(p).ageD.p.age10.以下关于文件操作的描述,正确的是()A.fopen("test.txt","w")会打开已存在的文件并追加内容B.fgets函数读取字符串时会自动包含换行符C.feof函数在文件指针到达文件尾时立即返回非0值D.fwrite函数的第三个参数表示要写入的每个元素的大小11.若有inta=10,p=&a;,则执行p++后,a的值是()A.10B.11C.12D.不确定12.以下能正确计算1+2+…+n的递归函数是()A.intsum(intn){if(n==1)return1;elsereturnsum(n-1)+n;}B.intsum(intn){if(n==0)return0;elsereturnsum(n)+n;}C.intsum(intn){if(n>0)returnsum(n-1);elsereturnn;}D.intsum(intn){returnn+sum(n-1);}13.执行以下代码后,输出结果是()intarr[]={1,3,5,7,9};intp=arr+2;printf("%d",(p-1)+(p+1));A.8B.10C.12D.1414.以下关于预处理指令的描述,错误的是()A.define可以定义带参数的宏B.include指令可以包含用户自定义的头文件C.if和endif必须成对出现D.预处理指令是在程序运行时执行的15.若要将十进制数123转换为八进制输出,正确的格式控制符是()A.%dB.%oC.%xD.%f二、填空题(每空2分,共20分)1.若有定义intx=012,y=0x12;,则x+y的十进制值是______。2.执行inta=5,b=3;a^=b;b^=a;a^=b;后,a和b的值分别为______、______。3.若有chars[]="Hello",t[10];strcpy(t,s);则t数组中存储的内容是______(用转义字符表示)。4.函数调用时,实参和形参的类型必须______,个数必须______。5.若有intp=malloc(10sizeof(int));,则需要包含的头文件是______,若要释放该内存应使用______函数。6.定义一个指向函数的指针变量pf,该函数接收两个int参数并返回int,声明语句是______。7.若文件以"rb+"模式打开,其含义是______。三、程序改错题(每小题5分,共10分。指出错误位置并给出正确代码)1.以下代码试图交换两个整数的值:voidswap(inta,intb){inttemp=a;a=b;b=temp;}intmain(){intx=5,y=10;swap(x,y);printf("x=%d,y=%d",x,y);//输出x=5,y=10,未交换成功}2.以下代码试图计算n!(n≥0):intfactorial(intn){if(n=0)return1;elsereturnnfactorial(n-1);}四、程序分析题(每小题8分,共24分。写出程序运行结果或关键步骤分析)1.分析以下程序的输出结果:include<stdio.h>intmain(){inti,j;for(i=1;i<=3;i++){for(j=1;j<=i;j++)printf("%d%d=%-4d",j,i,ij);printf("\n");}return0;}2.分析以下程序的输出结果:include<stdio.h>voidfunc(inta,intn){inti,j,temp;for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++)if(a[j]<a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}intmain(){intarr[]={3,1,4,2,5};func(arr,5);for(inti=0;i<5;i++)printf("%d",arr[i]);return0;}3.分析以下程序的输出结果:include<stdio.h>typedefstruct{charname[10];intscore;}Student;intmain(){Studentstu={"Zhang",85};Studentp=&stu;printf("%s%d\n",p->name,(p).score);p->score+=10;printf("%s%d\n",,stu.score);return0;}五、编程题(共36分)1.(12分)编写一个函数,统计字符串中大写字母、小写字母、数字字符的个数。函数原型为:voidcount_chars(constcharstr,intupper,intlower,intdigit)。要求:str为输入字符串,upper、lower、digit分别指向存储大写字母、小写字母、数字字符个数的变量。2.(12分)编写程序,从键盘输入n个学生的信息(包括学号、姓名、成绩),存储到结构体数组中,然后按成绩从高到低排序并输出排序后的结果。要求:n由用户输入(n≤10),学号为整型,姓名为长度不超过20的字符串,成绩为整型。3.(12分)编写程序,将文本文件"input.txt"中的所有小写字母转换为大写字母,数字字符保留,其他字符删除,结果写入"output.txt"。要求:使用文件操作函数实现。答案一、单项选择题1.C2.A3.B4.C5.B6.B7.D8.B9.D10.B11.A12.A13.B14.D15.B二、填空题1.30(012是八进制10,0x12是十六进制18,10+18=28?哦计算错误,012是八进制转十进制:18+2=10;0x12是十六进制转十进制:116+2=18,10+18=28,正确答案应为28)2.3、5(异或交换,最终a=3,b=5)3."Hello\0"(strcpy会复制终止符)4.一致(或匹配)、相同5.<stdlib.h>、free6.int(pf)(int,int);7.以读写方式打开二进制文件(若文件不存在则出错)三、程序改错题1.错误:值传递无法修改实参。应改为指针传递。正确代码:voidswap(inta,intb){inttemp=a;a=b;b=temp;}intmain(){intx=5,y=10;swap(&x,&y);//传递地址printf("x=%d,y=%d",x,y);}2.错误:条件判断使用赋值运算符"=",应改为"=="。正确代码:intfactorial(intn){if(n==0)return1;//修正为==elsereturnnfactorial(n-1);}四、程序分析题1.输出结果:11=112=222=413=323=633=9(每行输出i个乘法表达式,左操作数j从1到i,右操作数为i,结果左对齐占4位)2.输出结果:54321(func函数实现冒泡排序,比较条件a[j]<a[j+1]表示降序排序,原数组{3,1,4,2,5}排序后为5,4,3,2,1)3.输出结果:Zhang85Zhang95(结构体指针p指向stu,第一次输出name和score;p->score+=10修改了stu的score,第二次输出更新后的值)五、编程题1.参考代码:voidcount_chars(constcharstr,intupper,intlower,intdigit){upper=lower=digit=0;//初始化计数while(str){//遍历字符串直到结束符if(str>='A'&&str<='Z')(upper)++;elseif(str>='a'&&str<='z')(lower)++;elseif(str>='0'&&str<='9')(digit)++;str++;//指针后移}}2.参考代码:include<stdio.h>include<string.h>typedefstruct{intid;charname[20];intscore;}Student;voidsort_students(Studentstus,intn){Studenttemp;for(inti=0;i<n-1;i++)for(intj=0;j<n-i-1;j++)if(stus[j].score<stus[j+1].score){//降序排序temp=stus[j];stus[j]=stus[j+1];stus[j+1]=temp;}}intmain(){intn;printf("请输入学生人数(n≤10):");scanf("%d",&n);Studentstus[10];for(inti=0;i<n;i++){printf("请输入第%d个学生信息(学号姓名成绩):",i+1);scanf("%d%s%d",&stus[i].id,stus[i].name,&stus[i].score);}sort_students(stus,n);printf("排序后学生信息(成绩降序):\n");for(inti=0;i<n;i++)printf("学号:%d姓名:%s成绩:%d\n",stus[i].id,stus[i].name,stus[i].sc

温馨提示

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

评论

0/150

提交评论