c语言程序设计习题集
更新时间:2024-04-03 16:24:01 阅读量: 综合文库 文档下载
1.1.2 C语言基础
一 单项选择题
1.下列变量定义中合法的是_____。
A. int _b=1—.e—3; B. double b=2—6e5.5; C. long x=8.8; D. float 2_and=1—e—4;
答案:C
2.运算符有优先级,在C语言中关于运算符优先级的正确叙述是_____。 A.算术运算符高于赋值运算符,赋值运算符高于位运算符 B.算术运算符高于双目位运算符,位运算符高于赋值运算符
C位运算符高于算术运算符,算术运算符高于赋值运算符 D.赋值运算符高于位运算符,位运算符高于算术运算符 答案:B
3.C语言并不是非常严格的算法语言,在以下关于C语言的不严格的叙述中,错误的是_____。 A.任何不同数据类型都不可以通用
B.有些不同类型的变量可以在同一个表达式中运算
C.在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D.同一个运算符号在不同场合可以有不同的定义 答案:A
4.以下选项中属于C语言的数据类型是_____。
A.复数型 B.逻辑型 C.双精度型 D.集合型 答案:C
5.设有说明语句:char m=?\\63?;则变量m____。
A.包含1字符 B.包含2个字符 C. 包含3字符 D. 说明不合法 答案:A
6.下列常数中不能作为C语言的常量是_____。 A.0XA6 B.3.4e—3 C.3e5 D.0683 答案:D
7.在C语言中,数字031是一个_____。
A.八进制数 B.十六进制数 C.十进制数 D.非法数 答案:A
8.下列可以正确表示字符型常量的是_____。
A. 'a' B.'\\t' C.'\\n' D.'\\185' 答案:B
9.设有int a=9;则表达式(++a*2/3)的值是__________。 A.6 B.7 C.6.6 D.0
答案:A
10.已知int a;float f;正确的表达式是__________。
A.(int f)%a B. int(f)%a C. int(f%a ) D. (int)f%a 答案:D
11.设有以下变量定义,并已赋确定的值,则表达式x-y+a/b值的数据类型 为__________。
char x;int y;float a;double b;
A.char B. int C. float D. double 答案:D
12.已知int i,a;执行语句i=(a=3*9,a/5),a+11;变量i的值是__________。 A.5 B.16 C.27 D.38 答案:A
13.已知int i=4; 执行语句i+ =--i;i的值是 __________。 A.3 B.6 C.8 D.以上都不对 答案:B
14.下列运算符优先级最高的是 __________。 A.^ B.+ C.& D.| 答案:B
15.已知:float x=2,y;则:y=x++*x++的结果为__________。 A.y=4 B.y=6 C.y=2 D.表达式是错误的 答案:A
16.设char型变量x中的值为二进制10100111,则表达式(2+x)^(~3)的值 是__________。
A.10101001 B.10101000 C.11111101 D.01010101 答案:D
17.整型变量x和y的值相等,且非零值,则以下选项中,结果为零的表达式 是__________。
A.x||y B.x|y C.x&y D.x^y 答案:D
18.设int b=8;表达式(b>>2)/(b>>1)的值是___________。
A.0 B.2 C.4 D.8 答案:A
19.若定义unsigned int a=3,b=10;printf(“%d\\n”,a<<2|b==1);则运行结果为___________。 A.13 B.12 C.8 D.14 答案:B
20.有如下程序段,执行该程序后x的值为___________。
int a=14,b=15,x; char c=?A?;
D.2
x=(a&b)&&(c^?B?); A.14 B.15 C.0 答案:D
21.若变量a,b,t,已定义,能正确交换a,b值的语句组是___________。 A.a=b;b=t;t=a B.a=t;t=b;b=a C.a=a+b;b=a-b;a=a+b D.a=a^b;b=a^b;a=a^b 答案:D
22.在C语言中,设一表达式中包含有int,long,char和unsigned类型的变量和数据,则这4种类型数据转换的规则是___________。 A.int→unsigned→long→char B.char→int→long→unsigned C.char→int→unsigned→long D.int→char→unsigned→long
答案:C
23.若变量a是int类型,执行语句: a=?A?+1.6;
后,正确的叙述是___________。 A.a的值是字符C B.a的值是浮点型 C.不允许字符型和浮点型相加 答案:D
D.a的值是字符?A?的ASCII值加上1
24.以下描述中不属于C语言类型的是___________。
A.signed short int B.unsigned long int C.unsigned int 答案:D
A.printf(“a=?\\n”,a); C. printf(“a=?L\\n”,a); 答案:B
B. printf(“a=\\n”,a);
D.long float
25.设有定义:long a=-123456L;,则以下能够正确输出变量a值的语句是___________。
D .printf(“a=%LD\\n”,a);
二、填空题
1.在C语言程序中,用关键词__定义基本整形变量,用关键词__定义单精度实型变量,用关键词__定义双精度实型变量。
答案:int float double
2.若K为int整形变量且赋值18,则y=k++;后y的值为__,变量k的值为__。 答案:18 19
3.在C语言中整数可用__进制数、__进制数和__进制数三种数制表示。
答案:十 八 十六
4.设变量a的二进制是00101101,若想用通过运算a^b使a的高4位不变,低4位取反,则b的二进制数应是__。 答案:00001111
5.运用位运算,能将变量ch中的大写字母转换成小写字母的表达式是__。 答案:ch^32(或ch|32)
6.能将两个字节变量x的低8位置全1,高字节保持不变的表达式是__。 答案:x|255
7.若a为任意数,能将变量a清0的表达式是__。 答案:a=a&0
8.把操作对象的二进制数向左移动n位,相当于对原来的数值__2。 答案:乘
9.根据储存长度的不同,c语言中的整型可分为:基本类型﹑_____和长整型 。 答案:短整型
n
10.一个字符通常占用_____字节的内存空间。
答案:1
11.实型常量有两种表示方法:小数形式和_____。 答案:指数形式
12.以_____开头的一个字符和一个数字序列,这类字符称为转义字符。 答案:反斜杠\\
13.一个变量有3个相关的要素:变量名﹑_____和变量的值。 答案:变量的储存单元
14.a%b的结果为a除以b的余数的符号与_____相同。 答案:被除数
15.由算术运算符﹑括号以及操作对象组成的符合c语言语法规则的表达式称为_____。 答案:算术表达式
16.C语言中按位异或运算符为______。 答案:^
17.表达式(a=5-3/2,a*6),a++10的值为______。 答案:14
18.表达式3&5-4|5+2^7+~3的值为_____。 答案:1
19.表达式2>>3-3<<2的值为______。 答案:8
20.表达式-5|5&3的值为______。 答案:-5
1.1.3顺序结构程序设计
选择题.
1. 若x.y.z都定义成int类型且初值为0,则以下不正确的复制语句_________。 A.x+=y+2; B,x=y=z+10; C,++z; D,x+y=z; 答案 D;
2.下面不是C的是_______.。
A. int i; B. ; C. a=58,b=58 D.{;} 答案 C;
3.以下合法的C语言赋值语句是________。 A.a=b=58; B.k=a+b; C.a=58.b=58; D.- - i; 答案 D;
4.设x,y,z为整形变量,若从键盘给x,y,z输入数据,则正确的输入语句是________。 A.INPUT x,y,z; B,scanf(“%d%d%d”,&x&y&z); C.scanf(“%d%d%d”,x,y,z); D.read(“%d%d%d”,&x,&y,&z); 答案 B;
5.若变量以明确说明为int类型,要给a,b,c输入数据,则正确的输入语句是_______。 A.scanf(“%d%d%d”,&a,&b,&c); B.scanf(“%d%d%d”,a,b,c); C.scanf(“%D%D%D”,&a,&b,&c); D.scanf(“%d%d%d”,&a;&b;&c); 答案 A;
6.设以下各变量均为int类型,则以下函数调用正确的是_______.。
A,getchar(); B.putchar(); C.putchar(?\\108?); D.scanf(“%d%d%*2d”,&a;&b); 答案 A;
7.下列程序的输出结果是_________。 main()
{int x=023;
prinf(“%d\\n”,- - x);}
A .22 B.23 C18 D. 19 答案 C;
8 .下列程序的输出结果是_________。 main()
{int a=1 , b=2 ;
printf(“%d\\n”,a=a+1,a+6,b+2); } A.2 B. 3 C.4 D.1 答案 A;
9 .下列程序的输出结果是_________。 main()
{int a=1 , b=2 ; printf(“%d\\n”,(a=a+1,a+6,b+2)); } A.2 B. 3 C.4 D.1 答案 C;
10.已知a,b,c为float类型,执行语句:scanf(“%f %f %f”,&a,&b,&c);使得a为10,b为20,c为30,则以下不正确的输入形式是__________. A 10 B.10.0 20 30
C/10.0 D10 20
20.0 30.0 30 答案 B;
11.若变量已正确定义,现要将a 和b 中的数据进行交换,下面不正确的是()
A.a=a+b,b=a-b,a=a-b B.t=a,a=b,b=t C.a=t;t=b;b=a D.t=b;b=a;a=c 答案:C
12.执行下列程序后输出结果是() main() {
int a=1,b=2,c=3;
c=(a+=a+2),(a=b,b+3);
printf(“%d,%d,%d\\n”,a,b,c); }
A.2,2,4 B.4,2,3 C.4,2,5 D.5,5,3 答案:A
13.执行下面程序: Main() { Int a;
Float b,c;
Scanf(“-?O”,&a,&b,&c);
Printf(“\\na=%d,b=%.1f,c=%.1f\\n”,a,b,c);
}
运行时,从键盘上输入12345654321 ,则输出结果是() A a=12, b=345, c=6543. B. a=12, b=123, c=1234
C.a=12 b=345.0, c=6543.0 D. a=12.0 b=345.0 c=6543.0 答案:C
14.执行下面程序: Mian()
{
Int a=3, b=7;
Printf(“a=%%d,b=%%d\\n”,a,b);
}
则输出结果是()
A. a=%3, b=%7 B a=%d, b=%d C. a=%%d , b=%%d D.a=3, b=7 答案:B
15.下面程序输出的结果是() #include
Short a=-1;
Printtf(“%hd,%ho,%hu\\n”,a,a,a); }
A -1, -1, -1. B.-1, -77777, -32768
C. -1, 177777, -32768 D. -1, 177777, 65535 答案:D
16.下列程序执行后的输出结果是__________。 main() {int x=?d?;
printf(“%c\\n”,?A?+(x-?a?+1));}
A. G B. H C. E D. J 答案:C
17.若有以下程序段,执行后的输出结果是_____。 Int a=3;
printf(“%d\\n”,(a+=a-=a*a));
A.—6 B.12 C.0 D.—12 答案:D
18.下列程序的输出结果是_________。 main() {float d=2.2; Int x,y;
x=6.2;
y=(x+3.8)/5.0;
printf(“%d\\n”,d*y);}
A. 4 B. 随机数 C. 2 D. 0 答案:B
19.运行下面程序后,输出结果是__________。 main()
{int a=5,b=3;
printf(“%d\\n”,a=a/b);}
A. 5 B. 1 C. 3 D. 2 答案:B
20.有以下程序,请问执行后的输出是_______。 main()
{int a=010,b=10,c=0x10;
printf(“%d,%d,%d”,a- -,++b,c++);}
A. 8,10,16 B. 8,11,16 C. 7,10,17 D. 8,10,17 答案:B
填空
1. 函数getchar()的功能是____________,其调用形式ch=getchar()与_____________功能相
同;函数outchar()的功能是___________,putchar(ch)与_________功能相同。这两个函数在使用的同时,都必须在main函数之前写入_________。
答案:从键盘读入一个字符 scanf(“%c”,&ch) 在屏幕上输出一个字符
Printf(“%c”,ch) #include
“%c”表示__________,“%s”表示________“%o”表示__________.
答案:按十进制整数形式输出,有字符
按十六进制整数形式输出,没有字符
按十进制小数形式输出,输出的数据长度为7,有2位小数 按字符形式输出一个字符
按字符串形式输出一个字符串
按八进制整数形式输出,没有字符
3. 在scanf()函数中,“%d”表示_______,“=”表示_________,“%*3d”表示____________,
“%c”表示__________.
答案:按十进制整数形式输入数据
按十进制整数形式输入3位数据 跳过3位十进制数据
按字符形式输入一个字符
4. 复合语句在语法上被认为是___________,空语句的形式是____________,c语言中,语句
的标志是________. 答案:分程序 ; ; 5. printf函数中用到格式%5s,其中5表示输出字符占5列,如果字符串长度大于5,则按
________输出;如果字符串小于5,则按_________输出. 答案:实际宽度 左边补空格
6.以下程序段的输出结果是 Int x=0177;
Printf(“x==,x=m,x=`,x=%6x,x=%6u\\n”,x,x,x,x,x); 答案x=127,x=127,x=177,x=7f,x=127
7.变量I,j,k已经定义为int型并有初值0,用以下语句输入时:scanf(“%d”,&i); Scanf(“%d”,&j);scanf(“%d”,&k);当执行第一个输入语句,从键盘输入:12.3,则i,j,k的值分别是 答案:12, 0 , 0 .
8.执行以下程序:运行结果为. #include
Char x=?k?;
Printf(“%c\\n”,?A?+(x-?a?+1)); }
答案:L_
9.执行以下程序,运行结果为 Main() {
Char x=oxFF;
Printf(“%d\\n”,x--);} 答案:_-1_
10.执行以下程序,运行结果为 {Int y=3,x=3,z=1;
Printf(“%d%d\\n”,(++x,y++),z+2);} 答案: _3____3
1.1.4选择结构程序
一 单项选择题
1.若x为int类型,则下面与逻辑表达式!x等价的C语言关系表达式是_____。 A.x==1 B. x!=1 C. x==0 D. x!=0 答案是__________ 答案是:C
2.能正确表示逻辑关系:“a>=5或a<=—1”的C语言表达式是_____。 A.a>=5 or a<=—1 B. a>=5 | a<=—1 C.a>=5&&a<=—1 D. a>=5 || a<=—1 答案是:D
3.If语句的控制条件是______。
A. 只能用于关系表达式 B. 只能用于关系表达式或逻辑表达式 C. 只能用于逻辑表达式 D. 可以用任何表达式 答案是:D
4. 设int x=2, y=1;则表达式(!x || y--)的值是______。
A.0 B.1 C.2 D.-1 答案是:B
5.与y=( x>0 ? 1: x<0 ? -1 : 0 ); 的功能相同的if语句是_______ 。 A. if (x>0) y=1 ; B. if (x)
else if(x<0) y=-1; if (x>0) y=1;
else y==0; else if(x<0) y=-1; else y=0;
C. y=-1; D. y=0;
if(x) if(x>=0)
if(x>0) y=1; if(x>0) y=1; else if(x==0) y=0; else y=-1; else y=-1; 答案是:A
6. 假定w、x、y、z、m均为整形变量,且w=1,x=2,y=3,z=4则执行语句: (m=(w A. 4 B. 4 C. 2 D. 1 答案是:D 7. 有如下程序段,执行该程序段后,x的值为______。 int a=14 , b =15, x ; char c=`A` ; x=(a&&b)&&(c<`B`) ; A. ture B. false C. 0 D. 1 答案是:D 8. 设均为型变量,则执行语句:x=y=2 ; t= ++ x || ++y; 后;y的值为 ________。 答案是:B A. 不确定 B. 2 C. 3 D. 1 答案是:B 9. 若有定义:float w; int a, b; 则合法的switch语句是_________。 答案是:C A. swith (w) B. switch (a); {case 1.0: printf(“ * \\n”); {case 1 printf(“ *\\n”); Case2.0: printf(“ * * \\n”);} case 2 printf(“ * *\\n”);} C. swith (b) D. swith (b) {case 1: printf(“ * \\n”); {case 1: printf(“ * \\n”) default: printf(“ \\n ”); case 2 printf(“ * *\\n”) case1+2: printf(“** \\n”);} default: printf(“ \\n ”)} 答案是:C 10.若给定条件表达(m)? (a++): (a——) 则其中表达m和______等价。 A.m==0 B. m==1 C. m!=0 D. m!=1 答案是:C 11. 有如下程序,该程序胡输出结果是( ) main () { int a=3,b=-1,c=1; If(a printf(“%d\\n”,c); } A. 0 B.1 C. 2 D.3 答案是:B 12. 若变量c为 char l类型,能正确判断出c为大写字母胡表达式是________ A ?A? <=C<=?Z? B (c>=‘A’)||(c<=’z’) c.(‘a’<=c) and (‘Z’>=C) D (c>=‘A’)&&(C<=‘Z’) 答案是:D 13. 在C语言中,逻辑值“真”用( )表示。 A ture B 正数 C非0整数 D 非0数 答案是:D 14.设a,b,c,d,m,n均为整型变量,且a=5,b=7,c=3,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( ) A 0 B 1 C 2 D 4 答案是:C 15.有如下程序,其输出胡结果是( C ) main() { float x=5.0,y; if(x<0.0) y=0.0; else if (x<10.0) y=1.0/x; else y=1.0; printf(“%f\\n”,y);} A. 0.000000 B. 5.000000 C. 0.200000 D. 1.000000 答案是:C `16.运行下面程序后,则输出结果是_________。 Main() {int a=0,b=1,c=2,d; d!=a&&!(--b)||!c++; printf(“%d\\n”,c);} A.3 B.2 C.1 D.0 答案是:B 17.运行下面程序后,若从键盘输入58↙,则蔬输出结果是__________。 Main() {int x, ; Scanf(“%d”,&x); If(x>60)printf(“%d”,x); If(x>40)printf(“%d”,x); If(x>30)printf(“%d”,x); A.585858 B.5858 C.58 D.58 答案B 18. 运行下面程序后,输出结果是________。 Main() {int a=16,b=21,m=0; Switch(a%3) { case 0:m++;break; Case 1:m++; Switch(a%2) { default : m++; Case 0: m++;break;} } Printf(“%d\\n”,a,b);} A.1 B.2 C.3 D.4 答案是:C 19.下面程序输出的结果是__________。 Main() { int x=5,y=9,z=1,t; t=(x>y||x>z); printf(“%d\\n”,t)?} A.1 B.0 C.5 D.3 答案是:A 20.下面程序输出的结果是__________。 Main() { int x=1,a=0,b=0; Switch(x) {case 0: b++; Case 1: a++; Case 2: a++,b++; } Printf(“a=%d,b=%d\\n”,a,b); } A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 答案是:A 21.以下程序输出的结果是________-。 Main() { int I,j,k,a=3,b=2; I=((--a=b++)?—a:++b); J=a++,k=b; Printf(“i=%d,j=%d,k=%d\\n”,I,j,k); } A.a=2,j=1,k=3 B.i=1,j=1,k=2; C.i=4,b=2,k=4 D.i=1,j=1,k=3 答案是:D 22.下面说法中正确的是_______。 A.在switch语句中一定要使用break语句 B.break语句是switch语句的一部分 C.break语句只能用于switch语句 D.在switch语句中不一定要使用break语句 答案是:D 23.有以下程序,若从键盘上输入7,则输入结果是_______。 main () { int x; scanf(“%d”,&x); if(x--<7) printf(“%d”,x); else printf(“%d”x++)} A.0 B.6 C.7 D.8 答案是:B 24.以下程序输出结果是_______。 main() { int m=5; if(m++>5) printf(“%d\\n”,--m); else printf(“%d\\n”--m);} A.7 B.6 C.5 D.4 答案是:C 25.当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为________。 if(a if(c else x=7; A.1 B.2 C.3 D.6 答案是:B 26.设int a=0,b=0,c=0;c=++a||b++;则a,b,c的值分别是________。 A.0,1,0 B.1,1,1 C.1,1,0 D.1,0,1 答案是:D 27.设int a=0,b=0,c=0;c=++a&&b++;则a,b,c的值分别是_______。 A.0,1,0 B.1,1,1 C.1,1,0 D.1,0,1 答案是:C 28.设int a=0,b=0,c=0;c=a++||b++;则a,b,c的值分别是_______。 C.1,1,0 D.1,0,1 A.0,1,0 B.1,1,1 答案是:C 29.设int a=0,b=0,c=0;c=a++&&b++;则a,b,c的值分别是 。 A.0,1,0 B.1,1,1 C.1,1,0 D.1,0,0 答案是:D 30.最适合解决选择结构“若a>=0, 则b=1;否则b=0”的语句是 。 A.if B.if——else C.switch D.嵌套if——else 答案是:B 二.填空题 1.在C语言中,逻辑“真”用 表示,逻辑“假”用 表示,逻辑表达式值为“真”是用 表示的,逻辑表达式值为“假”用 表示的。在C语言中if语句中,用作判断的条件表示式 。 答案是:非0,0,1,0,任意表示式 2.if(!k)a=3;语句中的k可以改写为 ,使其功能不来变。C语言中于嵌套if语句中规定else总是与 配对。 答案是:k==0,前一个if 3.设a=3,b=4,c=5,写出下面逻辑表达式的值。 a+b>c&&b==c的值是 。 a||++c&&b-c的值是 。 !(a>b)&&!c||1的值是 。 !(x=a)&&(y=b)&&0的值是 。 !(a+b)+c-1&&b+c/2的值是 。 答案是:0,1,1,0,1 4.输入一个正整数,判断其若既是7的倍数又是8的倍数,则输出“正确”,否则输出 “错误”,请填空。 #include {int n; Printf(“please input a number:”) Scanf(“%d”,&n); If(_____) Printf(“正确”); ________ Printf(“错误”); } 答案是:n%7= =0&&n%8==0 (或nV= =0) else 5.完善程序,从键盘输入字符,若是数字字符,则转换成数字后显示出来。 #include c=getchar(); If(___________)____________; Printf((“%d”,c); } 答案是:c>=`0`&&c<=`9` c=c-`0` 6.能正确表示逻辑关系:“1≤a≤5”的C语言表达式是_____________;能表述20 答案是:a>=1&&a<=5 x>20&&x<30 || x<-100 7. 若x为整型,表示x为奇数的表达式是___________________, 表示x为偶数的表达式是___________________. 答案是:x%2==1 x%2==0 8.设x,t均为int型标量,则执行语句“x=10;t=x&&x>10;”后,t的值为__________________. 答案是:0 9.假定所有变量均已正确定义,则程序段: Int a=0,y=10; If(a=0)y--;else if(a>0) y++;else y+=y; 运行后y的值是_______________. 答案是:20 10.以下两条if语句可合并成一条if语句,既______________________________. if(a<=b) x=1; else y=2; if(a>b> printf(“* * *y=%d\\n”,y); else printf(“* * *x=%d\\n”,x); 答案是:if(a<=b) printf(“* * * x=%d\\n”,x=1); else printf(“* * * y=%d\\n”,y=2); 1.1.5循环结构程序 一、选择题 1. 以下while循环中,循环体执的次数是_______。 t=1; while(- -t)t=10; A.一次也不执行 B.无限次 C.10次 D.一次 答案:A 2. 语句x=3;do{printf( “%d”,x)};x - -;}while(x= =0);的执行结果是______。A.3210 B.321 C.3 D.无任何显示 答案:C 3.若x是int型变量,以下程序段的输出结果是______。 For(x=3;x<6;x++) printf((x%2)?(“**%d”):(“##%d\\n”,x); A.**3 B.##3 C. ##3 D.**3##4 ##4 **4 **4##5 **5 **5 ##5 答案:D 4.C语言中用于此结构化程序设计的三种基本结构是_____。 A.顺序结构、选择结构、循环结构 B.if、switch、break C.for、while、do-while D.if、for、continue 答案:A 5.对于下面的程序段,_____是正确的。 for(t=1;t<=100,t++) {scanf(“%d”,&x); if(x<0)continue; printf(“=”,x); } A.当x<0时整个循环结束 B.当x>=0时什么也不输出 C.printf函数永远也不执行 D.最多允许输出100个非负整数 答案:A 6.while(!x)中(!x)与下面条件_____等价。 A.x==0 B.x==1 C.x!=1 D.x!=0 答案:A 7.在C语言中的循环语句for、while和do-while中,用于直接中断语句所在层循环的语句是____。 A.switch B.continue C.break D.if 答案:C 8.以下程序的输出结果是______。 main() { int y=10; for(;y>0; y--) if(y%3==0){printf(“%d”,--y);continue;} } A.741 B.852 C.963 D.875421 答案:A 9. 下面程序段的运行结果是_____。 a=1 ; b=2 ; c=2; wwhile (a A. 1,2,0 B. 2,1,0, C. 1,2,1 D. 2,1,1 答案是 A 10.设有程序段: int k=10; while(k=0) k=k-1; 以下描述正确的是____。 A.循环体语句依次也不执行 B. 循环是无限循环 C. while 循环语句执行十次 D. 循环体语句执行一次 答案是 A 11.下面程序的运行结果是_____. #include “stdio.h” main() { int a=1, b=10; do { b-+a; a++;} while (b--<0); Pritf ( “a=%d, b=%d \\n”), a , b);} A. a=3 , b=11 B. a=4 , b=9 c. a=1 , n= -1 D. a=2 , b=8 答案是 D 12.下面程序段的运行结果是_____.。 A=1; b=2; c=2 ; If (a A. 1,2,0 B. 2,1 0 C. 1,2,1 D. 2,1,1 答案是 D 13.设有如下程序,运行结果是______。 main() {int y=10; for(;y>0;y--) if (y%3= =0) printf(“%d,- -y”);} A.8 5 2 B. 9 6 3 C. 10 6 3 D. 7 4 1 答案 A 14.以下程序段的输出结果是______. int x=3; do { printf(“=”,x-=2);} while (!(- - x)); A.1 0 B. 3 -2 C. 1 -2 D. 1 答案 C 15. 以下程序段的输出结果是______. Int k, sum ; for (k=1; k<6; k++) sum+=sum; printf (“%d,%d\\n”, k, sum); A. 15 B. 14 C. 不确定 D . 0 答案是 C 16. 执行下面的程序后,a的值为______。 Main () {int a,b; for (a=1, b=1;a<100;a++) { if (b>=20) break; if (b%3==1) { b+=3; continue;} B-=5; } printf (“%d” , a); } A. 7 B. 8 C.9 D.10 答案是B 17、以下程序段的输出是____。 int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4) m++; printf(“%d\\n”,m); A.12 B.15 C.20 D.25 答案:C 18、定义如下变量:int n=10;则下列循环的输出结果是_____。 while(n>7) { n--; printf(“%d\\n”,n);\\ } A.10 B.9 C.10 D.9 9 8 9 8 8 7 7 7 6 答案:B 19.对for(表达式1; ;表达式3)可理解为_____。 A. for(表达式1;0 ;表达式3) B. for(表达式1;1 ;表达式3) C. for(表达式1;表达式1 ;表达式3) D. for(表达式1;表达式2 ;表达式3) 答案:B 20.有以下循环: int i; for(i=0;i<10;i++) i++; 循环次数为______。 A.10 B.5 C.6 D.7 答案:B 21.main() { int y=10; while(y--) ;printf(“y=%d\\n”,y); } 程序执行后的输出结果是____-。 A.y=0 B.y=-1 C.y=1 D.while 构成无限循环 答案:B 22.有以下程序: main() {int I,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<=3;j++) { if(J%2)continue; x++; } x++; } printf(“x=%d\\n”,x); } 程序执行后的输出结果是____。 A.x=4 B.x=8 C.x=6 D.x=12 答案:B 23.执行for(i=0;i<10;i++);结束后,i的值是____。. A.9 B.10 C.11 D.无限次 答案:B 24、若K为整型变量,则下面while循环执行的次数为______。 K=10; while(K==0) K=K-1; A.0 B.1 C.10 D无限次 答案:A 25.设整型变量y值为3,执行下列循环语句后,变量y的值是_____。 do{++y; }while(++<4); A.3 B.4 C.5 D.6 答案:C 26.语句while(e==0)等价于_____。 A.!e B.e!=1 C.e!=0 D.~e 答案:A 27.下面程序的输出结果是______。 main() { int s,k; for(s=1,k=2;k<5;k++) s+=k; printf("%d\n"s); } A.1 B.9 C.10 D.15 答案:C 28、要使下面程序段输出10个整数,则在下划线处填入正确的数是_______。 for(i=0;i<=____;) printf(“%d\\n”,i+=2); A.9 B.10 C.18 D.20 答案:C 29、以下叙述正确的是______。 A.do-while语句构成的循环不能用其他语句构成的循环代替 B.do-while语句构成的循环只能用break语句退出 C.用do-while语句构成的循环,在while后的表达式为非零时结束循环 D.用do-while语句构成的循环,在while后的表达式为零时结束循环 答案:D 30、有以下程序 main() { int x=3; do { printf(“%d”,x--); }while(!x); } 该程序的执行结果是 A.3 2 1 B.2 1 0 C.3 D.2 答案:C 二、填空题 1、下面程序是求整数m的所有素数因子,并输出。例如:m为120时,输出的素数因子:2,2,2,3,5。 程序如下: main() { int k=2,m; printf(“请输入m”); scanf(“%d”,&m); while(k<=m) if(m%k____) {printf(“%d,”k); ______; } else _________; } 答案:m%k==0 m=m/k k++ 2、下面程序的运行结果为______ main() { int i=0,j=0; while(i<10) i++; while(j++<0); j++; printf(“\\ni=%d,j=%d\\n”,i,j); } 答案:i=10,j=2 3、下面程序的运行结果为_____ main() { int i=10,s=0; for (;--i;) if (i%3==0) s+=i; s++; printf(“\\ns=%f”,s); } 答案:程序非法终止 4、下面程序段的运行结果为____ int i=1,s=3’ do { s+=i++; if(s%7==0) continue; else ++I; }while(s<15); printf(“%d”,i); 答案:8 5、下面程序的功能是输入任意整数n后,输出n行由大写字母A开始构成三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下: A B C D E F G H I J K L M N O 请填空完成该程序。 main() {int i,j,n;char ch=’a’; scanf(“%d”,&n); if(n<11) for(i=1;i<=n;i++) {for(j=1;j ______; } else printf(“n太大!\\n”) printf(“\\n”); } 答案:ch++ printf(“\\n”) 6、以下程序输入一行字符(以回车键结束输入),统计其中所有数字字符的个数。 #include “stdio.h” main() {char ch; int s=0; ch=getchar(); while(ch!___) {if(ch>=’0’____ch<=’9’) s++; _____; } printf(“%d\\n”,s); } 答案:while(ch!=’\\n’) && ch=getchar() 7、以下程序的功能是根据下面公式∏值(直到最后一项小于10^-5为止)。 ∏/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+? main() { double s=0,t=1; int n; for(___;t>=le-5;n++) {s=s+t; t=_______; } printf(“PI=%f”,2*______); } 答案:n=1 t=t*n/(2*n+1) s 8、下列程序输出200~300之间的全部素数的和,请填空。 #include {int i,j,f,s=0; for(i=201;i<=300;i+=2) {f=____; for(j=2;j<=i/2;j++) if(i%j==0) {f=0; ______; } if(_____)s+=i; } printf(“200~300之间的全部素数的和为%d\\n”,s); } 答案: f=1; break; if(f)s+=i; 9、以下程序的功能是求两个整数的最大公约数,运行时输入两个数。 #include int m,n,r,t; printf(\请输入两个整数m和n:\\n\scanf(\if( ) {t=m;m=n;n=t;} while( ) {m=n; ; } printf(\它们的最大公约数为%d\\n\ 答案:if(m 10程序输出以下图形,请填空。 1 23 456 7890 main() { int i=1,j; int_____; for(;_____;i++) {for(j=s;j<=s+i;j++) printf(“%d”,_____); s=s+I; printf(“\\n”); } } 答案:int s=1; for(;i<=4;i++) printf(“%d”,j); 11、以下程序输入一行字符(以回车结束输入),统计其中所有小写字母的个数,请填空。 #include “stdio.h” main() {char ch; int s=0; ch=getchar(); while(ch!=_____) {if(ch>=’a’_____ch<=’z’)s++; _________} printf(“%d\\n”,s); } 答案:’\\n’ && ch=getchar() 12.已知一个首项大于0的等差数列的前四项之和是26,积是880,下列程序输出该四项之值,请填空。 #include {int a1,sum,product,a2,a3,a4; for(a1=1;a1<=5;a1++) for(a2=1;a2<=5;a2++) {a3=2*a2-a1; a4=2*a3-a1; _____=a1+a2+a3+a4; _____=a1*a2*a3*a4; if(sum==26_____prioduct==880) printf(“a1=-,a2=-,a3=-,a4=-\\n”,a1,a2,a3,a4); } } 答案:sum product && 13.下列程序输出200~300的全部素数中,个位数是3的素数和,请填空。 #include {int i,j,f,s=0; for(i=201;i<300;i+=2) {f=____; for(j=2;j<=i/2;j++) if(i%j==0) {f=0; _______; } printf(“s=%d\\n”,s); } 答案:f=1 break f&&i?==3 14.百马百担问题。有100匹马驮100担货,大马驮3担,中马驮2担,小马驮 1担。下列程序输出大、中、小马的匹数,(大、中、小的匹数均不得为0),请填空。 #include {int i=1,j,k; While(j<33) {______; While(j<50-i) {k=100-i-j; If(i*3+j*2+k/2==100&&_____) Printf(“bi=%d,mid=%d,small=%d\\n”,I,j,k); _______; } i++; } } 答案:j=1 k%2==0 j++ 15.一个素数加上1000以后是43在倍数,下列程序输出满足这个条件在最小素 数,请填空。 #include {int n,f,I; n=3; While(_____) {f=1; For(i=2;i<=n/2;i++) If(n%i= =0) {f=0;break;} If(_____&&(n+1000)C= =0) {printf(“n=%d\\n”,n); ____; }n+=2; } } 答案:1 f break 16.以下程序打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数, 其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为种种原因153=13+33+53 。请填空。 Main() {int I,j,k,n; Printf(“水仙花数:”) ; For(n=100;n<=1000;n++) {i=_____; j=______ K=n; If(____) printf(“%d\\n”,n); } } 答案:n/100 n/10 i*i*i+j*j*j+k*k*k==n 17.有2个小于100的正整数a、b,a与b的和等于110,a的平方与b的平方 之和是6698,下面的程序输出满足上述条件的a、b的值(a main() {int i,j,a=0,b=0; for(i=1;i<100;i++) {for(j=1;j<100;j++) if(i+j==110&&i*i+j*j==6698) {a=_______; b_______; break;} if(____)break; } printf(“a=%d,b=%d\\n”,a,b); } 答案:a=i b=j a&&b n-1 18、以下程序计算s=1-1/(1+2)+1/(1+2+3)-1/(1+2+3+4)+?+(-1)/(1+2+3+? +n)的值(假设本题中的n=20)),请填空。 #include float s=0,s1; for(i=1;i<=20;i++) { ; for(j=1; ;j++) s1=s1+j; if(i%2==1) s+=1/s1; else ; } printf(\} 答案:s1=0; j 19、下面的程序输出以下图形(*前没有空格),请填空。 * ** *** **** *** ** * #include ; for(;i<4;i++) {j=0; while( ) {printf(\ printf(\} for(i=3;i>0;i--) {j=1; while( ) {printf(\printf(\ } } 答案:i=0 j<=i j<=i 20、下面的程序输出以下图形,请填空。 1000001 0100010 0010100 0001000 main() {int i,j; for(i=1;i<=4;i++) {j++; while(j<_____) {printf(“0”);j++} printf(“1”); for(j=1;j<=7-2*i;j++) printf(“0”); if(i<4) printf(“1”); _______; while(j<=i) {printf(“0”;j++) _________; } } 答案:i j=2 printf(“\\n”) 1.1.6数组 一、单项选择题 1.C语言中,一对数组下标的最小值是_____。 A .1 B.0 C.视说明语句确定 D.无固定下限 答案:B 2.设有数组定义:char array[]==“China0”.则数组array所占的空间为____字节。 A.4个 B.5个 C.6个 D.7个 答案:D 3.若有定义:char str[]= “ab\\n\\012\\\\\\n”;则执行语句printf(“%d”,strlen(str));后,输出结果是 。 A.3 B。4 C。6 D。12 答案C: 4.下列描述中不正确的是____。 A.字符数组中可以存放字符串 B.可以对字符型数组进行整体输入、输出 C.可以对整型数组进行整体输入、输出 D.不能在赋值语句中通过赋值运算“=”对字符数组进行整体赋值 答案:C 5.阅读下面初始化数组程序段: char a[]= “ABCDEF”; char b[]={‘A’,‘B’,‘C’,‘D’,‘E’,‘F’}; 则下面叙述正确的是______。 A.a和b完全相同 B.a和b只是长度相同 C.a和b不相同,a是指针数组 D.a数组长度比b数组长 答案:D 6.以下程序的输出结果是_____。 #include”stdio.h”; main() {int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p=[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2 printf(“%d\\n”,k); } A.20 B.21 C.22 D.23 答案:B 7.以下程序的输出结果是______。 #include “stdio.h” main() {int n[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0;j<2;j++) n[i+1][j+1]+=n[i][j]; printf(“%d\\n”,n[i][j]); } A.14 B.0 C.6 D.值不确定 答案:C 8.下面能正确将字符串 “Boy”进行完整赋值操作的语句是______。 A.char s[3]={‘B’,‘o’,‘y’}; B.char s[]=“Boy”; C.char s[3]={“Boy”}; D.char s[3];s[0]=‘B’;s[1]=‘o’;s[2]=‘y’ 答案:B 9.执行下列程序时输入:123<空格>456< 空格>779<回车>,输出结果是_____。 #include“stdio.h” main() { char s[100];int c,I; scanf(“%c”,&c); scanf(“%d”,&i); scanf(“%s”,s); printf(“%c,%d,%s\\n”,c,i,s); } A.123,456,779 B.1,456,779 C.1,23,456,779 D.1,23,456 答案:D 10.下列程序执行后的输出结果是_____。 #include“stdio.h” main() { char arr[2][4]; strcpy(arr[0],“you”); strcpy(arr[1],“me”); arr[0][3]=‘&’; printf(“%s\\n”,arr[0]); } A. you&me B. you C.me D.arr 答案:A 11.设有数组定义:char array[]=“China”; 则数组array所占空间为______。 A.4个字节 B.5个字节 C.6个字节 D.7个字节 答案:C 12.以下程序的输出结果是______。 #include“stdio.h” main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf(“%d%d\\n”,a[2],a[5],a[8]); } A. 258 B.741 C.852 D.369 答案:C 13、以下程序的输出结果是( ) # include { char st[20]=”hello\\0\\t\\\\”; printf (“%d %d \\n”,strlen(st),sizeof(st));} A. 9 9 B. 5 20 C. 13 20 D. 20 20 答案:A 14、以下程序的输出结果是( ) # include main () {int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(“%d %d %d \\n”,a[0][3],a[1][2],a[2][1],a[3][0]);} A.0650 B.1470 C.5430 D.输出值不定 答案:A 15、以下程序段的输出结果是( ) char s [] =”\\\\141\\141abc\\t”; printf (“%d \\n”,strlen(s)); A.9 B.12 C.13 D.14 答案:A 16、以下程序段的输出结果是( ) # include {int b [3][3]={0,1,2,0,1,2,0,1,2} ,i,t=1; for(i=0;i<3;i++) t=t+b[b[i][i]][i]; printf(“%d\\n”,t);} A.3 B.4 C.1 D.9 答案:B 17、以下程序段的输出结果是( ) # include {int a [3][3]={{1,2},{3,4},{5,6}} ,i, ,j , s=0; for(i=1;i<3;i++) for(i=0;i C.20 D.21 答案:A 18、下述对C语言字符数组的描述中。错误的是( ) A.字符数组可以存放字符串 B.字符数组中的字符串可以整体输入、输出 C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用关系运算符对字符数组的字符串进行比较 答案:C 19、以下程序段执行后的输出结果是( ) stic char str[ ]=”Beijing”; printf(“%d\\n”,strlen(strcpy(str,”Chian”))); A. 5 B.7 C.12 D.14 答案:A 20 、若有说明:int a[10]={1,2,3,4,5,6,7,8,9}; char c=?a,?d;则数值为4的表 达式是( ) A.a[4] B.a[d-a] C.a[?d?-?c?] D.a[?d?-c] 答案:D 21、请选择以下语句的输出结果( ) printf (“%d\\n”,strlen(“\\t”\\065\\xff\\n)); A.2 B.5 C.14 D.输出项不合法 答案:B 22.当执行下面程序且输入:ABC时,输出的结果是( ) #include”stdio.h” Main( ) {char ss[10]=”12345”; gets(ss); pirntf(“%s\\n”,ss); } A.ABC B.ABC45 C.12345ABC D.ABC12345 答案:A 23 不能把字符串Hello!赋给数组b的语句是() A.char b[10]={?H?, ?e?, ?l?, ?l?, ?o?, ?!?,} ; B.char b[10];b=”Hello!”; C.char b[10];strcpy(b,”Hello!”); D.char b[10]=”Hello!” 答案:B 24.有语句char str1[10],str2[10]=”china”;则能将字符串china赋给数组str1的正确语 句是( ) A.str1={“china”} B.str1=str2 C.strcpy(str1,str2) D.strcpy(str2,str1); 答案:C 二.填空: 1.数组名定义规则和变量名相同,都遵循 定义规则。 答案:标识符 2.在C语言中,引用数组只能通过引用 实现,而不能通过 整体引用来实现。 答案:元素 3.定义一维数组时,如果对全部元素赋初值,则元素个数_______;定义而维数组时,如果对全部元素赋初值,则可省略_____。 答案:可以省略 行数 4.数组在内存中占一片连续的存储区,由_______代表它的首地址。 答案:数组名 5.C语言程序在执行过程中,不检查数组下标是否_____。 答案:越界 6.若定义:char s[20];则数组元素的下标有______个元素,其下标从______开始,最大为_____。 答案:20 0 19 7.设有定义语句:int i=3,a[]={1,2,3,4};则数组a的数据类型是_____;该数组的下标最大值是_____;数组元素a[i]的值是____。 答案:int或整型 3 4. 8.设有定义;char s[5]={?a?,?b?};则s[1]中的字符是_____,s[2]中的字符是______。 答案:‘b? ‘\\0? 9.设有定义:int a[4][5];则元素行下标的最大值是______;列下标的最大值是______。 答案:3 4. 10.定义一个名为x的整型数组,其大小为3*4,要求每行第一个元素为1,其余均是0,则定义语句是_____。 答案:int x[3][4]={{1},{1},{1}}; 11.C语言中,二维数组元素在内存的存放顺序是_____。 答案:按行存放 12.设有定义语句:char s[]=“abcdef0”;则数值S的长度是_____;数组元素[6]中存放的字符是______。 答案:8 '0' 13.设有定义语句:char s[][5]={“阿bed”};则二维数组s中一共有______个数组元素,s[0][0]中存放的字符是______。 答案:5 'a' 14.设有定义语句:char sl[10]=“1230abc”:则表达式“strlen(sl)”的值是______。 答案:3 15.设有定义语句:char sl[]=“study”,s2[10];,把sl中的字符串赋值给s2的语句是_____。 答案:strcpy(s2,s1) 16.程序实现的功能是:9个评委给某个参赛选手打分,去掉一个最高分和最低分,求该选手的平均分,请填空。 main() {int i; float a[9],max,min,ave; for(i=0;i<9;i++) scanf(\ max=min=ave=______; for(i=1;i<9;i++) {ave+=______; if(maxa[i]) min=a[i]; } ave=(________)/7; printf(“平均分为:%.2f”,ave); } 答案:a[0] a[i] ave-max-min 17.下列程序的功能是:从键盘输入不相同的10个数组a中,求最大数和次最大数,请填空。 #include”stdio.h” main() {int i,max1,max2,a[10]; For(i=0;i<10;i++) acanf(“%d”,&a[i]); max1=max2=_______; For(i=1;i<10;i++) If(max1 {max2=_______; max1=a[i]; } Else if(max2 Printf(“最大数为:%d,次最大数为:%d”,max1,max2); } 答案:a[0] max1 max2=a[i] 18.以下程序的功能是将字符串str中的字符正序和逆序进行连接,形成一个新串存放到字符串t中,如:str字符串为ABCD,则t的内容为:ABCDDCBA,请填空。 #include “stdio.h” main() {char str[30],t[60]; int i,j; gets(str); for(i=0,j=0;str[i]!=_______;i++) t[j++]=str[i]; for(--i;i>_________;i--) t[j]=_________; puts(t); } 答案:’b’ 0 ‘0’ 19.程序功能是:将字符数组str按字符ASCII表顺序排序后输出,请填空。 #include lenth=_______; for(i=0;i {ch=str=[i];str[i]=str[j];str[j]=ch;} Printf(“%sn”,________); } 答案:strlen(str[i]) str[i]>str[j] str 20.完善程序,使5*5数组对角线元素为1,其他为0,即输出5*5的对角矩阵。 #include for(k=0;k<5;k++) {if( ) ; else ; } for(j=0;j<5;j++) {for(k=0;k<5;k++) printf(\ printf(\ } } 答案:j==k a[j][k]=1 a[j][k]=0 1.1.7指针 一.选择题: 1. 已知int * p,a;则语句“P=&a;”,中的运算符“&”的含义是()。 A. 逻辑运算符 B. 位与运算符 C. 取指针内容 D. 取变量地址 2.对于类型相同的指针变量,不能进行()运算。 A. + B. - C. = D. = = 3.设指针x指向的整型变量为28,则(”%d\\n”,++ * x);的输出量是()。 A .27 B. 28 C. 29 D. 30 4.若已定义a为int型变量,则对p的说明和初始化正确的是()。 A. int * p=a B. int p=a C .int * p=* a D. int= * p=&a 5.指针s所指的字符串的长度为()。 Char * s=”\\t\\’Nane\\\\Address\\n”; A .19 B. 18 C. 15 D. 17 6.若有说明:int i,j=7, * p=&a;则与i=j等价的语句为()。 A .i=* p B. * p=* &a C. i=&j D. i=* * p 7.若有说明语句int a=[10],* p=a;对数组元素的正确引用是() A. a[p] B. p[a] C. * (p+2) D. p+2 8.设p1和p2均为指向同一个int型一维数组元素的指针变量,k为int型变量,下列不正确的语句是()。 A. k=*p1+*p2 B. *p1*(*p2) C. p2=k D. p1=p2 9.若有下列说明语句,请选出哪个对数组元素的正确引用()。 int c[4][5],(*p)[5];p=c; A. P+1 B. *(&a[i]) C. p[i] D. *(*p+2) 10.设有以下语句,则 不是对a数组的正确引用,其中0<=i<10。 Int a[10]={0,1,2,3,4,5,6,7,7,9}, *p=a; A a[p-a] B *(&a[i]) C p[i] D *(*(a+1)) 11.设有如下的程序段: Char str[]=”hello”; Char *ptr; Ptr=str; 执行完上面的程序段后,*(ptr+5)的值为 A ‘0’ B ‘\\0’ C 不确定的值 D ‘0’的地址 12.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是 A pb=&x B pb=x C *pb=&x D *pb=*x 13. 已知:char b[5], *p=b; 则正确的赋值语句是 A b=”abcde” B *b=”abcde” C p=”abcde” D *p=”abcde” 14.若有以下定义,则值为3的表达式是 Int a[]={1,2,3,4,5,6,7,7,9,10}, *p=a; A p+=2, *(p++) B p+=2, *++p C p+=3, *p++ D p+=2, ++*p 15.若有以下定义,则表达式*++p的值是 Int a[5]={10,20,30,40,50},*p=&a[1]; A 40 B 30 C 21 D 31 16. 若有以下定义,则表达式++*p的值是 Int a[5]={10,20,30,40,50},*p=&a[1]; A 40 B 30 C 21 D 31 17. 若有以下定义,则表达式*--p的值是 Int a[5]={10,20,30,40,50},*p=&a[1]; A 10 B 20 C 19 D 31 18. 若有以下定义,则表达式*p++的值是 Int a[5]={10,20,30,40,50},*p=&a[1]; A 20 B 30 C 21 D 31 19.设有下面的程序段,则对数组的错误引用是 int a[12]={0],*p[3],**pp,i; for (i=0;i<3;i++) p[i]=&a[i*4]; pp=p; A.pp[0][1] B.a[10] C.p[3][1] D.*(*(p+2)+2) 20.若有以下定义,则对a数组元素的非法引用是 int a[2][3],(*pa)[3];pa=a; A.*(a[0]+2) B.*pa[2] C.pa[0][0] D.*(pa[1]+2) 21.设有定义:char * aa[2]={\则以下说法中正确的是 A.aa数组眼的的值分别是\和\ B.aa是指针变量,他指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中分别存放了字符'a'和'A'的地址 22.以下程序有两个printf 语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是 #include main() {short a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a;printf(\printf(\ A.203 B.204 C.la4 D.la6 23.有如下程序段,执行该程序段后,a的值为 int *p,a=10,b=1; p=&a;a=*p+b; A.12 B.11 C.10 D.编译出错 24.设有定义:int a[10]= {1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是 A.*p+9 B.*(p+8) C.*p+=9 D.p+8 25.下面能正确进行字符串赋值操作的语句是 A.char s[5]={\ B.char s[5]={\C.char*s;s=\D.char*s;scanf(\ 26.设有如下程序段,执行该程序后段后,ab的值为 int *var,ab; ab=100;var=&ab;ab=*var+10; A.120 B.110 C.100 D.90 27.若有下面的定义语句,则不能表示a数组元素的表达式是 int a[10]= {1,2,3,4,5,6,7,8,9,10},*p=a; A.*p B.a[10] . C.*a D.a[p-a] 28.如有以下定义和语句,则一下正确的叙述是 double r=99,*p=&r;*p=r; A.一下两处的*p含义相同,都说明给指针变量p赋值 B.在“double r=99,*p=&r;”中,把r的地址赋值给了p所指的储存单元 C.语句“*p=r;”,把变量r的值赋给指针变量p D.语句“*p=r;”取变量r的值放回r中 29.若有一下定义语句,则数值为4的表达式是 int w[3][4]={{0,1},{2,4},{5,8}};int (*p)[4]=w; A.*w[1]+1 B.p++,*(p+1) C.w[2][2] D.p[1][1] 30.若有以下定义语句,则不能代表字符o的表达式是 char s[20]=\ A.ps+ 2 B.s[2] C.ps[2] D.ps+=2,*ps 31.若有定义:int a[9],*p=a;,并在以后的语句中未改变p的值,则不能表达a[1]地址的表达式是 A.p+1 B.a+1 C.a++ D.++p 32.若有定义:int a,b,c,d,*d=&c;则能正确从键盘读入三个整数分别赋给变量a,b,c,d的语句是 A.scanf(\B.scanf(\C.scanf(\D.scanf(\ 33.若有以下的说明和语句,则在执行for 语句后,*(*(pt+1)+2) 表示的数组 元素是 int t[3][3],*pt[3],k; for (k=;k<3;k++)pt[k]=t[k]; A.t[2][0] B.t[2][2] C.t[1][2] D.t[2][1] 34.设有定义:char *st=\,下列程序段中正确的是 A.char a[11],*p;strcpy(p=a+1,&st[4]); B.char a[11],strcpy(++a,st); C.char a[11];strcpy(a,st); D.char a[],*p;strcpy(p=&a[1],st+2); 35.设有定义:int(*prt)[M];其中的标识符prt是 A.M个指向整型变量的指针 B.指向M个整型变量的函数指针 C.一个指向具有M个整型元素的一维数组的指针 D.具有M个指针元素的一维指针数组,每个元素都是一个指向整数变量的指针 二、填空题 1.“*”称为______运算符,“&”称为______运算符 。 2.设int a[10],*p=a;则对a[2]的正确引用是p[______]和*(p _______)。 3.若有以下定义,则不移动指针p,且通过指针p引用值为97的数组元素的表达式是______。 int w[10]={23,54,10,33,47,97,72,70,61,102},*p=w; 4.设有char*a=”ABCD”;则printf(“%s”,a);的输出是 _____;而printf(“%c,*a);的输出是______。 5.下面程序段的输出结果是______。 char str[]=”abc\\odef\\oghi”,*p=str; printf(“%s”,p+5); 6.下面程序段的输出结果是______。 char str[20]=”abcd”,*p=str; p++;puts(strcat(p,”ABCD”)); 7.下面程序的输出结果是_______。 main() {int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m;printf(“%d\\n”,a),} 8.下面程序的输出结果是 ______。 #include”stdio.h” main() {int **k,*j,i=100; j=&i;k=&j; printf(“%d\\n”,**k);} 9.下面程序的输出结果是_______。 Main() {int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(“%d\\n”,*(p+2));} 10.下面程序的输出结果是______。 main() {char s[]=”ABCD”,*p; For(p=s;*p;p++)printf(“%c”,*p);} 11.下面程序段的输出结果是 ______。 char *s1=”12345”,8时=”1234”; printf(“%d\\n”,strlen(strcpy(s1,s2))); 12.下面程序段的输出结果是一个_数。 main() { char *s1=”AbCdEf”,*s2=”aB”; s1++;s2++; printf(“%d\\n”,strcmp(s1,s2)); } 13.下面程序段的输出结果是_。 int * *pp,*p,a=10,b=20; pp=&p;p=&a;p=&b; printf(“%d,%d\\n”,*p,* *p); 14. 下面程序的输出结果是_。 main() { char a[10]={‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,0},*p; int i; i=8;p=a+i; printf(“%s\\n”,p-3); } 15. 下面程序的输出结果是_。 main() { int a[5]={2,4,6,8,10},*p,* *k; p=a;k=&p; printf(“%d”,*(p++)); printf(“%d\\n”,* *k); } 16. 下面程序的输出结果是_。 main() { char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(“%d”,*--p); } 17.设有以下语句: int s[2][3]={0},(*p)[3]; p=s; 则p+1表示数组_。 18.设有以下语句: int a[3][2]={1,2,3,4,5,6}; int (*p)[2]; p=a; 则*(*(p+1)+1)的值是_,*(p+2)是元素_的地址。 19. 设有以下语句: int a[4]={2,4,6,7}; int *p[4]={&a[0],&a[1],&a[2],&a[3]}; int * *pp; pp=p; 则* *(pp+2)的值是_,*(p+3)的值是元素_的地址。 20若有以下说明和语句,表达式*(p+1)+2的含义是_。 int a[3][4],(*p)[4]; p=a; 选择题答案: 1.D 2.A 3.C 4.D 5 .C 6.B 7.C 8.C 9.D 10.D 11.B 12.A 13.C 14.A 15.B 16.C 17.A 18.A 19.C 20.B 21.D 22.D 23.B 24.B 25.C 26.B 27.B 28.D 29.D 30.A 31.C 32.A 33.C 34.A 35.C 填空题答案: 1. 指向,取地址 2.5 2. 2 +2 3. *(P+5) 4. ABCD A 5. ef 6. bcdABCD 7. 0 8. 100 9. 3
正在阅读:
c语言程序设计习题集04-03
圆的面积教学设计06-16
ITSS 运维服务报告(模板)12-25
石狮SBC韩国进口直线导轨10-02
综合评分法评标方法10-08
六年级英语下册 Unit 2 My favourite subject is science单元教学设计 鲁教版五四制03-13
201612《单片机原理与接口技术》09-18
苏教版小学五年级数学错题集06-24
华东理工考研无机化学复习08-17
选择题303-08
- Win7 安装MySql图示
- 计算器课程设计报告
- 部编版八年下语文第三单元第六单元古诗文理解默写练习及答案
- 13质量通病防治方案和施工措施
- 土力学试题~~~~
- 公务员打印资料
- 传热膜系数测定实验报告 - 图文
- 新时期煤矿协管安全工作的创新与实践
- 第五章 习题及参考答案
- 220kV架空线路强条执行记录表
- 音乐欣赏读后感
- 高炉
- 劳动教育需要新的时代内涵
- 10建筑地面工程施工质量验收规范GB50209-20021
- 银行会计练习题2答案
- 2013年七年级地理上册知识点复习提纲湘教版
- 人教版三年级语文上册第四单元测试题(A卷)(有答案)
- 营养师第九章练习题
- 湖北省武汉市2018届高三毕业生二月调研 理综化学
- 行业分析2018-2023年中国男性护肤品行业市场发展分析及投资前景
- 习题集
- 程序设计
- 语言
- SAP - SD-SAP免费销售订单配置及操作手册-V1.0
- 用四环节评价推进深度学习高效课堂建设
- 14年大纲对照笔记初级《出版专业·基础》
- 《发电厂电气部分》期末复习总结
- 在全市非公有制经济组织党组织集中组建工作推进会上的讲话
- 大学物理教程第二版-第1章答案 - 图文
- 2014年秋季0759钢结构设计练习及作业答案
- 苏教版小学五年级科学下册第一单元作业
- XXX供电公司企业负责人业绩指标考核细则
- 风电场作业危险点分析及控制措施手册21 - 图文
- Centos下openvpn搭建详解
- 船闸课程设计
- 历年中考名著导读题汇编(100题含答案)
- 2017年春季沪教版五四制一年级数学下学期期中复习试卷1
- 14、无机化学万题库(填空题)(16-21)
- 2014年广东省初中语文毕业生学业考试参考答案及评分标准
- 2018新苏教版国标本二年级下册语文《练习6》教学设计
- 软件规则
- 地理:第一章第一节我们身边的地理知识(湘教版七年级上)
- 铁路电气化接触网工程改造施工探讨