C语言简单测试题.docx

上传人:b****6 文档编号:8745443 上传时间:2023-05-14 格式:DOCX 页数:13 大小:19.46KB
下载 相关 举报
C语言简单测试题.docx_第1页
第1页 / 共13页
C语言简单测试题.docx_第2页
第2页 / 共13页
C语言简单测试题.docx_第3页
第3页 / 共13页
C语言简单测试题.docx_第4页
第4页 / 共13页
C语言简单测试题.docx_第5页
第5页 / 共13页
C语言简单测试题.docx_第6页
第6页 / 共13页
C语言简单测试题.docx_第7页
第7页 / 共13页
C语言简单测试题.docx_第8页
第8页 / 共13页
C语言简单测试题.docx_第9页
第9页 / 共13页
C语言简单测试题.docx_第10页
第10页 / 共13页
C语言简单测试题.docx_第11页
第11页 / 共13页
C语言简单测试题.docx_第12页
第12页 / 共13页
C语言简单测试题.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言简单测试题.docx

《C语言简单测试题.docx》由会员分享,可在线阅读,更多相关《C语言简单测试题.docx(13页珍藏版)》请在冰点文库上搜索。

C语言简单测试题.docx

C语言简单测试题

(1)C语言中下列叙述正确的是________。

A)不能使用do…while语句构成的循环

B)do…while语句构成的循环,必须用break语句才能退出

C)do…while语句构成的循环,当while语句中的表达式值为非零时结束循环

D)do…while语句构成的循环,当while语句中的表达式值为零时结束循环

答案:

D

评析:

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

 

(2)以下选项中属于C语言的数据类型是________。

A)复数型 B)逻辑型   C)双精度型   D)集合型

答案:

C

评析:

c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。

其中,基本类型分为整型、字符型、实型三类。

实型又称浮点型,包括单精度型和双精度型两种类型。

 

(3)在C语言中,不正确的int类型的常数是________。

A)32768   B)0   C)037    D)0xAF

答案:

A

评析:

c语言中int类型的常数的范围是:

-32768~32767。

c整常数可用三种形式表示:

十进制整数,八进制整数,十六进制整数。

选项A超出范围,不正确。

 

(4)以下程序输出的结果是________。

#include

#include

main()

{

inta=4294967295;

printf("%d%u",a,a);

system("pause");

}

A)-1-1   B)42949672954294967295C)-14294967295D)4294967295–l

答案:

C

评析:

printf函数中不同类型的数据用不同的格式字符,其中%d是按整型数据的实际长度输出十进制整数。

变量a=4294967295以%d格式输出时溢出输出值为该数的补码值,即-1;%u用来输出unsigned型数据,无符号整型变量的数值范围为0~4294967295,所以变量a=4294967295以%u格式输出的值为4294967295。

 

(5)下列描述中不正确的是________。

A)字符型数组中可以存放字符串

B)可以对字符型数组进行整体输入、输出

C)可以对整型数组进行整体输入、输出

D)不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值

答案:

C

评析:

c语言规定只能逐个引用数组元素而不能一次引用整个数组。

字符数组的输入、输出可以将整个字符串一次输入或输出。

所以,选项c的说法是不正确的。

 

(6)以下程序的输出结果是________。

#include

#include

main()

{

inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];

for(i=0;i<4;i+=2)

printf("%d",p[i]);

system("pause");

}

A)5 2   B)5 l   C)5 3   D)9 7

答案:

C

评析:

题中*p=&x[1][1];是指将数组x的数组元素x[1][1]的地址赋值给指针变量p,使p指向x[1][1]这个数组元素,那么p[0]即为指针变量p当前所指向的数组元素x[1][1]的值。

 

(7)下列可用于C语言标识符的一组是________。

A)voidWORDdefine   B)a6$sysFor

C)2asizeofabc    D)Intdefinesizeof

答案:

D

评析:

c语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。

注意,大写字母和小写字母被认为是两个不同的字符。

