全国计算机等级考试二级C语言课后习题

更新时间:2024-01-10 14:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章 C程序设计的初步知识

一、选择题

1.以下选项中正确的整型常量是( )。 A.12. B.-20 C.1,000 D.4 5 6 2.以下选项中正确的实型常量是( )。

2

A.0 B.3. 1415 C.0.329×10 D. .871 3. 以下选项中不正确的实型常量是( )。

A.2.607E-1 B.0.8103e 2 C.-77.77 D.456e-2 4.以下选项中不合法的用户标识符是( )。 A.abc.c B.file C.Main D.PRINTF 5. 以下选项中不合法的用户标识符是( )。 A._123 B.printf C.A $ D.Dim

6.C语言中运算对象必须是整型的运算符是( )。 A.% B./ C.! D.* *

7.可在C程序中用作用户标识符的一组标识符是( )。 A.void define WORD B.as_b3 _123 If C.For -abc case D.2c DO SIG

8.若变量已正确定义并赋值,符合C语言语法的表达式是( )。 A.a=a+7; B.a=7+b+c,a++ C.int(12.3%4) D.a=a+7=c+b 9.以下叙述中正确的是( )。

A.a是实型变量,C允许进行赋值a=10,但可以这样说:实型变量中允许存放整型值 B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3 10.以下叙述中正确的是( )。

A.在C程序中无论是整数还是实数,只要在允许的范围内部都能准确无误的表示 B.C程序由主函数组成 C.C程序由若干函数组成

D.C程序中只允许包含一个函数

11.VC6.0中int类型变量所占字节数是( )。 A.1 B.2 C.3 D.4 12.合法的八进制数是( )。

A.0 B.028 C.-077 D.01.0 13.不合法的十六进制数是( )。

A.oxff B.0Xabc C.0x11 D.0x19 二、填空题

14.若k为int型变量且赋值11。请写出运算k++后表达式的值________和变量k的值_______。 15.若x为double型变量,请写出运算x=3.2,++x后表达式的值______和变量x的值_____。 16.函数体由符号_____开始,到符号______结束。函数体内的前面是_______部分,后面是________部分。

17.C语言中的标识符可分为_________、__________和预定义标识符三类。

18.在C语言程序中,用关键字__________定义基本整型变量,用关键字_________定义单精度实型变量,用关键字__________定义双精度实型变量。

19.把a1、a2定义成双精度实型变量,并赋初值1的定义语句是______________。 20.C程序中定义的变量,代表内存中的一个_________________。 21.表达式3.5+1/2的计算结果是___________。 22.对数学式

a?b,写出三个等价的C语言表达式__________、__________、________。 c23.表达式s=10应当读作_______________。 三、上机改错题

24.请指出以下C程序的错误所在: #include stdio.h;

main(); /*main function */

float r,s; /*/*r is radius */,/* s is area of circular */*/ r=5.0;

s=3.14159*r*r; printf(“%f\\n”,s)

25. 请指出以下C程序的错误所在: main /*main function */

{float a,b,c,v; /*a,b,c are sides,v is volume of cube */ a=2.0;b=3.0;c=4.0 v=a*b*c;

printf(“%f\\n”,v) }

第三章 顺序结构

一、选择题

1.若a、b、c、d都是int型变量且初值为0,以下选项中不正确的赋值语句是( )。 A.a=b=c=100; B.d++; C.c+b; D.d=(c=32)-(b++); 2.下列选项中不是C语句的是( )。 A.{int i;i++;printf(“%d\\n”,i);} B.; C.a=5,c=10 D.{;} 3.合法的C语言赋值语句是( )。

A.a=b=58 B.k=int(a+b); C.a=58,b=58 D.--i; 4.有以下程序: #include main()

{int x=10,y=3;

printf(“%d\\n”,y=x/y); }

执行后的输出结果是( )。

A.0 B.1 C.3 D.不确定的值

