还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
大一上c语言期末试题和答案
一、选择题(共15题,每题2分,共30分)
1.以下关于C语言数据类型的描述中,错误的是()A.int类型的取值范围通常是-2147483648~2147483647B.float类型是单精度浮点型,精度比double类型高C.char类型用于存储单个字符,占用1字节内存D.数组属于构造数据类型,可存储多个相同类型的元素
2.若有定义“int a=3,b=2;”,则表达式“a/b+3*a%b”的值为()A.3B.4C.5D.
63.以下选项中,不能作为C语言变量名的是()A.student_1B.123abc C._age D.sum
4.关于for循环的描述,正确的是()A.for循环的三个表达式必须全部出现,不能省略B.for循环中,若条件表达式省略,则默认条件为真C.for循环只能用于循环次数已知的情况D.执行for循环时,先执行循环体,再判断条件
5.以下代码段的输出结果是()int x=1,y=2;ifxy printfA;else ifx==y printfB;else printfC;A.A B.B C.C D.无输出
6.以下函数定义中,正确的是()第1页共14页A.void func{return5;}B.int funcint a,b{return a+b;}C.float funcfloatx,float y{return x+y;}D.double func{int a=3;return a;}
7.数组定义“int arr
[5];”中,数组元素的个数是()A.4B.5C.6D.不确定
8.若有定义“int arr
[3]={1,2};”则arr
[2]的值为()A.1B.2C.0D.随机值
9.以下关于指针的描述,错误的是()A.指针变量用于存储内存地址B.int*p;表示p是指向int类型的指针变量C.指针变量的大小在32位系统中通常为4字节D.通过指针访问变量时,使用“*p”表示取指针指向的地址对应的值
10.以下代码段的输出结果是()int a=10;int*p=a;*p=20;printf%d,a;A.10B.20C.不确定D.编译错误
11.以下关于字符串的描述,正确的是()A.字符串“abc”在内存中占用3个字节B.字符串可以用单引号括起来,如‘abc’C.使用printf输出字符串时,格式控制符为“%s”D.字符串结束符‘\0’不占内存空间
12.若有定义“char str[]=hello;”,则strlenstr的值为()第2页共14页A.4B.5C.6D.
713.以下代码段的输出结果是()int i,sum=0;fori=1;i=5;i++sum+=i;printf%d,sum;A.10B.15C.20D.
2514.关于函数参数传递说法,正确的是()A.C语言中函数参数传递只能是值传递B.当实参不是指针时,形参的修改会影响实参C.数组作为函数参数时,是将整个数组复制传递D.指针作为函数参数时,实参的地址会传递给形参
15.以下代码段的输出结果是()int a=5,b=3;void swapintx,int y{int temp=x;x=y;y=temp;}swapa,b;printf%d,%d,a,b;A.5,3B.3,5C.5,5D.3,3
二、填空题(共10题,每空1分,共15分)
1.C语言程序的入口函数是________,其返回值类型为________第3页共14页
2.变量定义“int a=10,b=20;”中,a和b的初始值分别为________和________
3.表达式“3+5*2-8/4”的计算结果是________(假设所有变量为int类型)
4.for循环的一般形式为for表达式1;表达式2;表达式3,其中表达式1用于________,表达式2用于________,表达式3用于________
5.数组“int arr
[4]={1,2,3};”中,arr
[3]的值为________,arr数组的长度为________
6.字符串“test”在内存中存储时,除了字符t,e,s,t外,还会额外存储一个________字符,其ASCII码值为________
7.指针变量p初始指向变量a,则“*p=20;”的作用相当于将________的值修改为________
8.函数定义中,若不需要返回值,返回值类型应声明为________;若函数未声明返回值类型,默认返回值类型为________
9.以下代码用于计算1到n的和,请补全空白处int sum=0,n=10;forint i=1;i=n;i++sum+=________;printfsum=%d,sum;
10.结构体类型的定义格式为________,其成员访问使用的运算符是________
三、判断题(共10题,每题1分,共10分,请在括号内打“√”或“×”)
1.C语言中,变量必须先定义后使用,但定义时可以不初始化()第4页共14页
2.运算符“”的优先级高于“”()
3.数组名作为函数参数时,会将数组的所有元素复制一份传递给形参()
4.指针变量本身可以被修改,即可以指向不同的内存地址()
5.“int*p;p=a;”中,a表示变量a的地址()
6.字符串“abc”的长度是3,而sizeofabc的结果也是3()
7.for循环中的三个表达式都可以省略,此时循环会无限执行()
8.函数调用时,实参和形参的类型必须完全一致,否则编译错误()
9.局部变量在函数调用结束后会被释放,其值不再保留()
10.结构体变量在定义时必须初始化所有成员()
四、程序阅读题(共5题,每题4分,共20分,写出程序的输出结果)
1.以下代码段的输出结果是#include stdio.hint main{int a=5,b=7;ifabprintfab\n;else ifa==bprintfa==b\n;elseprintfab\n;第5页共14页return0;}
2..以下代码段的输出结果是#include stdio.hint main{int i,sum=0;fori=1;i=5;i++{ifi%2==0sum+=i;}printfsum=%d,sum;return0;}
3.以下代码段的输出结果是#include stdio.hvoid funcintx{x=x*2;}int main{int a=3;funca;printfa=%d,a;return0;}第6页共14页
4.以下代码段的输出结果(第一行)是________,(第二行)是________#include stdio.hint main{int arr[]={1,3,5,7};int*p=arr;printf%d\n,p
[2];printf%d,*p+1;return0;}
5.以下代码段的输出结果是#include stdio.hint main{char str[]=C Language;int i;fori=0;str[i]!=\0;i++{ifstr[i]==break;}printfi=%d,str[i]=%c,i,str[i];return0;}
五、程序改错题(共5题,每题3分,共15分,找出错误并改正)
1.//错误代码计算1到10的和,结果存到sum中#include stdio.h第7页共14页int main{int sum;fori=1;i=10;i++sum+=i;printfsum=%d,sum;return0;}错误位置及改正结果
2.//错误代码判断一个数是否为偶数,是则输出yes#include stdio.hint main{int num;scanf%d,num;ifnum%2==0printfyes;return0;}错误位置及改正结果
3.//错误代码交换两个变量的值,使用指针#include stdio.hvoid swapintx,int y{int temp=x;x=y;y=temp;}第8页共14页int main{inta=10,b=20;swapa,b;printfa=%d,b=%d,a,b;return0;}错误位置及改正结果
4.//错误代码定义并初始化一个数组,输出所有元素#include stdio.hint main{int arr
[3]={1,2,3,4};forint i=0;i=3;i++printf%d,arr[i];return0;}错误位置及改正结果
5.//错误代码计算n的阶乘#include stdio.hint main{int n=5,fact=1;forint i=1;i=n;i++fact=fact*i;return fact;}错误位置及改正结果第9页共14页
六、程序填空题(共5题,每空2分,共20分,补全程序)1以下程序用于计算1到n的阶乘之和(1!+2!+...+n!),补全空白处#include stdio.hint main{int n,i,j,fact,sum=0;printf输入n:;scanf%d,n;fori=1;i=n;i++{fact=1;forj=1;j=i;j++fact*=________;sum+=________;}printfsum=%d,sum;return0;}2以下程序用于判断一个字符是否为大写字母,补全空白处#include stdio.hint main{char c;printf输入一个字符:;scanf%c,c;ifc=Ac=________printf是大写字母;第10页共14页elseprintf不是大写字母;return0;}3以下程序用于输出数组中最大的元素,补全空白处#include stdio.hint main{int arr[]={5,9,2,10,3};int max,i;max=arr
[0];fori=1;i5;i++{ifarr[i]maxmax=________;}printfmax=%d,max;return0;}4以下程序用于复制字符串(不使用strcpy函数),补全空白处#include stdio.hvoid str_copychar*dest,char*src{int i=0;whilesrc[i]!=\0{dest[i]=src[i];i++;}第11页共14页dest[i]=________;}int main{char src[]=hello,dest
[20];str_copydest,src;printfdest=%s,dest;return0;}5以下程序用于定义学生结构体,包含学号和成绩,输入3个学生信息并输出平均分,补全空白处#include stdio.hstruct Student{int id;float score;};int main{struct Studentstudents
[3];int i;float total=0;fori=0;i3;i++{printf输入第%d个学生学号:,i+1;scanf%d,students[i].________;printf输入第%d个学生成绩:,i+1;scanf%f,students[i].________;total+=students[i].________;第12页共14页}printf平均分=%.2f,total/3;return0;}
七、编程题(共2题,每题10分,共20分)
1.编写一个程序,输入一个正整数n,计算并输出1+1/2+1/3+...+1/n的和(结果保留2位小数)
2.编写一个程序,定义一个函数is_primeint x,判断x是否为素数(素数是指除了1和自身外,不能被其他数整除的大于1的整数),主函数中输入一个数,调用该函数并输出结果(1表示是素数,0表示不是)答案汇总
一、选择题1-5B C B BC6-10C BC BB11-15CBB AA
二、填空题
1.main,int
2.10,-
203.
124.初始化循环变量,判断循环条件,修改循环变量
5.0,
46.\0,
07.变量a,
208.void,int第13页共14页
9.i
10.struct结构体名{成员列表};,.
三、判断题
1.√
2.√
3.×
4.√
5.√
6.×
7.√
8.×
9.√第14页共14页。
个人认证
优秀文档
获得点赞 0