《2022年C语言习题 5.pdf》由会员分享,可在线阅读,更多相关《2022年C语言习题 5.pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 程序设计基础 (C 语言版 )习题第01章绪论一选择题1.以下叙述中正确的是_。A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整【解析】程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。所以选项A)、B)、C)说法都不完整。2.以下关于简单程序设计的步骤和顺序的说法中正确的是。A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文
2、档进行编码和上机调试,最后确定算法和数据结构【解析】 设计一个能解决实际问题的计算机程序需要经过以下几个过程: 建立模型。 算法设计: 给出解决问题的步骤,即算法。算法表达:选择一种表达算法的工具,对算法进行清晰的表达。编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。程序调试:对编写好的程序进行调试,修改程序中的错误。程序文档编写与程序维护。综上所述, B)选项是符合上述描述的,其他选项不恰当。3,叙述中正确的是 _。A)C 程序的基本组成单位是语句B)C 程序中的每一行只能写一条语句C)简单 C语句必须以分号结束D)C 语句必须在一行内写完【解析】函数是 C程序的基本组成单
3、位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。故本题答案为 C)。4.以下叙述中正确的是。A)C 程序中的注释只能出现在程序的开始位置和语句的后面B)C 程序书写格式严格,要求一行内只能写一个语句C)C 程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中【解析】在 C语言中,注释可以加在程序中的任何位置,选项A)错误。 C程序可以分模块写在不同的文件中,编译时再将其组合在一起,选项 D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案为选项C)。5.以下关于 C语言的叙述中正确的是。
4、A)C 语言中的注释不可以夹在变量名或关键字的中间B)C 语言中的变量可以在使用之前的任何位置进行定义C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C 语言的数值常量中夹带空格不影响常量值的正确表示【解析】 C语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A正确;C语言中的变量要在使用之前定义,C标准规定定义位置在相关程序块的首部,选项B错误; C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误; C语言数值常量中不允许存在空格,选项D错误。6.以下关于 C语言数据类型使用的叙述中错误的是。A)若要准确无误差地表示自然数,应使用整数类型名师资
5、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 31 页 - - - - - - - - - 2 B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如 人员信息 等含有不同类型的相关数据,应自定义结构体类型D)若只处理 真和假两种逻辑值 ,应使用逻辑类型【解析】 C语言中没有逻辑类型,若只处理真或假两种逻辑值,可以使用整型数1或0表示,故选 D。第02章基本数据类型一选择题1.有以下定义: int a;long b ;double x ,y;则以下选项中正确的表达式是
6、。A)a%(int)(x y) B)ax! y;C)(a*y)%b D)yxyx 【解析】 A)选项中如果 x与y的值相等那么取余时就会有除数为0的情况。 C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为 double 型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。2.有以下程序#include main() int s,t,A10;double B 6;ssizeof(A) ; tsizeof(B) ;printf(%d ,%dn ,s,t); 在VC6 平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6
7、【解析】 sizeof 的作用就是返回一个对象或者类型所占的内存字节数。在VC6 中整型占 4个字节,双精度实型占8个字节,所以选C)。3.若有定义: double a=22;int i=0,k=18;,则不符合 C语言规定的赋值语句是。A)a=a+,i+; B)i=(a+k)=(i+k); C)i=a%11; D)i=!a; 【解析】 C语言中取余运算符两侧的操作数只能是整型(若为char 型,则会自动转换成整型)。4.有以下程序:#include main() int a1,b0;printf(%d ,bab);printf(%dn ,a2*b); 程序运行后的输出结果是_。A)0,0 B
8、)1,0 C)3,2 D)1,2 【解析】执行第一个 printf 语句时, bab1,所以输出 1,执行第二个 printf 语句时, a2*b=2 ,所以输出结果为 2。5.若有定义语句: int a=3 ,b=2,c=1 ; ,以下选项中错误的赋值表达式是。A)a=(b=4)=3 ; B)a=b=c+1 ;C)a=(b=4)+c ;D)a=1+(b=c=4) ;【解析】在 A)选项中,赋值语句 b=4先把 4赋值给整型变量 b,之后执行 (b=4)=3 是把常量 3赋值给常量 4,但是由于 C语言规定赋值运算符的左侧只能是变量,不能是常量或者表达式,因此A)选项错误。6.有以下定义: i
9、nt a;long b ;double x ,y;则以下选项中正确的表达式是。A)a%(int)(x y) B)ax! y;C)(a*y)%b D)yxyx 【解析】 A)选项中如果 x与y的值相等那么取余时就会有除数为0的情况。 C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为 double 型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 31 页 - - - - - - -
10、 - - 3 7.若有定义语句: int x10; ,则表达式 xxx的值为 _。A)20 B)10 C)0 D)10 【解析】xxx可化为: xx(xx),由于x初始值为 10,所以计算后, x1020 10,因此选 B)。二填空题1.以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#include main() int x=256; printf(%d-%d-%dn,_,x/10%10,x/100); 参考答案: x%10 【解析】 x=256 ,x%10=6 。2.以下程序运行后的输出结果是。#include main() int a;a=
11、(int)(double)(3/2)+0.5+(int)1.99*2);printf(%dn ,a); 参考答案: 3 【解析】本题中3/2=1 ,(double)(3/2)=1 ,(int)1.99*2=1*2=2 ,因此 (int)(1+0.5+2)=(int)3.5=3。3.若有定义语句: int a5; ,则表达式: a的值是 _。参考答案: 5 【解析】a的含义是在使用a 值以后,使 a 值加 1,所以 a的值为 5。4.若有语句 double x 17;int y; ,当执行 y(int)(x/5)%2 ;之后 y的值为 _。参考答案: 1 【解析】y(int)(x/5)%2 (i
12、nt)(3.4)%2 3%21。5.设变量 a和b已正确定义并赋初值。请写出与a ab等价的赋值表达式_。参考答案: a=-b 【解析】 a ab 等价于 aa(ab),等价于 a b。第03章顺序结构一.选择题1.有以下程序#include main() char a,b,c,d; scanf(%c%c,&a,&b); c=getchar();d=getchar(); printf(%c%c%c%cn,a,b,c,d); 当执行程序时 ,按下列方式输入数据(从第 1列开始 , 代表回车 ,注意,回车也是一个字符 ) 12 34 名师资料总结 - - -精品资料欢迎下载 - - - - - -
13、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 31 页 - - - - - - - - - 4 则输出结果是A)1234 B)12 C)12 D)12 3 34 【解析】程序根据用户输入分别给字符型变量a、b、c、d赋值为 1、2、 、3,因此输出到屏幕得到选项C中的格式。2.有以下程序段:char ch;int k;ch a;k12;printf(%c ,%d,ch,ch,k);printf(k %dn,k);已知字符 a的ASCII 码值为 97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输
14、出项与格式描述符个数不符,输出为零或不定值C)a,97,12k 12 D)a,97 ,k12 【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出。所以第一个输出语句输出的结果为a,97,第二个输出语句输出的结果为k12,所以选项 D)为正确答案。3.有以下程序#include main() char a 30 ,b30 ;scanf(%s ,a);gets(b) ;printf(%sn%sn,a,b); 程序运行时若输入:how are you? I am fine 则输出结果是A)how are you? I am fine B)ho
15、w are you? I am fine C)how are you? I am fine D)how are you? 解析】 scanf 函数会把空格字符作为输入的字符串之间的分隔符,因此字符串a为how。gets() 函数读取字符串时,直至接受到换行符或 EOF 时才停止,并将读取的结果存放在指针所指向的字符数组中,因此其余输入的内容赋值给b。二填空题1.以下程序运行后的输出结果是。#include main() int a200,b010;printf(%d%dn ,a,b); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
16、 - 名师精心整理 - - - - - - - 第 4 页,共 31 页 - - - - - - - - - 5 参考答案: 2008 【解析】整型变量a 的值为 200 ,b 的值010 是用八进制表示的 10即十进制的 8,最后输出格式均为%d,即十进制格式,所以输出为 2008 。2.有以下程序 (说明:字符 0的ASCIl 码值为48) #include main() char c1 ,c2;scanf(%d ,&c1) ;c2=c1+9 ;printf(%c%cn ,c1,c2) ; 若程序运行时从键盘输入48,则输出结果为。参考答案: 09 【解析】本题中通过ASCII 码对字符变
17、量赋值, 由于字符 0 的 ASCII 码是 48,因此字符变量c1 为 0,c2 的 ASCII 码比 c1 大 9,因此 c2 为 9。第04章选择结构一选择题1.若变量已正确定义,在if(W)printf(%dn ,k);中,以下不可替代W的是。A)ab c B)ch getchar() C) a bc D)a【解析】在 C语言中,表示不等于不能用 ,而只能使用 !=。其他选项均满足题目的要求。2.当变量 c的值不为 2、4、6时,值也为 真的表达式是。A)(c 2)|(c4)|(c 6) B)(c 2& c 2&c 2& c2& c A& kk A|kk a &(kk 32) ZD)i
18、salpha(kk)&(kk91) 【解析】 C语言的字符以其 ASCII 码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII 码在A和Z之间就可以了,选项 A)和C)符合此要求。在选项D)中,函数 isalpha 用来确定一个字符是否为字母,大写字母的ASCII 码值的范围为 65到90,所以如果一个字母的ASCII 码小于 91,那么就能确定它是大写字母。本题答案选B)。4.有以下程序:#include main() int a l,b2,c3,d0;if(al & b 2) if(b!2|c! 3) printf(%d ,%d,%dn ,a,b,c);else print
19、f(%d ,%d,%dn,a,b,c);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 31 页 - - - - - - - - - 6 else printf(%d ,%d,%dn,a,b,c); 程序运行后的输出结果是_。A)1,2,3 B)1,3,2 C)l,3,3 D)3,2,1 【解析】程序首先执行第一个判断语句,a 1成立;b 2,先判断 b是否为 2,再进行 b加1操作,执行后 b的值为 3。继续执行第二个判断语句,注意程序此时进行逻辑或运算,b!2的值为真
20、,因此条件表达式b!2|c! 3的值为真,程序便不再执行第二个逻辑语句c! 3,而直接进行输出操作。因此,本题正确答案为C)。5.执行以下程序段后,w的值为 _。int wA,x14,y15;w(x y)&(wa) ;A)1 B)NULL C)1 D)0 【解析】根据题目所给条件可知,x|y为1,wb) ab;ca;if(c! a) cb;printf(%d ,%d,%dn ,a,b,c);其输出结果是A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7 【解析】两个 if语句的判断条件都不满足,程序只执行了ca这条语句,所以变量c的值等于 3,变量b的值没能变化,程序输出的结果为
21、 3,5,3 。所以正确答案为选项B)。7.有以下程序段:int a,b,c;a10;b50;c30;if(ab)a b,bc;ca;printf(a %d b%d c %dn ,a,b,c);程序的输出结果是_。A)a 10 b50 c 10 B)a 10 b50 c 30 C)a 10 b30 c 10 D)a 50 b30 c 50 【解析】该题考查if条件语句,当条件为真时,将b值赋给 a,c值赋给b;当条件为假时,将 a值赋给 c。该题中 if条件为假,所以将a的值赋给 c,故 a10 b 50 c 10。8.有以下程序:#include 名师资料总结 - - -精品资料欢迎下载 -
22、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 31 页 - - - - - - - - - 7 main() int x1,y2,z3;if(xy) if(yy为假,所以直接执行最后一行代码。9.有以下程序:#include main() int x1,y0,a0,b0;switch(x) case 1 :switch(y) case 0: a ; break ;case 1: b ;break ; case 2 :a;b;break ;case 3 :a;b; printf(a %d,b%dn,a,b); 程序
23、的运行结果是A)a 1,b0 B)a 2,b2 C)a 1,b1 D)a 2,b1 【解析】本题考查了switch 结构的内容。在 C语言中,程序执行完一个case 标号的内容后,如果没有break 语句,控制结构会转移到下一个 case 继续执行, 因为case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch 结构后,继续执行了外部switch 结构的case 2 分支。最后 a和b的值分别为 2和1。二填空题1.在C语言中,当表达式值为0时表示逻辑值 假,当表达式值为时表示逻辑值 真。参考答案:非 0 【解析】本题一定要明确一个概念,即:所有非0
24、的数(并不只是 1),在 c 语言中都表示逻辑值为真。2.设x为int型变量 ,请写出一个关系表达式_ ,用以判断 x同时为 3和7的倍数时 ,关系表达式的值为真。参考答案: (x%3=0)&(x%7=0) 【解析】 x%3=0 能保证 x 是 3 的倍数, x%7=0 能保证 x 是 7 的倍数,( x%3=0 )&(x%7=0 )能保证 x 是 3 的倍数并且名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 31 页 - - - - - - - - - 8 x 是 7
25、的倍数。3.有以下程序#include main() int a=1,b=2,c=3,d=0; if(a=1) if(b!=2) if(c=3)d=1; else d=2; else if(c!=3)d=3; else d=4; else d=5; printf(%dn,d); 程序运行后的输出结果是_ 。参考答案: 4 【解析】 a=1为真, b!=2 为假, c!=3 为假,所以 d=4。4.有以下程序#include main() int x;scanf(%d ,&x);if(x15)printf(%d,x-5);if(x10)printf(%d,x);if(x5)printf(%dn,
26、x+5) ; 若程序运行时从键盘输入12,则输出结果为。参考答案: 1217 【解析】本题中输入12 时,第一条 if 的条件 x15 不满足因此不执行,第二条if 的条件 x10 满足因此输出12,第三条 if 的条件 x5 满足因此输出17。5.以下程序运行后的输出结果是。#include main() int x=10 ,y=20 ,t=0;if(x=y)t=x ;x=y;y=t;printf(%d%dn ,x,y); 参考答案: 20 0 【解析】本题中if 选择的条件 x=y 不满足,因此直接执行后面的x=y 和 y=t,则 x 的值为 20,y 的值为 0。第05章循环结构一选择题
27、1.以下不构成无限循环的语句或语句组是A)n=0 ;do+n ;while(n=0) ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 31 页 - - - - - - - - - 9 B)n=0 ;while(1)n+ ; C)n=10 ;while(n) ;n-; D)for(n=0 ,i=1; ;i+) n+=i ;【解析】项 A)中变量n的值,先自加 1,再进行循环条件判断,此时循环条件n0不成立,跳出循环。所以正确答案为A)。2.有以下程序#include ma
28、in() int y10;while(y );printf(y %dn,y); 程序执行后的输出结果是A)y 0 B)y 1 C)y l D)while 构成无限循环【解析】当 y减为 1时判断 while(y-),此时满足条件,但是y变成0。下次循环判断 while(y-)时,因为 y为0不满足条件跳出循环,但是此时也要执行y-,所以 y变成了 -1。 打印输出时输出 -1。3.有以下程序:#include main() int i5;do if(i%3 1) if(i%5 2) printf(*%d ,i);break ; i ; while(i !0);printf(n) ; 程序的运行
29、结果是_。A)*7 B)*3*5 C)*5 D)*2*6 【解析】整个程序中只有对i增加的语句而没有对i减少的语句,所以2、3都不可能出现,选项B)和D)错误。而 i5时第一个if语句的表达式为假,所以选项C)也错误。4.以下程序段中的变量已正确定义:for(i0;i4;i, i ) for(k l;k3;k );printf(*) ;程序段的输出结果是_。A)* B)* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 31 页 - - - - - - - - - 10
30、C)* D)* 【解析】本题考察 for循环语句,注意第二个for语句的后面有一个分号,即printf 函数不属于循环体,无论循环执行多少次,printf(*) 语句只执行一次。因此,本题正确答案为D)。5.有以下程序#include main() int a=1,b=2; for(;a8;a+)b+=a;a+=2; printf(%d,%dn,a,b); 程序运行后的输出结果是A)9,18 B)8,11 C)7,11 D)10,14 【解析】初始值 a=1 ,b=2,第一次循环: b=b+a=2+1=3 ,a=a+2=1+2=3 ,a=a+1=3+1=4 ;第二次循环: b=b+a=3+4=
31、7 ,a=a+2=4+2=6 ,a=a+1=6+1=7 ;第三次循环: b=b+a=7+7=14 ,a=a+2=7+2=9 ,a=a+1=9+1=10 ,故本题答案选 D。6.有以下程序:#include main() int i,j;for(i3;i1;i) for(j1;j2;j )printf(%d ,ij);printf(n) ; 程序的运行结果是_。A)2 3 4 B)4 3 2 3 4 5 5 4 3 C)2 3 D)4 5 3 4 3 4 4 5 2 3 【解析】该题目主要考查for嵌套循环,要注意循环变量i和j的取值范围。输出结果为变量i和j的和。8.设变量已正确定义,以下不能
32、统计出一行中输入字符个数(不包含回车符 )的程序段是 _。A)n 0;while(ch getchar() !n)n ;B)n 0;while(getchar() ! n)n;C)for(n 0;getchar() ! n;n); D)n 0;for(ch getchar() ;ch!n;n);【解析】A)项每进行一次循环判断一个字符是否为回车,如果不是就进行下一次判断,因此可以统计出输入字符个数;B)项与A)项的判断相似,仅为是否将读入的数据赋值给一个变量,因此并不影响判断结果;C)想用 for循环来判断,与 B)项的判断完全相同,可以统计出输入字符个数;D)项中chgetchar() 是给
33、变量 ch赋初值,如果输入回车,则程序只循环一次,如果输入一个非回车的字符,则程序进入死循环。因此,本题正确答案为D)。9.有以下程序#include main() int i,j,m=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 31 页 - - - - - - - - - 11 for(i=1;i0;j-) if(i*j3)break; m*=i*j; printf(m=%dn,m); 程序运行后的输出结果是A)m=6 B)m=2 C)m=4 D)m=5 【
34、解析】第一次循环i=1,j=3和j=2时都能执行 m*=i*j ,此时得到 m的值为 6;然后进行第二次循环i=2,j=3时会执行 break 语句,内部循环直接结束,此时i再加1,也会导致退出外部循环,所以最终结果m的值为 6。10.有以下程序#include main() int s;scanf(%d ,&s);while(s0) switch(s) case 1 :printf(%d ,s+5) ;case 2 :printf(%d ,s+4);break ;case 3 :printf(%d ,s+3);default :printf(%d ,s+1) ;break ; scanf(%
35、d ,&s) ; 运行时,若输入 123450,则输出结果是A)6566456 B)66656 C)66666 D)6666656 【解析】 switch 语句执行完一个 case 后面的语句后,流程控制转移到下一个case语句继续执行,遇到break 会跳出本次循环。本题中输入 1时会输出 65,输入2时会输出 6,输入 3时会输出 64,输入 4时会输出 5,输入 5时会输出 6,在输入 0时不满足循环条件,程序执行结束。11.有以下程序段int i,n; for(i=0 ;i8;i+) n=rand()%5 ;switch(n) case 1 :case 3 :printf(%dn ,n
36、);break ;case 2 :case 4 :printf(%dn ,n);continue ;case 0 :exit(0) ; printf(%dn ,n);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 31 页 - - - - - - - - - 12 以下关于程序段执行情况的叙述,正确的是A)for 循环语句固定执行8次B)当产生的随机数 n为4时结束循环操作C)当产生的随机数 n为1和2时不做任何操作D)当产生的随机数 n为0时结束程序运行【解析】当产生
37、的随机数n为1或2时,由于没有遇到 break ,因此程序将分别顺序执行case 3 与case 4 ;当n为3时,程序输出n的值后跳出 switch 语句;当 n为4时,程序输出 n的值后将继续执行下一次循环;当n为0时,程序执行 exit函数结束运行。二填空题1.有以下程序#include main() int m,n; scanf(%d%d,&m,&n); while(m!=n) while(mn)m=m-n; while(mn)n=n-m; printf(%dn,m); 程序运行后 ,当输入 147时,输出结果是 _。参考答案: 7 【解析】执行 while(mn) 的循环,得到 m=
38、7,n=7 。此时所有循环结束,m=7 。2.以下程序运行后的输出结果是_。#include main() int a1,b7;do bb/2; a b; while(b1) ;printf(%dn ,a); 参考答案: 5 【解析】第一次循环执行后,b3,a4,满足条件 b1,循环继续;第二次循环执行后,b1,a5,不满足条件b1,结束循环。所以输出的a 值为 5。3.有以下程序:#include main() int f,fl,f2,i;f10;f21;printf(%d %d ,f1,f2);for (i3;i5;i) ff1f2;printf(%d ,f);f1f2;f2f; 名师资料
39、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 31 页 - - - - - - - - - 13 printf(n) ; 程序运行后的输出结果是_。参考答案: 0 1 123 【解析】第一个 printf语句输出结果为 0 1。循环体总共循环三次,第一次循环结果为,f1,f11,f21;第二次循环结果为f2,f11,f22;第三次循环结果为f3,f12,f23。4.若有定义: int k; ,以下程序段的输出结果是_。for(k2;k6 ;k,k) printf(#%d ,k
40、);参考答案: #2#4 【解析】在for 循环语句中,自变量k 的自增表达式为k, k。这是一个逗号表达式,所以输出结果为#2#4 。5.以下程序运行后的输出结果是_。#include main() int k1,s0;do if(k%2) !0)continue ;sk; k;while(k10) ;printf(s %dn,s); 参考答案: s=0 【解析】 continue 语句用于跳出本次循环,直接进行下一次循环。进行if判断时 k的值为1不能够被 2整除,因此执行 continue 退出本次循环,不对 s进行任何操作,直接进行循环条件判断,此时k的值为 1不满足循环条件,退出wh
41、ile 循环,输出 s的值为 0。第06章数组一选择题1.下列选项中 ,能正确定义数组的语句是A)int num0.2008; B)int num; C)int N=2008; D)#define N 2008 int numN; int numN; 【解析】选项 A不符合 C语言的语法要求;选项B中没有指定数组的大小;选项C中数组大小不能用变量来指定。2.下列定义数组的语句中,正确的是。A)int N 10;B)#define N 10 C)int x0.10 ;D)int x ;int xN ;int xN ;【解析】 A)中的 N是一个变量,不可以用变量来定义数组,所以选项A)错误。 C
42、)中把所有的下标均列出不正确,此处只需指明数组长度即可。D)中在定义时没有指明数组长度不正确,如果不指明长度就应在定义时对数组元素进行赋值,而此选项没有,所以错误。故本题答案为B)。3.若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a5 0;B)int b 0,0,0,0,0 ;C)int c2 3;D)int i 5,di;【解析】在进行数组的定义时,不能使用变量对数组的长度进行定义。其他选项均符合数组定义标准。4.以下错误的定义语句是。A)int x30,1,1,2,3 ;B)int x43 1,2,3 ,1,2,3 ,1,2,3 ,1,2,3 ;C)int x4 1
43、,2,3 ,1,2,3,1,2,3 ,1,2,3 ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 31 页 - - - - - - - - - 14 D)int x3 1,2,3,4 ;【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二维数组时,可以省略数组的第一维的长度,但是不能省略第二维的长度。故选项C)错误。5.若有定义: int a23 ; ,以下选项中对 a数组元素正确引用的是。A)a2 !1 B)a23 C)a03 D)a12 !1
44、 【解析】 C语言中数组下标是从0开始的,所以二维数组a23 的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项 A)、B)、C)都是错误的,选项 D)表示的是数组元素a00 。所以正确答案为D)。6.有以下程序:#include #include main() char a10 abcd ;printf(%d ,%dn ,strlen(a) ,sizeof(a) ; 程序运行后的输出结果是_。A)7,4 B)4,10 C)8,8 D)10,10 【解析】strlen() 用来返回字符串的长度,而sizeof() 返回的是一个对象或者类型所占的内存字节数,即数组所占的内存。二填空
45、题1.以下程序运行后的输出结果是。#include main() int i,n 5=0;for(i=1 ;i=4 ;i+) ni=ni-1*2+1;printf(%d ,ni); printf(n) ; 参考答案: 13715 【解析】本题中已知n0为 0,根据循环的执行可以得到n1为 1,n2为 3,n3为 7,n4为 15,因此输出结果是 13715 。2.有以下程序#include main() int i,n0,0,0,0,0 ;for(il;i4;i) nini1*31;printf(%d ,ni) ; 程序运行后的输出结果是。 参考答案: 1 4 13 40 【解析】第一次循环结
46、果为:n1=0*3+1, 即n1的值为 1,打印输出 1 ;第二次循环结果为:n2=1*3+1, 即n2的值为4,打印输出 4 ;第三次循环结果为: n3=4*3+1, 即n3的值为 13,打印输出 13 ;第四次循环结果为: n4=13*3+1,即n4的值为 40,打印输出 40。3.有以下程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 31 页 - - - - - - - - - 15 #include main() int a33=1,2,3,4,5,6,7,
47、8,9; int b3=0,i; for(i=0;i3;i+) bi=ai2+a2i; for(i=0;i3;i+) printf(%d,bi); printf(n); 程序运行后的输出结果是_。参考答案: 101418 【解析】当 i=0时,b0=a02+a20=3+7=10 ;当i=1时,b1=a12+a21=6+8=14 ;当 i=2时,b2=a22+a22=9+9=18, 则打印结果为 101418 。4.有以下程序#include main() int n2 ,i,j;for(i0;i2;i)ni0;for(i0;i2;i) for(j0;j2;j)njni 1;printf(%dn
48、 ,n1); 结果为: _参考答案: 3 【解析】通过第一次for(i=0;i2;i+) n i=0;的循环语句可知,已经将数组n 中的两个元素都赋初值为0。接下来的循环中,第一次循环 ,外循环i=0 的前提下:内循环j=0 时,运行完n0=n0+1 后 n0为 1;j=1 时,运行完n1=n0+1 后, n1为 2。第二次循环,外循环i=1 的前提下,内循环j=0 时,运行完n0=n1+1 后 n0为 3;j=1 时,运行完 n1=n1+1 后, n1为 3。5.以下 fun函数的功能是在 N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义 ) int fun(
49、int aNM) int i,j,row 0,col0;for(i0; iN;i) for(j0;jarowco1)rowi;colj; return( _ );参考答案: arowcol 【解析】通过程序可以看出,外循环是行,内循环是列。先在行不变的情况下找一行内最大的数据进行记录。通过语句if(aijarowcol) row=i; col=j; 可知,如果变量ai j大于 arow col,将 i 赋给了 row,将 j 赋给了 col,所以 arow col是记录当前最大值的变量。6.有以下程序#include main() int i,j,a3=1,2,3,4,5,6,7,8,9; f
50、or(i=0;i3;i+) for(j=i;j3;j+)printf(%d,aij); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 31 页 - - - - - - - - - 16 程序运行后的输出结果是_。参考答案: 123569 【解析】当 i=0 时,j=0 、1、2 时满足条件,则打印a00、a01、a02;当 i=1 时,j=1、2 时满足条件,则打印 a11、a1 2;当 i=2 时, j=2 时满足条件,则打印a22,所以打印结