5.若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是( )。 A.read(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);

6.若变量已正确定义为float型,要通过输入语句:scanf(“%f %f %f”,&a,&b,&c);给a赋值11.0,b赋值22.0,c赋值33.0,不正确的输入形式是( )。 A.11回车22回车33 B.11.0,22.0,33.0

C.11.0回车22.0 33.0 D.11 22回车33

7.若变量a、b、t已正确定义,要将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=t;

8.若有正确定义语句:double x=5.16894;语句printf(“%f\\n”,(int)(x*1000+0.5)/(double)1000);的输出结果是( )。

A.输出格式说明与输出项不匹配,输出无定值 B.5.170000 C.5.168000 D.5.169000 9.若有以下程序段: int c1=1,c2=2,c3; c3=c1/c2;

printf(“%d\\n”,c3);

执行后的输出结果是( )。 A.0 B.1/2 C.0.5 D.1 10.若有以下程序段: int a=0,b=0,c=0;

c=(a-=a-5),(a=b,b+3);

printf(“%d,%d,%d\\n”,a,b,c); 执行后的输出结果是( )。

A.3,0,-10 B.0,0,5 C.-10,3,-10 D.3,0,3 二、填空题

11.若有以下定义,请写出以下程序段中输出语句执行后的输出结果________。 int i=-200,j=2500; printf(“(1)%d,%d”,i,j);

printf(“(2)i=%d,j=%d\\n”,i,j); printf(“(3)i=%d\\nj=%d\\n”,i,j);

12.变量i、j、k已定义为int型并均有初值0,用以下语句进行输入时:scanf(“%d”,&i); scanf(“%d”,&j); scanf(“%d”,&k);从键盘输入:12.3回车 则变量i、j、k的值分别是______、_______、_______。

13.复合语句在语法上被认为是__________________。空语句的形式是_________________。 14.C语句的最后用__________结束。

15.以下程序段要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入15.81,给x输入1.89234时的三种可能的输入形式____________________、____________________________、___________________________________。 int k; float a; double x;

scanf(“%d%f%lf”,&k,&a,&x);

printf(“k=%d,a=%f,x=%lf\\n”,k,a,x); 三、编程题和改错题

16.以下程序多处有错。若指定必须按下面的形式输入数据,并且必须按下面指定的形式输出数据,请对该程序做相应的修改。 main

{double a,b,c,s,v; printf(input a,b,c:\\n);

scanf(“%d %d %d”,a,b,c); s=a*b; v=a*b*c;

printf(“%d %d %d”,a,b,c); printf(“s=%f\\n”,s,”v=%d\\n”,v); }

当程序执行时,屏幕的显示和要求输入形式如下: input a,b,c:2.0 2.0 3.0

a=2.000000,b=2.000000,c=3.000000 s=4.000000,v=12.000000

17.编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。

18.编写程序,输入两个数:1500和350,求出它们的商和余数并进行输出。

19.编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。

20.编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a、b、c。

第四章 选择结构

一、选择题

1.下列运算符中优先级最高的运算符是( )。 A. ! B.% C.-= D.&&

2.下列运算符中优先级最低的运算符是( )。 A.|| B.!= C.<= D.+

3.为表示关系:x?y?z,应使用的C语言表达式是( )。 A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=x) C.(x>=y>=z) D.(x>=y)&(y>=z)