C语言中的关键字不能用作标识符。

 

(8)以下程序的运行结果是__________。

#include

#include

main()

{

inta[]={1,2,3,4,5,6,7,8,9,10,11,12};

int*p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n",*p,*q);

}

A)运行后报错        B)6 6

C)6 12             D)5 5

答案:

A

评析:

题目中没有给q分配存储单元,只是简单的给它赋了一个值,所以程序的运行结果是6 ll NULLpointerassignment,也就是运行后报错。

 

(9)以下说法中正确的是_________。

A)C语言程序总是从第一个函数开始执行

B)在C语言程序中,要调用函数必须在main()函数中定义

C)c语言程序总是从main()函数开始执行

D)c语言程序中的main()函数必须放在程序的开始部分

答案:

C

评析:

c语言的程序是由主函数main()开始运行,由主函数来调用其他函数,函数必须是并列的,定义后使用,不能在一个函数中定义其他函数,main()函数不一定要放在程序的开始部分,故选c。

 

(10)有如下程序

#include

#include

floatfun(intx,inty){return(x+y);}

main()

{

inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),(a-c)));

system("pause");

}

程序运行后的输出结果为__________。

A)编译出错        B)9      C)21    D)9.0

答案:

B

评析:

本题中先执行(int)fun(a+c,b)函数的调用,值为整型数值15;然后再执行fun(15,(a-e))函数调用,值为单精度实型数值9.000000。

输出为%3.0f,即有效数长度为3,没有小数位数,所以最后结果为9。

 

(11)能正确表示a和b同时为正或同时为负的逻辑表达式是_________。

A)(a>=0‖b>=0)&&(a=0&&b>=O)&&(a<0&&b

C)(a+b>0)&&(a+b<=0)          D)a*b>0

答案:

D

评析:

选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;选项c中,表达式表示的是0,因为没有满足条件的值;选项D表示的是a和b为同号。

 

(12)若己定义:

inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的表达式是__________。

A)p+l   B)a+l   C)a++   D)++p

答案:

C

评析:

数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其它元素。

 

(13)以下程序的输出结果是__________。

#include

#include

voidmain()

{

inta=-1,b=1,k;

if((++a<0)&&!

(b<=0))

printf("%d%d\n",a,b);

else

printf("%d%d\n",b,a);

system("pause");

}

A)-1 l   B)0 l

C)1 0    D)0 0

答案:

C

评析:

逻辑运算符的优先次序如下:

!

(非)→&&(与)→‖(或),但本题需特别、注意的是短路的概念。

 

(14)下面程序的输出结果是__________。

#include

#include

#defineP1(x)printf(x)

voidmain()

{

chard[]="p";

P1(d);

P1("d");

system("pause");

}

A)pd   B)d”d”   C)”p”d   D)”p””d”

答案:

A

评析:

带参数的宏定义的一般形式为:

#define宏名(参数表)字符串

程序中的Pl(d);经宏置换后为printf(d);,所以输出字符串p;程序中的Pl(“d”);经宏置换后printf(“d”)。

(15)以下选项中,能定义s为合法的结构体变量的是__________。

A) typedefstructabc

{   doublea;

charb[10];

}s;

B) struct

{   doublea;

charb[10];

}s;

C) structABC

{   doublea;

charb[10];

}

ABCs;

D) typedef ABC

{   doublea;

charb[10];

}

ABCs;

答案:

B

评析:

定义一个结构体类型的变量,可采用三种方法:

①先定义结构体类型,再定义变量名;②在定义类型的同时定义变量:

③直接定义结构类型变量,即不出现结构体名:

选项B符合第三种定义方法。

 

(16)请读程序:

#include

#include

#include

main()

{

char*s1="AbCdEf",*s2="aB";

s1++;

s2++;

printf("%d\n",strcmp(s1,s2));

system("pause");

}

上面程序的输出结果是________。

A)正数   B)负数   C)零   D)不确定的值

答案:

A

评析:

