C语言试卷 答案

发布 2021-04-23 12:00:28 阅读 5494

单选题答案。

第1题答案: c评析:

本题的考查点是格式输入函数scanf()的使用。

scanf函数输入形式为:scanf(格式控制,地址表列);

选项b中,p=(long*)malloc(8)是分配8个字节的long型存储单元,所以能通过scanf语句正确给输入项读入数据;

选项c中,p=&a,求出变量a的内存地址并赋给p;

选项d中,能正确给输入项读入数据;

故本题答案为a。

第2题答案: a评析:

本题主要考查的是c语言中的变量作用域。

全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。所以本题主函数的局部变量a,b把同名的全程变量屏蔽了。

本题答案为b。

第3题答案: c评析:

本题是通过循环语句给数组元素赋值。

c语言中for循环语句的一般形式为:

for(表达式1;表达式2;表达式3)

本题答案为c。

第4题答案: a评析:

本题主要考查考生对c语言中的循环语句和程序的执行逻辑。本题中for循环语句共执行3次,所以a的值累加3次,结果为4。

本题答案为d。

第5题答案: c评析:

本题的考查点是c语言赋值语句。

赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:变量=表达式;由于在赋值符"="右边的表达式也可以又是一个赋值表达式,因此,形式"变量=(变量=表达式);"是成立的,从而形成嵌套的情形,故选项a是正确的;选项d看上去是嵌套形式,而实际上,并非是一个正确的赋值表达式,因为赋值表达式"="的左边只能是变量,不能为常量或表达式,所以"4+1"的值不能赋值给常量"5",所以选项d错误,选项c也是错误的;由于求余运算符"%"的两侧必须为整型数据,所以选项b错误。

故本题答案为a。

第6题答案: c评析:

本题的考查点是函数pow(x,y)。

函数pow(x,y)的功能是计算x的y次方的值,在c语言中没有选项a和选项b的表示方式,选项d中pow(n,x)是求n的x次方值,不合题意。

故本题答案为c。

第7题答案: d评析:

本题的考查点是别名。

p是基类型为int的指针变量;

*q是基类型为int的指针变量;

程序中可用*integer代替int类型名。

故本题答案为b。

第8题答案: b评析:

本题的考查点是数据类型、运算符与表达式。

c语言允许在定义变量的同时使变量初始化,当定义多个变量为同一类型时,各变量之间用逗号隔开,所以选项d错误;当定义多个变量赋同一个值时,不能用等式连写的方式,如选项a的"int a=b=0;"应写成"int a=0, b=0;" 所以选项a错误;选项c中定义了一个浮点型变量a和两个指向浮点型数据的指针变量b和c,而&a表示的是取变量a的地址,所以将变量a的地址赋给指向浮点型数据的指针变量b是错误的。选项b中将整数赋给字符变量,相当于将字符'b'赋给字符变量a,因为字符'b'的ascii码是66。所以选项b正确。

故本题答案为b。

第9题答案: c评析:

本题的考查点是结构体数组。

本题定义了一个包含两个元素(data[0]、data[1])的结构体数组data,其中data[0].x=1; data[0].y=10; data[1].

x=2; data[1].y=20。在主函数中,定义了一个指向结构体数组的结构体指针变量p,使得p指向结构体数组的首地址,所以p->y访问的是第一个结构体数组元素的第二个值,即data[0].

y;(+p)->x访问的是第二个结构体数组元素的第一个值,即data[1].x,所以程序输出结果为10,2。

故本题答案为c。

第10题答案: c评析:

本题的考查点是共用体。

根据共用体的定义可知:共用体z的成员c和成员i[4]是共用着同一段内存空间,所以,当程序给赋值后,实际上共用体成员c的值也确定了,为0x39,所以在以字符方式打印时,打印结果应是ascii码等于0x39的字符,即是"9"。

故本题答案为b。

第11题答案: a评析:

本题的考查点是do-while语句。

选项a是错误的,c语言支持do-while语句;选项b是错误的,do-while构成的循环, 当while语句中的表达式值为零时结束循环,而不是非零;选项c也是错误的。

故本题答案为d。

第12题答案: a评析:

本题的考查点是不同类型数据的输入输出。

使用scanf()函数可以输入任何类型的多个数据,一般形式为:scanf(格式控制,地址表列)。c语言规定,数组名代表数组的首地址,也就是第一个元素的地址,由于该题要求对数组中所有元素赋值,所以应该包含一个循环变量自加的过程,选项a、b明显不正确;对于选项d,++i是先自加后使用i,因此x[0]没有赋值,选项d也不符合题目要求。

故本题答案为c。

第13题答案: a评析:

sort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序。排序后的结果应该为9,2,7,4,5,6,3,8,1,10。

故本题答案为c。

第14题答案: d评析:

本题考查的是函数的递归调用。

函数fun是一个递归调用函数,首先主函数将实参7传递给函数fun中的形参x,由于7≠0,7≠1,不满足if条件,所以执行下面的p=x-fun(x-2);语句,此语句继续调用它本身,直到当x=1时,返回函数值3代入到调用它的表达式中,依此类推……,最终p的值为2。