4.设a、b和c都是int型变量,且a=3,b=4,c=5,则以下表达式中值为0的表达式是( )。 A.a&&b B.a<=b C.a||b+c&&b-c D.!((a main()

{int a=2,b=-1,c=2; if(a

if(b<0) c=0; else c+=1;

printf(“%d\\n”,c); }

程序的输出结果是( )。 A.0 B.1 C.2 D.3 6.有以下程序: #include main()

{int w=4,x=3,y=2,z=1;

printf(“%d\\n”,(w

程序的输出结果是( )。 A.1 B.2 C.3 D.4 7.有以下程序: #include main() {int a,b,s;

scanf(“%d %d”,&a,&b); s=a;

if(a

printf(“%d\\n”,s); }

若执行以上程序时从键盘上输入3和4,则输出结果是( )。 A.14 B.16 C.18 D.20 8.有以下程序片段: y=-1; if(x!=0)

if(x>0) y=1; else y=0;

其能正确表示的数学函数关系是( )。

??1(x?0)?1(x?0)?0(x?0)??1(x?0)????A. y??0(x?0) B. y???1(x?0) C. y???1(x?0) D. y??1(x?0)

?1(x?0)?0(x?0)?1(x?0)?0(x?0)????9.有以下程序:

#include main() {int k=-3;

if(k<=0) printf(“****\\n”) else printf(“&&&&\\n”); }

程序的输出结果是( )。

A.输出#### B.输出&&&& C.输出####&&&& D.有语法错不能通过编译 10.若a和b均是正整型变量,正确的switch语句是( )。 A.

switch(pow(a,2)+pow(b,2)) {case 1:case 3:y=a+b;break; case 0:case 5:y=a-b; } B.

switch(a*a+b*b); {case 3:

case 1:y=a+b;brek; case 0:y=b-a;break; } C.

switch a

{default :x=a+b;

case 10:y=a-b;break; case 11:x=a*d;break; } D.

switch(a+b)

{case10 :x=a+b;break; case11 :y=a-b;break; }

二、填空题

1.C语言中用___________表示逻辑值“真”,用_____________表示逻辑值“假”。 2.C语言中的关系运算符“!=”的优先级比“<=”________。 3.C语言中的逻辑运算符“&&”比“||”的优先级_________。

4.C语言中的关系运算符“==”比逻辑运算符“&&”的优先级_______。 5.C语言中逻辑运算符_________的优先级高于算术运算符。

6.将下列数学式改写成C语言的关系表达式或逻辑表达式:A)__________B)_________。 A)a=b或a4

7.请写出以下程序的输出结果__________。 #include main() {int a=100;

if(a>100) printf(“%d\\n”,a>100); else printf(“%d\\n”,a<=100); }

8.请写出以下表达式等价的表达式:A)__________B)_________。 A)!(x>0) B)!0

9.当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为_______、_______、______。 if(a>c)

b=a;a=c;c=b;

10.若变量已正确定义,以下语句段的输出结果是__________。 x=0;y=2;z=3; switch(x)

{case 0:switch(y==2)

{case 1:printf(“*”);break; case 2:printf(“%”);break;

}

case 1:switch(z)

{case 1:printf(“$”);

case 2:printf(“*”);break;

default:printf(“#”);

}

}

三、编程题

1.若a的值小于100,请将以下选择结构改写成由switch语句构成的选择结构。 if(a<30) m=1; else if(a<40) m=2; else if(a<50) m=3; else if(a<60) m=4; else m=5;

2.编写程序,输入一个整数,打印出它是奇数还是偶数。 3.编写程序,输入a、b、c三个数,打印出最大者。 4.对于以下函数:

编写程序,要求输入x的值,输出对应y的值。

第五章 循环结构

一、选择题

1.有以下程序段: int k,j,s;

for(k=2;k<6;k++,k++) {s=1;

for(j=k;j<6;j++) s+=j; }

printf(“%d\\n”,s);

程序段的输出结果是( )。 A.9 B.1 C.11 D.10 2.有以下程序段: 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 3.有以下程序段: int n=10; while(n>7) {n--;

printf(“%d\\n”,n); }

程序段的输出结果是( )。

?x(?5?x?0)?y??x?1(x?0)?x?1(0?x?10)?A.10 B.9 C.10 D.9 9 8 9 8 8 7 8 7 7 6 4.有以下程序段: int x=3; do

{printf(“=”,x-=2); }while(!(--x));

程序段的输出结果是( )。

A.1 B.3 0 C.1 -2 D.死循环 5.有以下程序: #include main() {int i,sum;

for(i=1;i<6;i++) sum+=sum; printf(“%d\\n”,sum); }

