C语言练习题及答案(行健).pdf
《C语言练习题及答案(行健).pdf》由会员分享,可在线阅读,更多相关《C语言练习题及答案(行健).pdf(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语言练习注意:以 下“口”为空格,vCR为回车一、选择题:1、阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为()main()int x,y,z;scanf(n%d%d%d,&x,&y,&z);printf(x+y+z=%dnH,x+y+z);)A)x+y+z=48 B)x+y+z=35C)x+y+z=38 D)不确定值2、下面程序的输出是()main()int y=0;while(y);printf(,y=%dn,1,y);A)y=0 B)w hile构成无限循环C)y=-1 D)y=l在以下各组标识符中,A)xy_变 量 1合法的用户标识符是(B)longdoubl
2、esigned)C)*phistoryD)CHARFloat4、以下能正确计算1*2*33 0 的程序段是()A)do i=l;s=l;s=s*i;i-H-;while(i=10);B)do i=l;s=0;s=s*i;i-H-;while(i=10);C)i=l;s=l;do s=s*i;i+;while(i=10);D)i=l;s=0;do s=s*i;i-H-;while(i=10);5、已知p 为指针变量,a 为数组名,I 为整型变量,下列赋值语句中不正确的是()A)p=&i;B)p=a;C)p=&ai;D)p=10;6、在下列各m 的值中,能使m%3=2&m%5=3&m%7=2()A
3、)8 B)23C)17 D)67、如果在用户的程序中要使用c 库函数中的字符串函数时,应在该源文件中使用的include命 令 是()A)#include C)#include B)#include D)#include 8、以下程序的输出结果是()void average(float*p,int n)int i;float sum;fbr(i=0,sum=0;is,a2.sip-s);printf(%d%d am.n);printf(%cn,+am.s3);A)abed abed abed 2 0 e B)abed efgh ijkl 2 0 eC)abed efgh ijkl 2 1 e
4、D)abed abed abed 2 1 eI k 下列函数中定义不正确的是()A)int max()int x,y,z;z=xy?x:y;B)int max(int x,int y)int z;z=xy?x:y;return(z);C)int max(x,y)int x,y,z;z=xy?x:y;return(z);D)int max()12、C 语言中函数返回值的类型是由()决定。A)定义函数时的第一个形参类型 B)调用函数的主调函数类型C)调用函数时临时 D)定义函数时所指定的函数类型13、运行以卜程序后,如果从键盘上输入china#回车,则输出结果为()A)2,3 B)3,5C)2,5
5、D)5,2#include main()int vl=0,v2=0;char ch;while(ch=getchar()!=#)switch(ch)case a1:case V:vl-H-;default:v2+;)printfC%d,%dnvl,v2);14、下面函数的功能是()sss(char*s,char*t)while(*s)&(*t)&(*t+=*s+);return(*s-*t);)A)求字符串的长度 B)比较两个字符串的大小C)将字符串s 复制到字符串t 中 D)将字符串s 接续到字符串t 中15、有如下程序main()int i,sum=O;fbr(i=l;i=0 I I b=
6、0)&(a0 I I b=0&b=0)&(a0&b0)&(a+b017、下述程序的输出结果是()。main()char sl10=abcn,*s2=HABCH,s350=123456789;strcpy(s3+4,strcat(s l,s2);printf(M%snM,s3);A)1234abcABC B)56789abcABCDC)abcABCD)以上都不是18、若已定义:inta9,*p=a;并在以后的语句中未改变p 的值,不能表示a l 地址的表达式是()A)p+1 B)a+1 C)a+D)+p19、下列定义数组正确的是()A)#define size 10char strl size,
7、str2size+2;C)char str;B)int n=5;int ann+2;D)int numriO1;20、以 F程序的功能是计算:s=I+1/2+1/3+.+1/10main()int n;float ss=1.0;fbr(n=10;n I;n)s=s+l/n;printf(%6.4fn,s);程序运行后输出结果错误,导致错误结果的程序行是A)s=1.0;C)s=s+l/n;B)fbr(n=10;nl;n-)D)printf(%6.4fnn,s);21、以下说法正确的是()A)输入项可以为一个实型常量,如 scanf(%,3.5);B)只有格式控制,没有输入项,也能进行正确的输入,
8、如 scanffa=%d,b=%d);C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%4.2f,&D;D)当输入数据时,必须指明变量的地址,如 scanf(%F,&f);22、设x=2.5、a=7,则算术表达式x+2*+a/3%3的 值 为()。A)2.5C)4.5B)3.5D)5.523、若有说明:inta34=0;则下面正确的叙述是()A)只有元素a 即 可得到初值0B)此说明语句不正确C)数组a 中个元素都可以得到初始值,但其值不一定为0D)数组a 中个元素都可得到初值024、设 a=3,b=4,c=5,则表达式!(a+b)+c-l&b+c/2 的 值 为()
9、,A)6.5C)0B)6D)125、设 x 是整型变量,pb是基类型是整型的指针变量,则正确的赋值表达式是()A)pb=x;B)*pb=&x;C)pb=&x;D)*pb=*x;26、下面程序的输出结果是()#include 27、在下列有关#include命令的叙述中,错误的一条是()A)在#include命令中,文件名可以用双引号或尖括号括起来main()int*k,*j,i=100;j=&i;k=&j;printf(%d,*k);A)运行错误C)i的地址B)100D)j 的地址B)在一个包含文件中又可以包含另一个被包含文件C)在一个include命令中可以指定一个包含文件D)在一个incl
10、ude命令中可以指定多个包含文件28、以下程序的输出结 果 为()main()int a34=l,3,5,7,2,4,6,8,15,17,34,12);printffThe value is%d”,the_value(3,4,a);the_value(int m,int n,int arr4)int i,j,val=arrOO;fbr(i=O;im;i-H-)for(j=0;jn;j+)if(valy&x!=y);B)if(x=y)x+=y;C)if(x!=y)scanfC%d”,&x)else scanf(n%dn,&y);D)if(xy)x+;y+;31、有如下程序main()int x=
11、l,a=0,b=0;switch(x)case 0:b+;case 1:a+;case 2:a+;b+;)printffa=%d,b=%dn”,a,b);)该程序的输出结果是A)a=2,b=l B)a=l,b=lC)a=l,b=0 D)a=2,b=232、阅读以下程序:main()int x;scanf(H%dH,&x);if(x-5)printf(n%dn,x);else printf(n%dn,x+);)程序运行后,如果从键盘上输人5,则输出结果是A)3 B)4 C)5 D)633、以下叙述中正确的是()A)全局变量的作用域一定比局部变量的作用域范围大B)静 态(static)类别变量的生
12、存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值34、请阅读以卜 程序:main()int a=5,b=0,c=0;if(a=b+c)printf(*n);else printf($n);)以上程序()A)有语法错误不能通过编译C)输 出*35、执行以下程序段时()x=-l;do x=x*x;while(!x);A)循环体将执行一次C)循环体将执行无限次36、有如下说明B)可以通过编译但不能通过连接,D)输出$B)循环体将执行两次D)系统将提示有语法错误int a10=l 23,4,5,6,7,8,9,10,*P=
13、a;则数值为9 的表达式是A)*P+9 B)*(P+8)C)*P+=9 D)P+837、有如下程序Sdefine N 2define M N+lSdefine NUM 2*M+1main()int i;for(i=l;ix);printf(%d”,(+p)x);printf(n%d”,+(*p-y);A)10 20 20 B)50 60 21C)51 60 21 D)60 70 3139、若 x 是 int型变量,且有下面的程序片段:fbr(x=3;x6;x+)printf(x%2)?(n*%d,):(M#%dn),x);上面程序片段的输出结果是A)*3 B)#3#4*4*5#540、有以下程
14、序int fun(int x,int y,int*cp,int*dp)*cp=x+y;*dp=x-y;main()int a,b,c,d;a=30;b=50;fun(a,b,&c,&d);printf(n%d,%dnn,c,d);输出结果是A)50,30C)80,-20C)#3 D)*3#4*4#5*5B)30,50D)80,204 1.设 int类型的数据长度为2 个字节,则 unsigned int类型数据的取值范围是()。A.0 至 255 B.0 至 65535C.-32768 至 32767 D.-256 至 25542.以下叙述正确的是()。A.C 语言本身没有输入输出语句B.C
15、程序的每行中只能写一条语句C.在 C 程序中,main函数必须位于程序的最前面D.在对一个C 程序进行编译的过程,可发现注释中的拼写错误43.以下程序的输出结果是()。main()int x=10,y=10;printf(%d%dn,x-,-y);A.10 10 B.9 9C.9 10 D.10 944.在 C 语言中,要求参加运算的数必须是整数的运算符是()。A./B.!C.%D.=4 5.有如下定义的变量和输入语句,若要求al,a2,cl,c2的值分别为10,20,A和 B,当从第一列开始输入数据时,正确的数据输入方式是()。int al,a2;char cl,c2;scanf(t4%d%
16、d,&a l,&a2);scanf(tt%c%c,&c I,&c2);A.10n20AB B.10D20DADB CRC.10Q20AB D.10D20DAB4 6.运行以下程序时,从键盘输入7654,则屏幕显示的结果是()。void main()int c;while(c=getchar()!=X n*)switch 4)case 0:case 1 :putchar(c+4);case 2:putchar(c+3);break;case 3:putchar(c+2);default:putchar(c+1);A.7654C.98998847.下面的程序()。main()int x=0,y=0
17、,z=0;if(x=y+z)printf(*”);else print#*);A.有语法错误不能通过编译C.可以通过编译,但是不能通过连接,48.数组名作为函数参数时被处理为()。A.该数组的长度C.该数组的所有元素的值B.99987D.9899887B.输出*因而不能运行 D.输出#B.该数组的首地址D.该数组的第一个元素49、若有数学公式J|COSX I ,其正确的C 语言表达式是()。A.sqrt(fobs(cos(x*3.14/180)B.sqrt(fabs(cos(x*n/180)C.sqrt(|cos(x)|)D.sqrt(|cos(x*3.14/180)|)5 0.执行下列程序时
18、输入:1234567,程序的运行结果为()。main()int x,y;scanf(n%2d%*2d%2d,&x,&y);printfC%d n,x+y);A.17 B.46 C.68 D.语法错误5 1.已知字母a 的 ASCII码为9 7,卜面的程序输出是()。void main()char cl,c2;cl=a+6,2;c2=a+6-3;printfC%c,%dn”,c2,cl);A.输出格式有误不能通过编译B.d,eC.100,101 D.d,10152.下面程序中()。(每行前面数字为行号)1 m a in()2 int i;3 float a8=0.0;4 for(i=0;i8;i
19、+)scanf(n%f,&ai);5 fbr(i=l;i8;i+)a0=a0+ai;6 printfCf,a0);A.没有错误 B.第 3 行有错误 C.第 5 行有错误 D.第 6 行有错误53.若有以下说明和语句,则()不是字符串strcpy的正确调用。char*strl=ncopy,str210,*str3=nhijkmn,*str4,*str5=abcd;A-strcpy(str2,strl);C.strcpy(str4,strl);54.执行下列语句后,输出值为()#include#define M 5#define N M+l#define NN N*N/2main()printf
20、(n%dnn,NN);A.8 B.10 C.1255.以下的程序输出的结果是()。void main()int i;tbr(i=0;i);putchar(#);A.#B.#56.若有如下结构体定义:struct example int x;int y;则()是正确的引用或定义。A.struct example v=10;B.C.struct v;v.x=10;D.57.下述的程序输出结果是()。void main()char a=3,b=6,c;B.strcpy(str3,strl);D.strcpy(str5,strl);D.18C.#D.#example v;v.x=10;struct e
21、xample v=10;c=aAb2;printf(nn%d*c);A.27 B.10 C.20 D.285 8.以下是关于数组的描述,其中不正确地是()。A.数组是有序数据的集合,数组中的每一个元素都属于同一个数据类型;B.在对全部数组元素赋初值时,可以不指定数组的长度;C.int a10,*p=a;贝 IJ语 句 for(;pa+10;p+)printf(n%dnn,*p);输出数组中的所有数据;D.int a10,*p;则 语 句 fbr(p=a;p0&X W10 B.X=0&X ol0C.X=0&X!=10D.X=0 andXlO63.对以卜.说明语句的正确理解是()。int a10=
22、6,7,8,9,10);A.将 5 个数值依此赋给a0至 a4,a5至 a9的值均为零;B.将 5 个数值依此赋给a0至 a4,a5至 a9的值不确定;C.将 5 个数值依此赋给a03 a 4,又将这5 个数值依此赋给a5至 a9;D.因为数组长度与初值的个数不相同,所以此语句不正确。6 4.以下不正确的if语句是()oA.if(xy)&(x!=l)x+;y+;)。C.7 D.866.运行以下程序时,从键盘输入7654,则屏幕显示的结果是()。void main()int c;while(c=getchar()!=n)switch 4)case 0:case 1 :putchar(c+4);c
23、ase 2:putchar(c+3);break;case 3:putchar(c+2);default:putchar(c+1);A.7654 B.99987 C.989988 D.98998876 7.下面的程序()。main()int x=O,y=O,z=O;if(x=y+z)printf(n*”);else prints#H);A.有语法错误不能通过编译 B.输出*C.可以通过编译,但是不能通过连接,因而不能运行 D.输出#6 8.数组名作为函数参数时被处理为()。A.该数组的长度 B.该数组的首地址C.该数组的所有元素的值 D.该数组的第一个元素69、若 有 数 学 公 式 COSX
24、。|,其正确的C 语言表达式是()。A.sqrt(fobs(cos(x*3.14/180)B.sqrt(fabs(cos(x*n/180)C.sqrt(|cos(x)|)D.sqrt(|cos(x*3.14/180)|)70.执行下列程序时输入:1234567,程序的运行结果为()。main()int x,y;scanf(n%2d%*2d%2d,&x,&y);printfC%d n,x+y);A.17 B.46 C.68 D.语法错误71.已知字母a 的 ASCII码为9 7,卜面的程序输出是()。void main()char cl,c2;cl=a462;c2=R+6-3;printf(,%
25、c,%dn,c2,c 1);A.输出格式有误不能通过编译 B.d,e C.100,101 D.d,10172.下面程序中()。(卷行前面数字为行号)1 m a in()2 int i;3 float a8=0.0;4 for(i=0;i8;i+)scanf(n%f,&ai);5 fbr(i=l;i8;i+)a0=a0+ai;6 printf(n%f,a0);A.没有错误 B.第 3 行有错误 C.第 5 行有错误 D.第 6 行有错误73.若有以下说明和语句,则()不是字符串strcpy的正确调用。char*strl=,copy,str210,*str3=nhijkmn,*str4,*str5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习题 答案 行健
限制150内