计算机二级试题及答案_第1页
计算机二级试题及答案_第2页
计算机二级试题及答案_第3页
计算机二级试题及答案_第4页
计算机二级试题及答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

计算机二级试题及答案选择题(每题2分,共20分)1.以下关于C语言的说法,正确的是()A.C语言是一种面向对象的程序设计语言B.C语言程序总是从main()函数开始执行C.C语言中的注释可以嵌套使用D.C语言中的变量在使用前必须进行初始化2.若有定义:inta=3,b=4;则表达式a++--b的值是()A.12B.11C.10D.93.下列字符常量中,正确的是()A.'abc'B.'\x41'C.'\089'D."a"4.下列关于数组的描述中,错误的是()A.数组元素的下标从0开始B.数组的大小在定义时必须确定C.数组名是一个地址常量D.可以通过指针访问数组元素5.执行以下代码后,变量x的值是()```cintx=5;if(x++>5)x=10;elsex=20;```A.5B.6C.10D.206.以下关于函数的描述,正确的是()A.函数可以嵌套定义B.函数的返回值类型必须与函数声明中的类型一致C.函数参数可以传递数组D.函数递归调用可能导致栈溢出,因此在C语言中不允许使用7.以下代码的输出结果是()```cinclude<stdio.h>intmain(){inta[]={1,2,3,4,5};intp=a+2;printf("%d,%d",p,(p+1));return0;}```A.1,2B.2,3C.3,4D.4,58.以下关于指针的描述,错误的是()A.指针可以指向任何数据类型B.指针可以进行加减运算C.指针可以进行比较运算D.指针的大小与它指向的数据类型有关9.以下关于结构体的描述,正确的是()A.结构体变量可以直接赋值给另一个相同类型的结构体变量B.结构体成员的访问权限默认是私有的C.结构体中可以包含函数D.结构体的大小等于其所有成员大小的和10.以下代码的输出结果是()```cinclude<stdio.h>intmain(){inti=0;while(i<5){if(i==3)break;printf("%d",i);i++;}return0;}```A.0123B.012C.01234D.0124填空题(每空2分,共20分)1.在C语言中,用于表示"真"的整数值是______,表示"假"的整数值是______。2.表达式sizeof(int)的返回值类型是______。3.在C语言中,用于动态分配内存的函数是______,用于释放动态分配内存的函数是______。4.若有定义:charstr[]="Hello";则strlen(str)的值是______。5.在C语言中,用于打开文件的函数是______,用于关闭文件的函数是______。6.以下程序的输出结果是______。```cinclude<stdio.h>intmain(){inta=5,b=10;intp=&a;intq=&b;p=q;printf("%d,%d",p,q);return0;}```7.以下程序的输出结果是______。```cinclude<stdio.h>intmain(){inti,j;for(i=0;i<3;i++){for(j=0;j<3;j++){if(i==j)continue;printf("%d",ij);}}return0;}```8.在C语言中,用于从标准输入读取一个字符的函数是______,用于向标准输出输出一个字符的函数是______。9.若有定义:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};则a[1][2]的值是______。10.在C语言中,用于将字符串转换为整数的函数是______,用于将整数转换为字符串的函数是______。程序改错题(共20分)以下程序的功能是计算1到100之间所有偶数的和。请找出程序中的错误并改正。```cinclude<stdio.h>intmain(){inti,sum=0;for(i=1;i<=100;i++){if(i%2=0){sum=sum+i;}}printf("1到100之间所有偶数的和是:%d\n",sum);return0;}```请指出程序中的4处错误并写出正确的代码。编程题(共20分)编写一个C语言程序,实现以下功能:1.从键盘输入10个整数,存入数组中;2.计算并输出这10个整数的平均值;3.找出并输出这10个整数中的最大值和最小值。要求:程序结构清晰,注释完整,输出结果格式规范。综合应用题(共20分)设计一个学生成绩管理系统,实现以下功能:1.定义一个结构体Student,包含学号(字符串)、姓名(字符串)、三门课程成绩(浮点数)和平均成绩(浮点数);2.实现以下函数:-inputStudent():输入学生信息-calculateAverage():计算学生平均成绩-displayStudent():显示学生信息-sortStudents():按照平均成绩对学生进行降序排序3.在main()函数中,创建一个包含5个学生信息的数组,调用上述函数完成输入、计算、显示和排序操作。要求:程序结构清晰,功能完整,注释完整。标准答案及解析选择题(每题2分,共20分)1.答案:B解析:A选项错误,C语言是面向过程的程序设计语言;B选项正确,C语言程序总是从main()函数开始执行;C选项错误,C语言中的注释不能嵌套使用;D选项错误,C语言中的变量在使用前不一定需要初始化,但使用未初始化的变量会导致未定义行为。2.答案:D解析:表达式a++--b中,a++是后自增,先使用a的值3参与运算,然后a自增为4;--b是前自减,先使b自减为3,然后使用b的值3参与运算。因此,表达式计算为33=9,然后a的值为4,b的值为3。整个表达式的值是9,所以答案为D。3.答案:B解析:A选项错误,字符常量只能包含一个字符;B选项正确,'\x41'是十六进制表示的字符常量;C选项错误,'\089'不是合法的转义字符,因为八进制转义字符的取值范围是0-7;D选项错误,"a"是字符串常量,不是字符常量。4.答案:B解析:A选项正确,数组元素的下标从0开始;B选项错误,C99标准允许变长数组,数组的大小可以在运行时确定;C选项正确,数组名是一个地址常量;D选项正确,可以通过指针访问数组元素。5.答案:B解析:在if条件中,x++>5中,x的值先被使用(值为5),然后自增为6。条件5>5为假,所以执行else分支,x被赋值为20。但是,x已经在条件判断中自增为6,所以最终x的值是6。6.答案:C解析:A选项错误,C语言不允许函数嵌套定义;B选项错误,函数的返回值类型如果不一致,编译器会进行隐式类型转换;C选项正确,函数参数可以传递数组;D选项错误,C语言允许函数递归调用,但需要注意递归深度,避免栈溢出。7.答案:C解析:数组a的元素为{1,2,3,4,5},指针p指向a[2],即值为3。(p+1)是p指向的下一个元素,即a[3],值为4。因此输出为"3,4"。8.答案:D解析:A选项正确,指针可以指向任何数据类型;B选项正确,指针可以进行加减运算,加减的是以数据类型大小为单位的偏移量;C选项正确,指针可以进行比较运算;D选项错误,指针的大小(即占用的字节数)与它指向的数据类型无关,而是与系统架构有关(在32位系统中通常是4字节,在64位系统中通常是8字节)。9.答案:A解析:A选项正确,结构体变量可以直接赋值给另一个相同类型的结构体变量;B选项错误,C语言中没有访问权限的概念;C选项错误,结构体中不能包含函数;D选项错误,结构体的大小可能大于其所有成员大小的和,因为可能存在内存对齐。10.答案:B解析:循环从i=0开始,当i=3时执行break语句,跳出循环。因此,程序输出0、1、2,正确答案是B。填空题(每空2分,共20分)1.1;0解析:在C语言中,真值用1表示,假值用0表示。实际上,C语言中任何非零值都被视为真,只有0被视为假。2.unsignedint或size_t解析:sizeof运算符返回的是size_t类型,这是一个无符号整数类型,通常定义为unsignedint或unsignedlong。3.malloc;free解析:在C语言中,malloc函数用于动态分配内存,free函数用于释放动态分配的内存。4.5解析:字符串"Hello"包含5个字符,不包括字符串结束符'\0',所以strlen(str)的值是5。5.fopen;fclose解析:在C语言中,fopen函数用于打开文件,fclose函数用于关闭文件。6.10,10解析:程序中,p最初指向a,然后p被赋值为q,即p也指向b。因此,p和q都输出b的值10。7.002024解析:外层循环i从0到2,内层循环j从0到2。当i等于j时,执行continue跳过本次循环。因此,输出结果为:i=0,j=1:01=0;i=0,j=2:02=0;i=1,j=0:10=0;i=1,j=2:12=2;i=2,j=0:20=0;i=2,j=1:21=2。最终输出为"000202"。8.getchar;putchar解析:在C语言中,getchar函数用于从标准输入读取一个字符,putchar函数用于向标准输出输出一个字符。9.7解析:在二维数组a[3][4]中,a[1][2]表示第二行第三列的元素,值为7。10.atoi;itoa解析:在C语言中,atoi函数用于将字符串转换为整数,itoa函数用于将整数转换为字符串(注意:itoa不是标准C函数,而是某些编译器扩展的函数,标准C中可以使用sprintf实现类似功能)。程序改错题(共20分)错误及改正:1.错误:if(i%2=0)中的赋值运算符"="应改为比较运算符"=="。改正:if(i%2==0)2.错误:缺少头文件stdio.h。改正:在程序开头添加include<stdio.h>3.错误:变量sum未初始化。改正:intsum=0;4.错误:格式字符串中使用了中文引号,应改为英文引号。改正:printf("1到100之间所有偶数的和是:%d\n",sum);正确代码:```cinclude<stdio.h>intmain(){inti,sum=0;for(i=1;i<=100;i++){if(i%2==0){sum=sum+i;}}printf("1到100之间所有偶数的和是:%d\n",sum);return0;}```解析:这个程序的主要错误是使用了赋值运算符"="而不是比较运算符"==",导致条件判断错误。另外,程序缺少头文件包含,变量sum未初始化,以及使用了中文引号。这些错误都会导致程序无法正确编译或运行。在实际编程中,这类错误很常见,尤其是对于初学者而言,混淆赋值和比较运算符是一个典型的错误。因此,在编写条件语句时,一定要特别注意运算符的选择。编程题(共20分)参考代码:```cinclude<stdio.h>defineNUM10//定义常量表示学生数量intmain(){intnumbers[NUM];//存储输入的整数inti;intsum=0;intmax,min;floataverage;//输入10个整数printf("请输入%d个整数:\n",NUM);for(i=0;i<NUM;i++){scanf("%d",&numbers[i]);sum+=numbers[i];}//计算平均值average=(float)sum/NUM;printf("这%d个整数的平均值是:%.2f\n",NUM,average);//找出最大值和最小值max=min=numbers[0];for(i=1;i<NUM;i++){if(numbers[i]>max){max=numbers[i];}if(numbers[i]<min){min=numbers[i];}}//输出最大值和最小值printf("最大值是:%d\n",max);printf("最小值是:%d\n",min);return0;}```解析:这个程序首先定义了一个常量NUM表示学生数量(10个),然后创建了一个数组numbers来存储输入的整数。程序使用循环输入10个整数,并计算它们的和。然后,通过计算平均值并输出。接着,程序找出数组中的最大值和最小值,并输出结果。注意,在计算平均值时,需要将sum强制转换为float类型,以保证除法运算得到浮点数结果。在实际应用中,我们还需要考虑输入验证,确保用户输入的是有效的整数,而不是其他类型的数据。此外,对于最大值和最小值的查找,我们采用了初始化为第一个元素,然后遍历数组进行比较的方法,这是一种常见且高效的算法。综合应用题(共20分)参考代码:```cinclude<stdio.h>include<string.h>defineNUM5//学生数量//定义学生结构体typedefstruct{charid[20];//学号charname[50];//姓名floatscore[3];//三门课程成绩floataverage;//平均成绩}Student;//输入学生信息voidinputStudent(Students){printf("请输入学号:");scanf("%s",s->id);printf("请输入姓名:");scanf("%s",s->name);printf("请输入三门课程成绩:");scanf("%f%f%f",&s->score[0],&s->score[1],&s->score[2]);}//计算学生平均成绩voidcalculateAverage(Students){s->average=(s->score[0]+s->score[1]+s->score[2])/3.0;}//显示学生信息voiddisplayStudent(Students){printf("学号:%s\n",s.id);printf("姓名:%s\n",);printf("成绩1:%.2f\n",s.score[0]);printf("成绩2:%.2f\n",s.score[1]);printf("成绩3:%.2f\n",s.score[2]);printf("平均成绩:%.2f\n",s.average);printf("------------------------\n");}//按照平均成绩对学生进行降序排序voidsortStudents(Studentstudents[],intn){inti,j;Studenttemp;for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++){if(students[j].average<students[j+1].average){//交换两个学生的信息temp=students[j];students[j]=students[j+1];students[j+1]=temp;}}}}intmain(){Studentstudents[NUM];//学生数组inti;//输入学生信息printf("请输入%d个学生的信息:\n",N

温馨提示

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

评论

0/150

提交评论