程序的输出结果是( )。

A.15 B.14 C.不确定 D.0 6.有以下程序: #include main() {int y=10; for(;y>0;y--) if(y%3==0)

{printf(“%d”,--y); continue;

} }

程序的输出结果是( )。

A.741 B.852 C.963 D.875421 7.有以下程序段: int x;

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 8.有以下程序: #include main() {int i;

for(i=1;i<=5;i++)

{if(i%2) printf(“*”); else continue; printf(“#”); }

printf(“$\\n”); }

程序的输出结果是( )。

A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$ 9.以下叙述中正确的是( )。

A.do-while语句构成的循环不能用其他语句构成的循环来代替 B.do-while语句构成的循环只能用break语句退出

C.有do-while语句构成循环时,只有在while后的表达式为非零时结束循环 D. 有do-while语句构成循环时,只有在while后的表达式为零时结束循环 10.有以下程序: #include main() {int x,i;

for(i=1;i<=100;i++) {x=i;

if(++x%2==0) if(++x%3==0) if(++x%7==0)

printf(“%d ”,x); }

printf(“\\n”); }

程序的输出结果是( )。

A.28 70 B.42 84 C.26 68 D.39 81 二、填空题

1.当执行以下程序段后,i的值是________、j的值是_________、k的值是________。 int a,b,c,d,i,j,k; a=10; b=c=d=5; i=j=k=0;

for(;a>b;++b) i++; while(a>++c) j++; do k++; while(a>d++);

2.以下程序段的输出结果是_________。 int k,n,m; n=10; m=1; k=1;

while(k++<=n) m*=2;

printf(“%d\\n”,m);

3.以下程序的输出结果是__________。 #include main() {int x=2; while(x--) ;

printf(“%d\\n”,x); }

4.以下程序段的输出结果是_________。 int i=0,sum=1;

do{sum+=i++;}while(i<5); printf(“%d\\n”,sum); 5.有以下程序段: s=1.0;

for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf(“%f\\n”,s);

请填空,使下面的程序段的功能完全与之等同。 s=0.0;

___________; k=0; do

{s=s+d;

___________; d=1.0/(k*(k+1)); }while(_______); printf(“%f\\n”,s);

6.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。 #include main()

{float x,amax,amin; scanf(“%f”,&x); amax=x; amin=x;

while(_________)

{if(x>amax) amax=x; if(_______) amin=x; scanf(“%f”,&x); }

printf(“\\namax=%f\\namin=%f\\n”,amax,amin); }

三、编程题

1.编写程序,求1-3+5-7+…-99+101的值

?112123?1???????? 2335357double pi(double eps) {double s=0.0,t=1.0; int n;

for(__________;t>eps;n++) {s+=t;

t=n*t/(2*n+1); }

return 2.0*________; }

5.以下函数用以求x的y次方,请填空。 double fun(double x,int y) {int i;

double z=1.0;

for(i=1;i___________;i++) z=__________; return z; }

6.以下程序的功能是计算s??k!。请填空。

k?0n#include long f(int n) {int i; long s;

s=__________; for(i=1;i<=n;i++) s=____________; return s; }

main() {long s; int k,n;

scanf(“%d”,&n); s=____________; for(k=0;k<=n;k++)

s+=______________; printf(“%ld\\n”,s); }

三、程序调试和编程题

1.下面的fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正。 int fun(int n) {int k,yes;

for(k=2;k<=n/2;k++) if(n%k==0) yes=0; else yes=1; return yes; }

2.编写程序int mymod(int a,int b)用以求a被b除之后的余数。 3.编写函数,根据整型形参n的值,计算如下公式的值: 1?111111?????...?(?1)n?1 23456n4.编写函数,根据整型形参m的值,计算如下公式的值: t?1?111 ??...?2?23?3m?m 例如:若m=5,则应输出0.536389

