版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2016天津专升本c语言试题及答案一、选择题(每题2分,共40分)1.以下哪个是合法的C语言标识符?A.2variableB.variable2C.variable-2D.variable22.在C语言中,以下哪个数据类型占用内存最多?A.charB.intC.floatD.double3.以下哪个运算符的优先级最高?A.+B.C.=D.%4.以下关于数组的描述,错误的是?A.数组元素在内存中是连续存储的B.数组下标从0开始C.数组的大小必须在声明时确定D.可以通过指针访问数组元素5.以下关于函数的描述,正确的是?A.函数可以嵌套定义B.函数可以返回多个值C.函数参数可以是数组D.函数名可以与变量名相同6.以下哪个不是C语言的关键字?A.intB.mainC.forD.if7.在C语言中,以下哪个表达式计算结果为1?A.5%2B.5/2C.5.0/2D.5%38.以下关于指针的描述,错误的是?A.指针可以指向变量B.指针可以指向函数C.指针的大小取决于操作系统D.指针可以进行算术运算,但只能加不能减9.以下关于结构体的描述,正确的是?A.结构体中的成员可以是不同的数据类型B.结构体变量可以直接进行比较C.结构体不能作为函数参数D.结构体不能嵌套定义10.以下哪个函数用于向文件写入数据?A.fscanf()B.fprintf()C.fgets()D.fread()11.以下关于循环语句的描述,正确的是?A.for循环至少执行一次B.while循环至少执行一次C.do-while循环至少执行一次D.以上都不正确12.以下哪个运算符用于计算两个变量按位与的结果?A.&&B.&C.|D.||13.以下关于字符串的描述,错误的是?A.字符串以'\0'结尾B.字符串可以存储在字符数组中C.字符串长度不包括'\0'D.字符串可以用%s格式输出14.以下哪个函数用于动态分配内存?A.malloc()B.free()C.realloc()D.以上都是15.以下关于预处理指令的描述,正确的是?A.include用于包含头文件B.define用于定义常量C.if用于条件编译D.以上都正确16.以下哪个函数用于计算字符串长度?A.strlen()B.strcpy()C.strcmp()D.strcat()17.以下关于文件操作的描述,错误的是?A.文件操作前需要打开文件B.文件操作后需要关闭文件C.文件打开方式有只读、只写、读写等D.文件指针不能进行算术运算18.以下哪个运算符用于取地址?A.B.&C.%D.19.以下关于递归函数的描述,正确的是?A.递归函数必须有终止条件B.递归函数比非递归函数效率高C.递归函数不能有返回值D.递归函数不能调用自身20.以下哪个函数用于将字符串转换成浮点数?A.atoi()B.atol()C.atof()D.sprintf()答案:1.B。C语言标识符必须以字母或下划线开头,后面可以跟字母、数字或下划线。选项A以数字开头,选项C包含减号,选项D包含空格,都是非法的标识符。2.D。在大多数系统中,char通常占用1字节,int占用4字节,float占用4字节,double占用8字节,因此double占用内存最多。3.B。在C语言中,运算符优先级从高到低依次为:括号、一元运算符(,++,--)、算术运算符(,/,%)、算术运算符(+,-)、关系运算符、逻辑运算符、赋值运算符等。因此乘法()的优先级最高。4.C。C语言中,数组的大小可以在声明时确定(静态数组),也可以在运行时确定(动态数组)。选项C的说法过于绝对,是错误的。5.C。C语言中,函数不能嵌套定义,但可以嵌套调用;函数可以通过指针或结构体等方式返回多个值;函数名不能与变量名相同;函数参数可以是数组。6.B。main是C程序的入口函数名,不是关键字。int、for、if都是C语言的关键字。7.A。5%2=1(取余运算),5/2=2(整数除法),5.0/2=2.5(浮点除法),5%3=2(取余运算),因此只有A选项结果为1。8.D。指针可以进行算术运算,既可以加也可以减,加减的单位是指针指向的数据类型的大小。9.A。结构体中的成员可以是不同的数据类型;结构体变量不能直接进行比较;结构体可以作为函数参数;结构体可以嵌套定义。10.B。fscanf()用于从文件读取格式化输入,fprintf()用于向文件写入格式化输出,fgets()用于从文件读取一行,fread()用于从文件读取块数据。因此fprintf()用于向文件写入数据。11.C。for循环和while循环都是先判断条件,条件为真时才执行循环体,因此可能一次都不执行;do-while循环是先执行循环体,再判断条件,因此至少执行一次。12.B。&&是逻辑与运算符,&是按位与运算符,|是按位或运算符,||是逻辑或运算符。因此按位与运算符是&。13.D。字符串以'\0'结尾;字符串可以存储在字符数组中;字符串长度不包括'\0';字符串应该用%s格式输出,但也可以使用其他方式输出字符数组的内容。14.D。malloc()用于分配内存,free()用于释放内存,realloc()用于重新分配内存,这些都是动态内存管理相关的函数。15.D。include用于包含头文件,define用于定义常量或宏,if用于条件编译,这些都是预处理指令,描述都正确。16.A。strlen()用于计算字符串长度,strcpy()用于复制字符串,strcmp()用于比较字符串,strcat()用于连接字符串。17.D。文件操作前需要打开文件,文件操作后需要关闭文件,文件打开方式有只读、只写、读写等,这些都是正确的;文件指针可以进行算术运算,因此D选项是错误的。18.B。是解引用运算符,&是取地址运算符,%是取余运算符,是预处理运算符。因此取地址运算符是&。19.A。递归函数必须有终止条件,否则会无限递归;递归函数通常比非递归函数效率低,因为函数调用有开销;递归函数可以有返回值;递归函数通过调用自身来实现。20.C。atoi()用于将字符串转换为整数,atol()用于将字符串转换为长整数,atof()用于将字符串转换为浮点数,sprintf()用于格式化字符串。二、填空题(每空2分,共30分)1.C语言程序的基本单位是______。2.在C语言中,用于表示逻辑真的值是______。3.表达式3+45的结果是______。4.在C语言中,用于声明整型变量的关键字是______。5.在C语言中,用于循环的关键字有______、while、do-while。6.数组名本质上是一个指向数组______的指针。7.在C语言中,用于定义函数的关键字是______。8.表达式10%3的结果是______。9.在C语言中,用于定义结构体的关键字是______。10.在C语言中,用于动态释放内存的函数是______。11.在C语言中,用于表示文件结束的宏是______。12.在C语言中,用于获取字符串长度的函数是______。13.在C语言中,用于定义符号常量的预处理指令是______。14.在C语言中,用于声明指针变量的运算符是______。15.在C语言中,用于打开文件的函数是______。答案:1.函数。C语言程序由一个或多个函数组成,其中main()是程序的入口点。2.非零值。在C语言中,逻辑真表示为非零值,逻辑假表示为0。3.23。根据运算符优先级,先计算45=20,然后计算3+20=23。4.是C语言中声明整型变量的关键字。5.for。C语言中用于循环的关键字有for、while、do-while。6.首元素。数组名本质上是一个指向数组首元素的指针。7.void。void是C语言中用于定义无返回值函数的关键字。8.1。10%3=1,表示10除以3的余数是1。9.struct。struct是C语言中用于定义结构体的关键字。10.free()。free()是C语言中用于动态释放内存的函数。11.EOF。EOF(EndofFile)是C语言中用于表示文件结束的宏。12.strlen()。strlen()是C语言中用于获取字符串长度的函数。13.define。define是C语言中用于定义符号常量的预处理指令。14.。是C语言中用于声明指针变量的运算符。15.fopen()。fopen()是C语言中用于打开文件的函数。三、判断题(每题1分,共10分)1.C语言是强类型语言,变量在使用前必须声明。()2.在C语言中,数组的下标可以从1开始。()3.函数可以没有返回值,此时返回类型应声明为void。()4.指针可以进行加减运算,加减的单位是指针指向的数据类型的大小。()5.结构体变量可以直接进行赋值操作。()6.在C语言中,break语句可以跳出多层循环。()7.C语言中的字符串必须使用双引号括起来。()8.函数参数传递时,数组参数是值传递。()9.在C语言中,文件指针的类型是FILE。()10.递归函数一定会比非递归函数占用更多的内存空间。()答案:1.正确。C语言是强类型语言,变量在使用前必须先声明其类型。2.错误。在C语言中,数组的下标从0开始,而不是从1开始。3.正确。函数可以没有返回值,此时返回类型应声明为void。4.正确。指针可以进行加减运算,加减的单位是指针指向的数据类型的大小。5.错误。结构体变量不能直接进行赋值操作,需要逐个成员赋值或使用memcpy等函数。6.错误。break语句只能跳出当前层次的循环,不能跳出多层循环。7.正确。C语言中的字符串必须使用双引号括起来,而字符使用单引号括起来。8.错误。函数参数传递时,数组参数是地址传递,而不是值传递。9.正确。在C语言中,文件指针的类型是FILE,定义在stdio.h头文件中。10.错误。递归函数不一定比非递归函数占用更多的内存空间,这取决于具体的实现和递归深度。四、程序阅读题(每题5分,共20分)1.以下程序的输出结果是什么?```cinclude<stdio.h>intmain(){inta=5,b=10,c;c=a+++++b;printf("a=%d,b=%d,c=%d\n",a,b,c);return0;}```2.以下程序的输出结果是什么?```cinclude<stdio.h>voidfun(intx,inty){x=x+10;y=y+20;printf("x=%d,y=%d\n",x,y);}intmain(){inta=5,b=10;fun(a,b);printf("a=%d,b=%d\n",a,b);return0;}```3.以下程序的输出结果是什么?```cinclude<stdio.h>intmain(){inti,j,sum=0;for(i=1;i<=3;i++){for(j=1;j<=i;j++){sum+=j;}}printf("sum=%d\n",sum);return0;}```4.以下程序的输出结果是什么?```cinclude<stdio.h>intmain(){intarr[]={1,2,3,4,5};intp=arr;(p+2)=10;printf("%d,%d,%d\n",arr[0],arr[2],arr[4]);return0;}```答案:1.答案:a=6,b=11,c=16解析:在这个程序中,a++是后缀自增,先使用a的值5,然后a自增为6;++b是前缀自增,先b自增为11,然后使用b的值11。所以c=5+11=16。2.答案:x=15,y=30a=5,b=10解析:在这个程序中,函数fun()的参数是值传递,所以在函数内部修改x和y的值不会影响main()函数中的a和b的值。函数fun()中x=5+10=15,y=10+20=30。3.答案:sum=10解析:在这个程序中,外层循环i从1到3,内层循环j从1到i。当i=1时,j=1,sum=1;当i=2时,j=1,2,sum=1+1+2=4;当i=3时,j=1,2,3,sum=4+1+2+3=10。最终sum的值为10。4.答案:1,10,5解析:在这个程序中,指针p指向数组arr的首元素,即arr[0]。(p+2)等价于arr[2],所以将arr[2]的值修改为10。因此arr[0]=1,arr[2]=10,arr[4]=5。五、程序填空题(每空2分,共20分)1.以下程序用于计算1到100的和,请填空完成程序。```cinclude<stdio.h>intmain(){inti,sum=0;for(i=1;______;i++){sum+=______;}printf("sum=%d\n",sum);return0;}```2.以下程序用于判断一个数是否为素数,请填空完成程序。```cinclude<stdio.h>include<math.h>intmain(){intnum,i,flag=1;printf("请输入一个整数:");scanf("%d",&num);for(i=2;i<=sqrt(num);i++){if(______){flag=0;break;}}if(______){printf("%d是素数\n",num);}else{printf("%d不是素数\n",num);}return0;}```3.以下程序用于实现字符串反转,请填空完成程序。```cinclude<stdio.h>include<string.h>intmain(){charstr[100],temp;inti,j;printf("请输入一个字符串:");gets(str);j=strlen(str)-1;for(i=0;i<j;i++,j--){temp=str[i];str[i]=______;str[j]=______;}printf("反转后的字符串:%s\n",str);return0;}```4.以下程序用于实现冒泡排序,请填空完成程序。```cinclude<stdio.h>voidbubbleSort(intarr[],intn){inti,j,temp;for(i=0;i<n-1;i++){for(j=0;j<______;j++){if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=______;arr[j+1]=temp;}}}}intmain(){intarr[]={64,34,25,12,22,11,90};intn=sizeof(arr)/sizeof(arr[0]);inti;bubbleSort(arr,n);printf("排序后的数组:");for(i=0;i<n;i++){printf("%d",arr[i]);}printf("\n");return0;}```答案:1.答案:i<=100i解析:第一个空是for循环的条件,应该是i从1到100;第二个空是将i的值加到sum中,即sum+=i。2.答案:num%i==0flag==1解析:第一个空是判断num是否能被i整除,如果整除则num不是素数;第二个空是判断flag是否为1,如果为1则num是素数,否则不是素数。3.答案:str[j]temp解析:第一个空是将str[i]的值赋给str[j],第二个空是将temp的值赋给str[j],实现字符串反转。4.答案:n-1-iarr[j+1]解析:第一个空是内层循环的条件,应该是j从0到n-1-i;第二个空是将arr[j+1]的值赋给arr[j],实现冒泡排序。六、编程题(共20分)1.编写一个函数,实现字符串连接功能。要求不能使用strcat()函数,函数原型为:charmyStrcat(chardest,constcharsrc)。2.编写一个程序,实现学生成绩管理系统。要求:-定义一个结构体Student,包含学号、姓名、三门课程成绩-实现添加学生信息的功能-实现按学号查找学生信息的功能-实现显示所有学生信息的功能-实现按平均分排序的功能答案:1.参考代码:```cinclude<stdio.h>include<string.h>charmyStrcat(chardest,constcharsrc){inti=0,j=0;//找到目标字符串的末尾while(dest[i]!='\0'){i++;}//将源字符串的内容复制到目标字符串的末尾while(src[j]!='\0'){dest[i+j]=src[j];j++;}dest[i+j]='\0';//添加字符串结束符returndest;}intmain(){charstr1[100]="Hello,";charstr2[]="world!";myStrcat(str1,str2);printf("连接后的字符串:%s\n",str1);return0;}```解析:这个函数实现了字符串连接功能。首先找到目标字符串dest的末尾,然后将源字符串src的内容复制到dest的末尾,最后添加字符串结束符'\0'。函数返回连接后的字符串。2.参考代码:```cinclude<stdio.h>include<stdlib.h>include<string.h>//定义学生结构体structStudent{charid[20];//学号charname[50];//姓名floatscore[3];//三门课程成绩floataverage;//平均分};//学生数组structStudentstudents[100];intstudentCount=0;//添加学生信息voidaddStudent(){if(studentCount>=100){printf("学生数量已达上限,无法添加!\n");return;}structStudents;printf("请输入学号:");scanf("%s",s.id);printf("请输入姓名:");scanf("%s",);floatsum=0;for(inti=0;i<3;i++){printf("请输入第%d门课程成绩:",i+1);scanf("%f",&s.score[i]);sum+=s.score[i];}s.average=sum/3;students[studentCount++]=s;printf("学生信息添加成功!\n");}//按学号查找学生信息voidfindStudentById(){charid[20];printf("请输入要查找的学号:");scanf("%s",id);intfound=0;for(inti=0;i<studentCount;i++){if(strcmp(students[i].id,id)==0){printf("学号:%s\n",students[i].id);printf("姓名:%s\n",students[i].name);printf("成绩1:%.2f\n",students[i].score[0]);printf("成绩2:%.2f\n",students[i].score[1]);printf("成绩3:%.2f\n",students[i].score[2]);printf("平均分:%.2f\n",students[i].average);found=1;break;}}if(!found){printf("未找到学号为%s的学生!\n",id);}}//显示所有学生信息voiddisplayAllStudents(){if(studentCount==0){printf("没有学生信息!\n");return;}printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");for(inti=0;i<studentCount;i++){printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",students[i].id,students[i].name,students[i].score[0],students[i].score[1],students[i].score[2],students[i].average);}}//按平均分排序voidsortByAverage(){for(inti=0;i<studentCount-1;i++){for(intj=0;j<studentCount-1-i;j++){if(students[j].average<students[j+1].average){structStudenttemp=students[j];students[j]=students[j+1];
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度上海机场(集团)有限公司校园招聘笔试历年参考题库附带答案详解
- 2025年广东电网巡回批校园招聘笔试历年参考题库附带答案详解
- 2026年广西初中学业水平考试化学试卷真题含答案详解
- 国家开放大学01792艺术学概论形考
- 电池级磷酸铁一体化项目规划选址论证报告
- 高阻隔树脂项目环境影响报告书
- 车间物料分区安全存放培训课件
- 厂区车辆冲撞应急预案
- 高速公路绿化带边坡施工方案
- 班组标准化建设规划方案
- 2026年高考新高考二卷化学考试题目及答案
- 呼吸疾病医疗纠纷防范处理
- 2026年版卵巢癌诊疗指南
- 汽车平台架构培训课件
- 2026年中电科太力通信科技有限公司招聘备考题库带答案详解
- 2026年高考全国一卷语文作文真题解析含答案
- 股薄肌移植术后护理查房
- 2025年广东省第一次普通高中学业水平合格性考试(春季高考)思想政治试题(含答案详解)
- 消防安全应急监督员考试题库及答案解析
- 2025检察官遴选考试真题及答案
- 2025河北雄安安新县公共服务局高校毕业生临时公益性岗位招聘25人考试参考试题及答案解析
评论
0/150
提交评论