二级C语言学习知识习题集及规范标准答案汇编.doc
计算机二级C语言习题集汇总及答案目录第一章 C语言基础知识第二章 C语言程序设计的初步知识第三章 顺序结构程序设计第四章 选择结构程序设计第五章 循环结构程序设计第六章 数组第七章 函数第八章 指针第九章 结构体与共用体第十章 文件附录1 预处理命令附录2 位运算模拟试题一模拟试题二模拟试题三模拟试题四模拟试题五第一章 答案第二章 答案第三章 答案第四章 答案第五章 答案第六章 答案第七章 答案第八章 答案第九章 答案第十章 答案附录1 答案附录2 答案模拟试题一答案模拟试题二答案模拟试题三答案模拟试题四答案模拟试题五答案 第一章 C语言基础知识一、选择题1C语言规定,必须用 C 作为主函数名。(0级) A)Function B)include C)main D)stdio2一个C程序可以包含任意多个不同名的函数,但有且仅有一个 ,一个C程序总是从 B 开始执行。(0级) A)过程 B) 主函数 C)函数 D)include3 A 是C程序的基本构成单位。(0级) A)函数 B) 函数和过程 C) 超文本过程 D) 子程序4下列说法正确的是 C 。(0级)A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可B)一个函数的函数体必须要有执行部分,可以没有变量定义C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数D)以上都不对5下列说法正确的是 D 。(0级)A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的6下列说法正确的是 C 。(0级)A)在执行C程序时不是从mian函数开始的B)C程序书写格式严格限制,一行内必须写一个语句C)C程序书写格式自由,一个语句可以分写在多行上D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号7在C语言中,每个语句和数据定义是用 C 结束。(0级) A)句号 B)逗号 C)分号 D)括号8下列字符串是标识符的是 A 。(0级) A)_HJ B)9_student C)long D)LINE 19以下说法正确的是 C 。(0级)A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分10 B 不是C语言提供的合法关键字。(0级) A)switch B)print C)case D)default11C语言提供的合法关键字是 A 。(0级) A)breack B)print C)funiton D)end12C语言提供的合法关键字是 A 。(0级) A)continue B)procedure C)begin D)append13. C语言规定: 在一个源程序中, main函数的位置 C 。(0203第一学期试题)A) 必须在最开始 B) 必须在系统调用的库函数的后面C) 可以在任意位置 D) 必须在源文件的最后14. 一个C语言程序是由 B 。 (0203第一学期试题)A)一个主程序和若干个子程序组成;B)函数组成, 并且每一个C程序必须且只能由一个主函数;C)若干过程组成;D)若干子程序组成.二、填空题1一个C程序至少包含一个 ,即 。(0级)2一个函数由两部分组成,它们是 函数的说明部分 和 函数体 。(0级)3函数体的范围是 。(0级)4函数体一般包括 和 。(0级)5C语言是通过 来进行输入输出的。(0级)6在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个 。(0级)7主函数名后面的一对圆括号中间可以为空,但一对圆括号不能 。(0级) 第二章 C语言程序设计的初步知识一、选择题1在C 语言中,下列类型属于构造类型的是 D 。(0级) A)整型 B)字符型 C)实型 D)数组类型2在C 语言中,下列类型属于构造类型的是 D 。(0级) A)空类型 B)字符型 C)实型 D)共用体类型3在C 语言中,下列类型属于构造类型的是 D 。(0级) A)整型 B)指针类型 C)实型 D)结构体类型4在C 语言中,下列类型属于基本类型的是 A。(0级) A)整型、实型、字符型 B)空类型、枚举型 C)结构体类型、实型 D)数组类型、实型5下列类型属于基本类型的是 C 。(0级)A)结构体类型和整型 B)结构体类型、数组、指针、空类型C)实型 D)空类型和枚举类型6下列字符串属于标识符的是 A 。(0级) A)INT B)5_student C)2ong D)!DF7下列字符串属于标识符的是 A。(0级) A)_WL B)3_3333 C)int D)LINE 38下列字符串不属于标识符的是 C 。(0级) A)sum B)average C).day_night D)M.D.JOHN9下列字符串不属于标识符的是 D。(0级) A)total B)lutos_1_2_3 C)_night D)$ 12310下列字符串不属于标识符的是 D。(0级) A)_above B)all C)_end D)# dfg11C语言中不能用来表示整常数的进制是D 。(0级) A)十进制 B)十六进制 C)八进制 D)二进制12C语言中能用来表示整常数的进制是 A 。(0级) A)十进制、八进制、十六进制 B)十二进制、十进制 C)六进制、八进制 D)二进制、十进制13在C语言中,回车换行符是 A 。(0级) A)n B)t C)v D)b14在C语言中,退格符是 B 。(0级) A)n B)t C)v D)b15在C语言中,反斜杠符是 D 。(0级) A)n B)t C)v D) 16在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码 A 。(0级) A)大32 B)大64C)小32 D)小6417设d为字符变量,下列表达式不正确的是 C 。(0级) A)d=97B)d=a C)d=”a”D)d=g18设d为字符变量,下列表达式正确的是 B 。(0级) A)d=678B)d=a C)d=”d”D)d=gjkl1910+a+1.5-567.345/b的结果是 B型数据。(0级) A)longB)doubleC)intD)unsigned float20语句int i=3;k=(i+)+(i+)+(i+);执行过后k的值为A ,i的值为 。(0级) A)9,6B)12,5C)18,6D)15,521如果i=3,则k=(i+)+(+i)+(i+)执行过后k的值为 A ,i的值为 。(1级) A)12,6B)12,5C)18,6D)15,522如果i=3,则k=(+i)+(+i)+(i+)执行过后k的值为 A ,i的值为 。(1级) A)15,6 B)12,5 C)18,6 D)15,523如果i=3,则k=(+i)+(+i)+(+i)执行过后k的值为 C ,i的值为 。(1级) A)9,6 B)12,5 C)18,6 D)15,524如果int i=3,则printf(“%d”,-i+)的结果为 A ,i的值为 。(1级) A)-3,4 B)-4,4 C)-4,3 D)-3,325如果int i=3,int j=4,则k=i+j执行之后k,i和j的值分别为 C 。(1级) A)7,3,4 B)8,3,5 C)7,4,4 D)8,4,526已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为 B 。(1级)main() char x,y; x=0;y=9; printf(“%d,%dn”,x,y); A)因输出格式不合法,输出错误信息 B)48,57 C)0,9 D)48,5827已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为 C 。(1级)main() char c=A;int i=10; c=c+10; i=c%i; printf(“%c,%dn”,c,i); A)75,7 B)75,5 C)K,5 D)因存在非图形字符,无法直接显示出来28已知在ASCII集中,字母A的序号为65,下面程序的输出结果为 B 。(1级)main() char c1=B,c2=Y; printf(“%d,%dn”,+c1,-c2); A)输出格式不合法,输出错误信息 B)67,88 C)66,89 D)C,X29C语言中最简单的数据类型包括 B 。(1级) A)整型,实型,逻辑型 B)整型,实型,字符型 C)整型,字符型,逻辑型 D)整型,实型,逻辑型,字符型30C语言中,运算对象必须是整型数的运算符是 A 。(1级) A)% B) C)% 和 D)*31.下列常数中,合法的C 常量是 D 。(1级) A)-0. B)105 C)AB D)3+532下列常数中,合法的C 常量是 D 。(1级) A)”x-y” B)105 C)Be D)7ff33下列常数中,合法的C 常量是 A 。(1级) A)n B)e-310 C)DEF D)123434下列常数中,不合法的C 常量是 B 。(1级) A)-0x2al B)lg3 C) D”CHINA”35下列常数中,不合法的C 常量是 B 。(1级) A)-0x3bl B)123e+2.3 C) D)6e+736下列符号中,可以作为变量名的是 D 。(1级) A)+a B)12345e C)a3B D)5e+037下列符号中,可以作为变量名的是 C 。(1级) A)+cB)*X C)_DAY D)next day38下面程序的输出结果是 。(1级)main()int x; x=-3+4*5-6;printf(“%d”,x); x=3+4%5-6; printf(“%d”,x); x=-3*4%-6/5; printf(“%d”,x); x=(7+6)%5/2; printf(“%d”,x); A)11 1 0 1 B)11 3 2 1 C)12 3 2 1 D)11 1 2 139下面程序的输出结果是 。(1级) mian() int x=2,y=0,z; x*=3+2; printf(“%d”,x); x*=y=z=4; printf(“%d”,x); A)8 40 B)10 40 C)10,4 D)8,440下面程序的输出结果是 。(1级)main()int x=2,y=0,z; x+=3+2; printf(“%d”,x); x*=y=z=4; printf(“%d”,x); A)7 28 B)无法计算 C)7,4 D)8,441下面程序的输出结果是 。(1级)main()int x=4,y=0,z; x*=3+2; printf(“%d”,x); x*=y= =(z=4); printf(“%d”,x); A)14 40 B)20 0 C)20 4 D)14 442下面程序的输出结果是 。(1级)main()int i,j; i=16;j=(i+)+i;printf(“%d”,j); i=15;printf(“%d %d”,+i,i);A)32 16 15B)33 15 15C)34 15 16D)34 16 1543在C语言中,以下合法的字符常量是 。(1级)A)084 B)x43 C)0 D)044若已定义X和Y为double类型,则表达式:x=1,y=x+3/2的值为 。(1级)A)1 B)2 C)2.0 D)2.545下列程序的执行结果是 。(1级)#include#define sum 10+20main()int b=0,c=0;b=5;c=sum*b;printf(%d,c);A)100 B)110 C)70 D)15046.下列程序的执行结果是 。(1级)#include#define sum(10+20)mian()int a=0,b=0,c=0;a=sum;b=5;c=sum*b;printf(%d,c);A)100 B)110 C)70 D)15047表达式(int)2.1416的值为 。(1级)A)2 B)2.1 C)0 D)348表达式(double)(20/3)的值为 。(1级)A)6 B)6.0 C)2 D)349. 在下面几组数据类型中, 全是基本数据类型是哪一组 。(0203第一学期试题)A)整型 实型 字符型 B)整型 数组 指针C)数组 结构体 共用体 D)指针 逻辑型 空类型50. 以下说法正确的是 。(0203第一学期试题)A)在C程序中, 每行只能写一条语句.B)在C程序中, 无论是整数还是实数, 其存放形式都一致.C)在C程序中, %是只能用于整数运算的运算符.D)在C程序中, 变量可以不必先定义就可使用.51. 假设所有变量均为整型, 则表达式( a=5, b=2, a+, a+b ) 的值是 。(0203第一学期试题) A)8 B)7 C)6 D)552. 若有以下定义, 则正确的赋值语句为 。(0203第一学期试题)int a, b ;float x; A)a=1, b=2, B)b+;C)a=b=5 D)b= int (x) ;53. .C语言规定标识符由 等字符组成. (0102第二学期试题))字母数字下划线 )中划线字母数字)字母数字逗号 )字母 下划线 中划线54. 若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式:(float)(a+b)/2+(int)x%(int)y的值是 。(0102第二学期试题)A)2.500000 B)3.500000 C)4.500000 D)5.00000055. 以下表达式: 2+a+i*f, 其中i为整型变量,f为float型变量,则表达式的最终数据类型为 。(0102第二学期试题)A)int B)float C)char D)double56. 若有:int a,b=2;则a=(b*100+1.5,100)则a的值是 。(0102第二学期试题)A) 100 B) 100.5 C)200.5 D) 300.557. 有如下语句: printf(“%s,%5.3sn”,“COMPUTER”,“COMPUTER”);执行语句后的最终结果为 。(0102第二学期试题)A)COMPUTER ,CMP . B)COMPUTER, CMP.C)COMPU, CMP. D)COMPU, CMP58. 已知ch是字符型变量,下面不正确的赋值语句是: 。(03试题) A)ch=0 B)ch=a+bC)ch=7+9 D)ch=7+959. 若x和y都为float型变量,且x=3.6, y=5.8 执行下列语句后输出结果为: 。(03试题) printf(“%f”,(x,y);A)3.600000 B)5.800000 C)3.600000,5.800000 D)输出符号不够,输出不正确值60.设变量a是整型,变量f是实型,变量I是双精度型,则表达式 10 + a+I * f 值的数据类型: 。(往届试题)A)int B)float C)double D)不确定61. 已知字母A的ASCII码为十进制65,下面程序段的运行结果为: 。(往届试题)char ch1,ch2;ch1= A+5-3; ch2= A+6-3;printf(“%d, %cn”, ch1,ch2);A)67, D B)B, C C)C, D D)不确定值62.以下不正确的C语言标识符是 。(0405第二学期试题)A)ABC B)abc C)a_bc D)ab.c63.设x、y均为float型变量,则以下不合法的赋值语句是 。(0405第二学期试题)A) + + x; B)y = ( x%2 ) / 10; C)x * = y + 8; D)x = y = 0;64. 若有说明语句:char c= 64 ; 则变量C包含: 。(往届试题)A)1个字符 B)2个字符 C)3个字符 D)说明不合法,C值不确定。65. 表达式 18/4*sqrt(4.0)/8值的数据类型为 。(往届试题)A)int B)float C)double D)不确定66. 设整型变量a值为9,则下列表达式中使b的值不为4的表达式: 。(往届试题)A)b=a/2 B)b=a%2 C)b=8-(3,a-5) D)b=a5?4:267. 设有以下定义,则能使值为3的表达式是: 。(往届试题) int k=7, x=12; A)x%=(k%=5) B)x%=(k-k%5)C)x%=k D)(x%=k)-(k%=5)68. 以下选项中是C语言的数据类型的是: 。(往届试题)A)复数型 B)逻辑型 C)双精度型 D)集合型二、填空题1C语言的数据类型有四大类,分别是 、 、 、 。(0级)2C语言数据类型中构造类型包括三种,他们是 、 、 。(0级)3C语言基本数据类型包括 、 、 、 。(0级)4在C语言中,程序运行期间,其值不能被改变的量叫 。(0级)5在C语言中,常量有不同的类型,包括 、 、 和 等。(0级)6符号常量是指 。(0级)7整型常量和实型常量也称为 ,它们有正负之分。(0级)8在C语言中,在习惯上符号常量名用 ,变量用 。(大写或小写)(0级)9在C语言中,变量是 。(0级)10变量也有不同类型,如 、 和 等。(0级)11C语言在定义变量的同时说明变量的 ,系统在编译时就能根据变量定义及其 为它分配相应数量的存储空间。(0级)12在C语言中,用来标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符序列称为 。(0级)13在C语言中,标识符只能由 、 和 三种字符组成,且第一个字符必须 或 。(0级)14在 C语言中,要求对所有甬道的变量,遵循先定义后 的原则。(0级)15可以用来表示C的整常数的进制是 、 、 。(0级)16整型变量可分为 、 、 、 四种,分别用 。(0级)17在一个整常量后面加一个字母 和 ,则认为是long int 型常量。(0级)18在C语言中,实数有两种表现形式,是 和 。(0级)19实型变量分为 和 ,即float和double型。(0级)20C的字符常量是用 括起来的一个字符。(0级)21在一个变量定义语句中可以同时定义多个变量,变量之间用 隔开。(0级)22C语言中规定,在变量定义的同时也可以给变量赋初值,叫做 。(0级)23下面的程序mian()printf(abctderfgn);/*空白处分别为两个和一个空格*/printf(htibbjk); /*空白处为三个空格*/运行结果是 。(1级)24int型的取值范围是 。(0级)25在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能 输出,也可以 输出。(0级)26下面的程序main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c %c,c1,c2);运行结果为 。(0级)27在ASC代码表中可以看到每一个小写字母比相应的大写字母的ASC代码大 。(0级)28C的字符串常量是用 括起来的字符序列。(0级)29在C 语言中,系统在每一个字符串的结尾自动加一个“字符串结束标志符”即 ,以便系统据此数据判断字符串是否结束。(0级)30表达式10+a+1.5-0.5*b的结果 。(1级)31表达式10+a+1.5-567.345/b的结果是 型数据。(1级)32. 在TURBO中,单精度实数的取值范围在 之间。(1级)33在C语言中,加减乘除这些运算符需要两个运算对象,称为 运算符。34在C语言中,算术运算符的结合性是 。(1级)35下面的程序mian()float x;int i;x=3.6;i=(int)x;printf(x=%f,i=%d,x,i);运行结果为 。(1级)36如果int i=3,则printf(%d,-i+)执行后输出是 ,i的结果是 。(1级)37在C语言中,表达式的类型有 , , , , , 。(1级)38逗号表达式的形式如下:表达式1,表达式2则逗号表达式的结果是 的值.(1级)39表达式x=(a=3,6*3)和表达式x=a=3,6*a分别是 表达式和 表达式,两个表达式执行完的结果是 和 .执行后X的值分别是 , .(1级)40main()int i,j,m,n; i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%d,i,j,m,n);运行后i,j,m,n的值是 .(1级)41在C语言中的运算符优先级最小的是 运算符.(1级)42.在C语言中,可以利用 ,将一个表达式的值转换成指定的类型。 第三章 顺序结构程序设计一、选择题1.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将 ;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。(0级) A)不予输出 B)输出空格 C)照样输出 D)输出不定值或02.在 scanf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。如果类型不匹配,系统 。(0级) A)不予接收 B)并不给出出错信息,但不可能得出正确信息数据 C)能接受正确输入 D)给出出错信息,不予接收输入3.下列说法正确的是 。(0级) A)输入项可以是一个实型常量,如scanf(%f,4.8); B)只有格式控制,没有输入项也能进行正确输入,如scanf(a=%d,b=%d); C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%5.3f,&f); D)当输入数据时,必须指明变量的地址,如scanf(%f,&f);4.根据题目中已给出的数据的输入和输出形式,程序中输入/输出语句的正确是 。(1级)main()int a;float x;printf(input a,x:);输入语句输出语句输入形式 input a,x:3 2.1输出形式a+x=5.10A)scanf(%d,%f,&a,&x); printf(na+x=%4.2f,a+x);B)scanf(%d %f,&a.&x); printf(na+x=%4.2f,a+x);C)scanf(%d %f,&a,&x); printf(na+x=%6.1f,a+x);D)scanf(%d %3.1f,&a,&x);printf(na+x=%4.2f,a+x);5.以下程序的输出结果是 。(1级)main()int i=010,j=10,k=0x10;printf(%d,%d,%dn,i,j,k);A)8,10,16 B)8,10,10 C)10,10,10 D)10,10,166.以下程序的输出结果是 。(1级)main()int i=011,j=11,k=0x11;printf(%d,%d,%dn,i,j,k);A)9,11,17 B)9,11,11 C)11,11,11 D)11,11,167.以下程序的输出结果是 。(1级)#includemain()printf(%dn,NULL);A)不确定的值(因变量无定义) B)0C)-1 D)18.以下程序的输出结果是 。(1级)main()char c1=6,c2=0;printf(%c,%c,%d,%dn,c1,c2,c1-c2,c1+c2);A)因输出格式不合法,输出出错信息 B)6,0,6,102C)6,0,7,6 D)6,0,5,79.设有如下定义int x=10,y=3,z;则语句printf(%dn,z=(x%y,x/y);的输出结果是 。(1级)A)3 B)0 C)4 D)110.设有如下定义int x=10,y=5,z;则语句printf(%dn,z=(x+=y,x/y);的输出结果是 。(1级)A)1 B)0 C)4 D)311.以下程序的输出结果是 。(1级)main()int x=10,y=10;printf(%d %dn,x-,-y);A)10 10 B)9 9 C)9 10 D)10 912.写出下面程序的输出结果 。(1级)main()int x;x=-3+4*5-6;printf(%d,x);x=3+4%5-6;printf(%d,x);x=-3*4%6/5;printf(%d,x);x=(7+6)%5/2;printf(%d,x);A)11 1 0 1 B)11 -3 2 1 C)12 -3 2 1 D)11 1 2 113.写出下面程序的输出结果 。(1级)main()int x,y,z;x=y=1;z=x+-1;printf(%d,%dt,x,z);z+=-x+ +(+y);printf(%d,%d,x,z);A)2,0 3,0 B)2,1 3,0 C)2,0 2,1 D)2,1 0,114.写出下面程序的输出结果 。(1级)main()int i,j;i=20;j=(+i)+i;printf(%d,j);i=13;printf(%d %d),i+,i);A)42 14,13 B)41 14,14 C)42 13 13 D)42 13 1415.若有定义:int x,y;char a,b,c;并有以下输入数据(此处,代表换行符)1 2A B C则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是 。(1级)A)scanf(x=%dy=%d,&x,&y);a=getchar();b=getchar();c=getchar();B)scanf(%dy%d,&x,&y);a=getchar();b=getchar();c=getchar();C)scanf(%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c);D)scanf(%d%d%c%c%c,&x,&y,&a,&b,&c);16.若已知a=10,b=20,则表达式!ab的值为 。(1级)A)10 B)20 C)1 D)017.printf函数中用到格式符%4s,其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为 。(1级)A)从左起输出该字符串,右补空格 B)按原字符长从左向右全部输出C)右对齐输出该字符
收藏