5.编写函数用以求表达式x2-5x+4的值,x作为参数传递给函数。调用此函数求: y1=22-5·2+4

2

y2=(x+15)-5(x+15)+4

2

y3=sinx-5·sinx+4

第八章 地址和指针

一、选择题

1.若有定义:int x,*pb;则正确的赋值表达式是( ) A.pb=&x B.pb=x C.*pb=&x D.*pb=*x 2.若有以下程序: #include main()

{printf(“%d\\n”,NULL); }

程序的输出结果是( )

A.因变量无定义输出不定值 B.0 C.-1 D.1 3.若有以下程序: #include

void sub(int x,int y,int *z) {*z=y-x; }

main() {int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

printf(“%d,%d,%d\\n”,a,b,c); }

程序的输出结果是( )

A.5,2,3 B.-5,-12,-7 C.-5,-12,-17 D.5,-2,-7 4.若有以下程序: #include

main()

{int k=2,m=4,n=6,*pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(“%d\\n”,n); }

程序的输出结果是( ) A.4 B.6 C.8 D.10

5.若指针p已正确定义并指向如图所示存储单元:

a[0] a[1] a[2] a[3] a[4] 10 20 30 40 50 p 则执行语句*p++;后,*p的值是( ) A.20 B.30 C.21 D.31

6.若指针p已正确定义并指向如图所示存储单元,则表达式*++p的值是( A.20 B.30 C.21 D.31

7. 若指针p已正确定义并指向如图所示存储单元,则表达式++*p的值是(A.20 B.30 C.21 D.31 8.若有以下程序: #include void prtv(int *x)

{printf(“%d\\n”,++*x); }

main() {int a=25; prtv(&a); }

程序的输出结果是( ) A.23 B.24 C.25 D.26 9.若有以下程序: #include main()

{int **k,*a,b=100; a=&b; k=&a;

printf(“%d\\n”,**k); }

程序的输出结果是( )

A.运行出错 B.100 C.a的地址 D.b的地址 10.若有以下程序: #include

void fun(float *a,float *b) {float w; *a=*a+*a; w=*a;

) ) *a=*b; *b=w; }

main()

{float x=2.0,y=3.0,*px=&x,*py=&y; fun(px,py);

printf(“%2.0f,%2.0f\\n”,x,y); }

程序的输出结果是( )

A.4,3 B.2,3 C.3,4 D.3,2 11.若有以下程序: #include

void sub(double x,double *y,double *z) {*y=*y-1.0; *z=*z+x; }

main()

{double a=2.5,b=9.0,*pa,*pb; pa=&a; pb=&b;

sub(b-a,pa,pa); printf(“%f\\n”,a); }

程序的输出结果是( )

A.9.000000 B.1.500000 C.8.000000 D.10.500000 12.以下四个程序中不能对两个整型值进行交换的是( ) A.#include void swap(int *p,int *q) {int *t,a; t=&a; *t=*p; *p=*q; *q=*t; }

main()

{int a=10,b=20; swap(&a,&b);

printf(“%d %d\\n”,a,b); }

B. #include void swap(int *p,int *q) {int t; t=*p; *p=*q;

*q=t; }

main()

{int a=10,b=20; swap(&a,&b);

printf(“%d %d\\n”,a,b); }

C. #include void swap(int *p,int *q) {int t; t=*p; *p=*q; *q=t; }

main() {int *a,*b; *a=10,*b=20; swap(a,b);

printf(“%d %d\\n”,*a,*b); }

D. #include void swap(int *p,int *q) {int t; t=*p; *p=*q; *q=t; }

main()

{int a=10,b=20,*x=&a,*y=&b; swap(x,y);

printf(“%d %d\\n”,a,b); }

二、填空题