strcmp(X1,X2)是串比较函数,本题中“s1”、“s2”分别表示这两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,则*sl为“bCdEf’’,*s2为“B”。

在字符串比较中,大小的确定是各个字符串相应位置字符的ASCII码值的大小决定的, sl>s2,返回值为正数。

 

(17)请读程序:

#include

#include

main()

{

inta=5,b=7,c=9;

printf("%d,%d,",a,b,c);

printf("%d,%d,%d",a,b);

system("pause");

}

 

上面程序的输出结果是________。

A)5,7,9,5,7   B)5,7,5,7   C)5,7,不定,7,9   D)5,7,5,7,不定

答案:

D

评析:

printf函数按格式控制符的个数输出表列中对应的数据,若输出表列的个数大于格式控制符个数,则输出与格式控制符对应的输出表列的数据,输出表列中多的则省略;若格式控制符个数大于输出表列的个数,则输出与格式控制符对应的输出表列的数据,格式控制符多的部分输出的数据是随机的。

 

(18)请读程序:

#include

#include

intfunc(inta,intb)

{

intc;

c=a+b;

returnc;

}

main()

{

intx=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

printf("%d\n",r);

system("pause");

}

上面程序的输出结果是________。

A)ll   B)20   C)2l   D)31

答案:

C

评析:

函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x–,y++,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x–,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21。

二、填空题(每空2分,共40分) 

(19)若运行时给变量x输入12,则以下程序的运行结果是 【8】 ;

#include

#include

main(){

intx,y;

scanf("%d",&x);

y=x>12?

x+10:

x-12;

printf("%d\n",y);

system("pause");

}

答案:

【8】0

评析:

三目运算符的形式为(表达式1)7(表达式2):

(表达式3)。

当(表达式1)值为真时,返回(表达式2)的值;为假时,返回(表达式3)的值。

题中因为x>t2为假,所以结果为x-12,即为0。

 

(20)下面程序的功能:

输出100以内能被3整除且个位数为6的所有整数,请补充完整。

#include

#include

main()

{

inti,j;

for(i=0; 【12】 ;i++)

{

j=i*10+6;

if( 【13】 )continue;

printf("%d\n",j);

}

system("pause");

}

答案:

【12】i<10

【13】j%3!

=0

评析:

本题要求输出100以内能被3整除且个位数为6的所有整数,程序中j=i*10+6;语句是求个位数为6的整数,由此可得出程序的循环次数为i

然后通过if语句判断整数是否能被3整除,若不能则继续下一次循环,若能则输出该整数,所以逻辑表达式为i%31=00

 

(21)函数mycmp(char*s,char。

t)的功能是比较字符串s和t的大小,当s等于t时返回0,

当s>t返回正值,当s

请填空。

mycmp(char*s,char*t)

{ while(*s==*t)

{ if(*s==‘\0’)return0;

++s;++t;

}

return( 【14】 );

}

答案:

【14】*s-*t或-*t+*s

评析:

函数的两个形参是两个字符指针变量,字符串的首地址是指针变量的值,*s和*t表示字符串数组s和t的第一个字符,在while循环中,是通过s和t值的不断变化来改变指针所指向的字符,要改变s和t所指不同字符的ASCII码的差值,必须使用“*s-*t”得出。

 

(22)以下函数用于求出一个2×4矩阵中的最大元素值。

max_value(arr)

intarr[][4];

{

intI,J,max;

max=alT[0][0];

for(i=0;i<2;i++)

for(j=0; 【18】 ;J++)

if( 【19】 >max)max=[2Q];

return(max);

}

答案:

【18】j<4

【19】arr[i][j]

【20】arr[i][j]

评析:

2*4矩阵实际上就是一个二维数组,结合本题应为arr[2][4],所以在第一个循环中应当填写“4”;第二个横线处是要判断当前的数组元素值是否大于max,所以应填写arr[i][j];第三个横线处是要将当前大于max的数组元素的值赋给变量max,所以应当填写“arr[i][il”。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2