故本题答案为c。

第15题答案: a评析:

本题的考查点是通过指针引用数组元素。

观察程序可知,a实际上就是数组a的首地址,所以"*(a+i)"表示的就是数组a中的第i个元素的值,进而我们可以知道 *(a+i))必然不是对a数组元素的正确引用。

故本题答案为d。

第16题答案: c评析:

本题的考查点是通过指针引用数组元素。

指针p指向数组中第8个元素,即a[8]='9'。输出时,输出字符串,且指针把a[8]作为初始位置往前指3个元素,也就是共有4个字符输出。最后指向a[5]为'6',所以输出为6789。

故本题答案为b。

第17题答案: a评析:

本题考查的是if…else语句的使用。x=2.0,符合第二个if语句的条件x<10.

0,所以执行y=1.0/x语句,即y=1.0/2.

0=0.500000。

本题答案为c。

第18题答案: c评析:

本题的考查点是if语句的判断。

当i不可以整除2时打印"*"然后打印"#",不能整除2时将返回循环起始点,当循环结束后,打印"$"

故本题答案为c。

第19题答案: d评析:

本题考查的是数组元素的引用。

如果定义一个指针指向二维数组的一行,则可以移动到下一行,这就是行指针。行指针的定义格式为:[存储类型] 数据类型(*指针)[n] 这里的n是一个整数,表示所指向的二维数组的列数。

(*p)[5]中p是指向一个包含5个元素的一维数组,p的值就是该一维数组的首地址。所以当用行指针访问二维数组时,行指针每增加1,就移动一行,即指向二维数组的下一行,例如此题中的p+i将指向数组的第i行。即选项a所指的意思是指向数组c的第1行,并不是引用c数组的元素;b答案中p+3是指向数组元素的第3行,*(p+3)是指第三行第零个元素的地址;选项c由对选项a,选项b的解释可知,它指的是第一行第3列元素的地址;选项d中p[0]+2是指第0行第2列元素的地址,再加个*就表示第0行第2列的元素,即c[0][2]。

故本题答案为d。

第20题答案: b评析:

本题考查的是数组的定义。

选项a中定义的是5个数组元素,但赋值的时候赋的是6个元素,所以出错;选项c不符合数组定义形式,数组名后应加上"选项d的类型说明符错误,如果用char定义就对了;选项b中的0,1,2,3,4,5分别表示对应字符的ascii码,所以选项b是正确的。

故本题答案为b。

第21题答案: b评析:

本题考查的是函数的调用。

题中char (*f1)()fun定义了f1是一个指向函数fun的指针变量,即将函数fun的入口地址赋给了指针变量f1,这时f1和fun都指向函数的开头,调用*f1就是调用函数fun,注意,此时用函数指针变量调用函数时,只需将(*f1)代替函数名fun即可,再在(*f1)之后的括弧中根据需要写上实参,所以"(*f1)(a);"就相当于"fun(a)",故选项a是正确的。

故本题答案为a。

第22题答案: b评析:

本题的考查点是指针变量的引用。

指针变量中只能存放地址(指针),不要将一个整型(或任何其它非地址类型的数据)赋给一个指针变量。所以选项a是错误的语句。

故本题答案为a。

第23题答案: d评析:

本题的考查点是求字符串的长度。

虽然字符串str在定义时申请了12个字节的内存空间,但是当对它进行赋值后,一个隐含的"\0"赋给了第7个数组元素,而当函数strlen()在判断串长度时,只要遇到"\0"便结束了,所以,strlen(str)的值应当为6。

故本题答案为a。

第24题答案: b评析:

本题的考查点是字符串常量。

字符串常量是由一对双引号括起的字符序列。例如:"china","c program","12.

5" 等都是合法的字符串常量。选项a中双引号内使用了两个转义符,即后一个双引号也作为字符串的内容了,故此字符串中还缺少用于表示字符串结束的引号,所以选项a的表示法错误;选项b、c均没有用双引号括起来,所以并不是字符串;选项d表示空字符串,是正确的表示法。

C语言试卷答案

程序设计语言 c 模拟试卷。一 试题一 40分,每小题4分 按题目要求解答下列各小题。1.定义一个大小为6的数组,并且使数组的值都为0。int a 6 2.写出执行如下程序段后的输出结果。char a hello p p a 2 printf s p llo 3.假设你有x是一个float变量,而不...

C语言试卷A答案

一 选择题 1 10 每小题2分,11 50 每小题1分,共60分 下列各题a b c d 四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。1 算法能正确地实现预定功能的特性称为算法的。a 确定性 b 易读性 c 健壮性 d 高效性。答案 a评析 算法的确定性...

C语言试卷答案

华南农业大学考试试卷 b 卷 2005学年第1学期考试科目 程序设计 考试类型 闭卷 考试时间 10 分钟。考试须知。1 答案必须写在 纸 上,只写试题答案,不必操题。2 必须在答题纸上正确写上班级 学号 姓名等内容,否则没有考试成绩。一 单项选择题。1 下面标识符中,不合法的用户标识符为d a p...