1.以下程序段的输出结果是__________ int *var,b; b=100; var=&b; b=*var+10;

printf(“%d\\n”,*var);

2.以下程序的输出结果是_________ #include

int ast(int x,int y,int *cp,int *dp) {*cp=x+y; *dp=x-y;

}

main() {int c,d;

ast(4,3,&c,&d);

printf(“%d %d\\n”,c,d); }

其它略!

第九章 数组

一、选择题 1.若已定义:

int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

其中0≤i≤9,则对a数组元素的引用不正确的是( A.a[p-a] B.*(&a[i]) C.p[i] D.*(*(a+i)) 2.以下程序段给数组所有元素输入数据: #include main()

{int a[10],i=0;

while(i<10) scanf(“%d”,___________); ……. }

应在下划线处填入的是( )

A.a+(i++) B.&a[i+1] C.a+i D.&a[++i] 3.有以下程序: #include main()

{int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(“%d\\n”,*(p+2)); }

程序的输出结果是( ) A.3 B.4 C.1 D.2 4.有以下程序: #include main()

{int n[2]={0},i,j,k=2; for(i=0;i

程序的输出结果是( )

A.不确定的值 B.3 C.2 D.1 5.有以下程序: #include main()

) {int a[]={2,4,6,8,10},y=1,x,*p; p=&a[1];

for(x=0;x<3;x++) y+=*(p+x); printf(“%d\\n”,y); }

程序的输出结果是( ) A.17 B.18 C.19 D.20 6.有以下程序: #include main()

{int a[]={2,4,6,8},*p=a,i; for(i=0;i<4;i++) a[i]=*p++;

printf(“%d\\n”,a[2]); }

程序的输出结果是( ) A.6 B.8 C.4 D.2 7.有以下程序: #include int f(int b[],int n) {int i,r=1;

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

r=r*b[i]; return r; }

main()

{int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3);

printf(“%d\\n”,x); }

程序的输出结果是( )

A.720 B.120 C.24 D.6 8.有以下程序: #include main()

{int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(“%x\\n”,p); printf(“%x\\n”,p+9);; }

若一个int类型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句的输出结果是( )

A.212 B.204 C.1a4 D.1a6

9.有以下程序: #include

void fun(int *s,int n1,int n2) {int i,j,t; i=n1; j=n2; while(i

main()

{int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a; fun(p,0,3); fun(p,4,9); fun(p,0,9);

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

printf(“%d”,*(a+i)); }

程序的输出结果是( )

A.0987654321 B.4321098765 C.5678901234 10.有以下程序: #include main()

{int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p;

printf(“%d”,*(p++)); printf(“%d\\n”,**k); }

程序的输出结果是( )

A.4 4 B.2 2 C.2 4 D.4 6 11.有以下程序: #include #define N 6 main() {char c[N]; int i=0;

for(i=0;i

c[i]=getchar(); for(i=0;i

D.0987651234 putchar(c[i]); }

当运行以上程序时输入三行,每行都是在第一列上开始,代表Enter键: a b cdef

则程序的输出结果是( ) A.abcdef B.a b c d e f C.a b cd D.a b cdef

12.若有定义:int c[4][5],(*cp)[5];和语句cp=c;,则能正确引用c数组元素的是(A.cp+1 B.*(cp+3) C.*(cp+1)+3 D.*(*cp+2)

13.若已定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p=a[0]; 则能够正确表示数组元素a[1][2]的表达式是( )

A.*((*prt+1)[2]) B.*(*(p+5)) C.(*prt+1)+2 D.*(*(a+1)+2) 14.若有定义和语句:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p[4],i; for(i=0;i<4;i++) p[i]=a[i];

则不能够正确表示a数组元素的表达式是( )

A.a[4][3] B.p[0][0] C.prt[2][2] D.(*(p+1))[1] 15.有以下程序: #include main()

{int aa[3][3]={{2},{4},{6}},I,*p=&&aa[0][0]; for(i=0;i<2;i++)

{if(i==0) aa[i][i+1]=*p+1; else ++p;

printf(“%d”,*p);

}

printf(“\\n”); }

程序的输出结果是( )

A.23 B.26 C.33 D.36 16.有以下程序:

) #include main()

{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,I,j,k=0; for(i=0;i<3;i++) for(j=0;j<2;j++) k+=*(*(p+i)+j); printf(“%d\\n”,k); }

程序的输出结果是( )

A.60 B.68 C.99 D.108 17.有以下程序: #include main()

{int I,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)

printf(“%d,”,x[i][2-i]); }

程序的输出结果是( )

A.1,5,9 B.1,4,7 C.3,5,7 D.3,6,9 18.若有定义语句:int (*p)[M];,其中的标识符p是( ) A.M个指向整型变量的指针

B.指向M个整型变量的函数指针

C.一个行指针,它指向具有M个整型元素的一维数组

D.具有M个指针元素的一维指针数组,每个元素都只能指向整型量 二、填空题 1.若有定义: double w[10];

则w数组元素下标的上限是_________,下限是________。 2.以下程序的输出结果是_______。 #include main()

{int a[]={2,4,6},*prt=&a[0],x=8,y,z; for(y=0;y<3;y++)

z=(*(prt+y)

3.以下程序的输出结果是_________。 #include main()

{int arr[10],I,k=0;

for(i=0;i<10;i++) arr[i]=i; for(i=0;i<4;i++) k+=arr[i]+i; printf(“%d\\n”,k); }

4.以下程序的输出结果是_________。 #include #define N 5

int fun(char *s,char a,int n) {int j; *s=a; j=n;

while(a

main()

{char s[N+1]; int k;

for(k=1;k<=N;k++) s[k]=?A?+k+1;

printf(“%d\\n”,fun(s,?E?,N)); }

5.若输入三个整数3、2、1,则以下程序的输出结果是_________。 #include void sub(int n,int uu[]) {int t; t=uu[n--]; t+=3*uu[n]; n++; if(t>=10)

{uu[n++]=t/10; uu[n]=t; } else uu[n]=t; }

main()

{int I,n,aa[10]={0};

scanf(“%d%d%d”,&n,&aa[0],&aa[1]); for(i=1;i

for(i=0;i<=n;i++) printf(“%d”,aa[i]); printf(“\\n”); }

6.以下程序的输出结果是_________。 #include main()

{int i,j,row,col,m,arr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=arr[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++)

if(arr[i][j]

}

7.以下findmax返回s所指数组中最大元素的下标,数组中元素的个数由t传入,请填空。 int findmax(int s[],int t) {int k,p;

for(p=0,k=p;p

if(s[p]>s[k]) _____________________; return ___________; }

8.以下程序统计从终端输入的字符中每个大写字母的个数,num[0]中统计字母A的个数,其他以此类推。用#号结束输入。请填空。 #include #include main()

{int num[26]={0},i; char c;

while(__________!=?#?)

if(isupper(c)) num[_______]+=1; for(i=0;i<26;i++)

if(num[i]) printf(“%c:%d\\n”,i+?A”,num[i]); }

第十章 字符串

一、选择题

1.以下能正确进行字符串赋值、赋初值的语句组是( ) A.char s[5]={?a?,?e?,?i?,?o?,?u?}; B.char *s; s=”good!”; C.char s[5]=”good!”; D.char s[5]; s=”good!”;

2.设有定义:char str[]=”ABCD”,*p=str;则语句printf(“%d\\n”,*(p+4));的输出结果是(A.68 B.0 C.字符D的地址 D.不确定的值

3.语句printf(“%d\\n”,strlen(“ATS\\n012\\1\\\\”));的输出结果是( ) A.11 B.10 C.9 D.8 4.

本文来源:https://www.bwwdw.com/article/8d0o.html

Top