搜档网
当前位置:搜档网 › 二级教程课后习题及答案

二级教程课后习题及答案

说明:

1、原先的少部分题目有错,请用红色的部分替换掉;

2、如果红色部分有文字“删除该行”,就直接删除该行;

第一章C语言的基础知识z

第一节对C语言的初步认识

习题

1. 下列叙述中错误的是B

A)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始执行。B)C语言中的变量,可以先使用后定义。

C)所有的C语言语句最后都必须有一个分号

D)C程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。

第二节熟悉Visual C++

习题

1. C语言源程序名的后缀是 B

A).exe B).c C).obj D).cp 2. 下列叙述中错误的是D

A)计算机不能直接执行用C语言编写的源程序

B)C程序经C编译后,生成后缀为.obj的文件是一个二进制文件

C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件

D)后缀为.obj和.exe的二进制文件都可以直接运行

3. 用C语言编写的代码程序B

A)可立即执行B)是一个源程序

C)经过编译即可执行D)经过编译解释才能执行

第三节标识符

习题

1. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是B

A)大写字母B)连接符C)数字字符D)下划线

2. 以下选项中不合法的标识符是 C

A)print B)FOR C)&a D)_00

3. 以下叙述中错误的是A

A)用户所定义的标识符允许使用关键字

B)用户所定义的标识符应尽量做到“见名知意”

C)用户所定义的标识符必须以字母或下划线开头

D)用户定义的标识符中,大、小写字母代表不同标识

4. 可在C程序中用作用户标识符的一组标识符是A

A)and B)Date C)Hi

D)case

_2007 y-m-d Dr.Tom

Bigl

5. 以下不合法的用户标识符是C

A)j2_KEY B)Double C)4d D)_8_

6. 以下不能定义为用户标识符的是D

A)Main B)_0 C)_int D)sizeof

7. 下列选项中,不能用作标识符的是D

A)_1234_ B)_1_2 C)int_2_ D)2_int_

8. 以下4组用户定义标识符中,全部合法的一组是A

A)_main B)If C)txt D)int

enclude -max REAL k_2

sin turbo 3COM _001

第四节数制转换

习题

1.十进制整数360的八进制为__________,十六进制为_____________。550 168

第五节整数和实数

习题

1.以下选项中正确的整型常量是 C

A)10110B B)0386 C)0Xffa D)x2a2

2.以下关于long、int和short类型数据占用内存大小的叙述中正确的是D

A)均占4个字节B)根据数据的大小来决定所占内存的字节数C)由用户自己定义D)由C语言编译系统决定

3.以下选项中不属于C语言的类型的是D

A)signed short int B)unsigned long int

C)unsigned int D)long short

4.以下选项中合法的实型常数是C

A)5E2.0 B)E-3 C).2E0 D)1.3E

5.以下选项中,不能作为合法常量的是 B

A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0

6.以下选项中可作为C语言合法常量的是A

A)-80. B)-080 C)-8e1.0 D)-80.0e

7.以下符合C语言语法的实型常量是C

A)1.2E0.5 B)3.14.15 9E C).5E-3 D)E15

8.以下不合法的数值常量是C

A)011 B)lel C)8.0E0.5 D)0xabcd

9.以下选项中,合法的一组C语言数值常量是B

A)028 B)12. C).177 D)0x8A

5e-3 OXa23 4c1.5

10,000

-0xf 4.5e0 Oabc 3.e5

10.下列定义变量的语句错误的是D

A)int _int ; B)double int_; C)long For; D)float US$;

第六节算术表达式与赋值表达式

习题

1.表达式3.6-5/2+1.2+5%2的值是D

A)4.3 B)4.8 C)3.3 D)3.8

2.设有定义:float x=123.4567;,则执行以下语句后输出的结果是_____。123.46

printf("%f\n",(int)(x*100+0.5)/100.0);

3.设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式×h 计算结果不相符的是B A)(a+b)*h/2 B)(1/2)*(a+b)*h

C)(a+b)*h*1/2 D)h/2*(a+b)

第七节自加自减运算符、逗号表达式

习题

1.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为______。3

2.设有定义:int k=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是A

A)k++ B)k+=1 C)++k D)k+1

3.有以下程序B

main()

{

char a1='M', a2='m';

printf("%c\n", (a1, a2) );

}

以下叙述中正确的是

A)程序输出大写字母M B)程序输出小写字母m

C)格式说明符不足,编译出错 D)程序运行时产生出错信息

4.有以下程序:B

main( )

{ int a=0,b=0;

a =10; /*给a赋值

b=20; 给b赋值*/

printf("a+b=%d\n",a+b); /*输出计算结果*/

}

程序运行后的结果是

A)a+b=30 B)a+b=10 C)30 D)程序出错

第八节字符

习题

1.以下选项中不属于字符常量的是()。B

A)'C' B)"C" C)'0' D)'\072'

2.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是()。B

A)kk>='A'&&kk<='Z' B)!(kk>='A'‖kk<='Z')

C)(kk+32)>='a'&&(kk+32)<='z' D)kk>=48 && kk<91

3.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。C

A)A,B B)A,68 C)65,66 D)65,68

4.以(25)以下合法的字符型常量是

A)'\x13' B)'\018' C)'65' D)'\n'

5.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是()。D

A)c=c-'Z' + 'z' B)c=c+32

C)c=c-'A' + 'a' D)c='A'+ c-'a'

第九节位运算

习题

1.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是A

A)a^b B)a|b C)a&b D)a<<4

2.有以下程序

#include

main()

{

int a=1,b=2,c=3,x;

x=(a^b)&c; printf("%d\n",x);

}

程序的运行结果是D

A)0 B)1 C)2 D)3

3.有以下程序

main()

{

unsigned char a=2,b=4,c=5,d;

d=a|b; d&=c; printf("%d\n",d);

}

程序运行后的输出结果是B

A)3 B)4 C)5 D)6

4.若变量已正确定义,则以下语句的输出结果是()。B

s=32; s^=32; printf("%d",s);

A)-1 B)0 C)1 D)32

5.设有以下语句

int a=1,b=2,c;

c=a^(b<<2);

执行后,c的值为D

A)6 B)7 C)8 D)9

第二章数据输出与输入

第一节第二节数据输出2节合在一起只有1个课件

习题

1.有以下程序段

char ch;

int k;

ch='a';

k=12;

printf("%c,%d,",ch,ch,k);

printf("k=%d\n",k);

已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是D

A)因变量类型与格式描述符的类型不匹配输出无定值

B)输出项与格式描述符个数不符,输出为零值或不定值

C)a,97,12k=12

D)a,97,k=12

2.若变量已正确定义,有以下程序段删除该题

int a=3,b=5,c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

printf("%d,%d,%d\n",a,b,c);

其输出结果是B

A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7 3.有以下程序,其中%u表示按无符号整数输出

main()

{

unsigned short x=0xFFFF;/* x的初值为十六进制数*/

printf("%u\n",x);

}

程序运行后的输出结果是B

A)-1 B)65535 C)32767 D)0XFFFF 4.以下叙述中不正确的是A

A)调用printf函数时,必须要有输出项

B)使用putchar函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以十进制、八进制或十六进制的形式输出

D)使用putchar函数可以不要输出项

5.设有以下程序

main()

{

int c=35; printf("%d", c&c);

}

程序运行后的输出结果是C

A)0 B)70 C)35 D)53

6.以下程序运行后的输出结果是______________。88

main()

{

int x=0210; printf("%X\n",x);

}

第三节数据输入

习题

1.以下程序运行时若从键盘输入:10 20 30<回车>。输出结果是____。A

#include

main()

{

int i=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

printf("%d,%d,%d",i,j,k);

}

A)10,30,0 B)10,20,30 C)0,0,0 D)程序出错2.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。输出结果是 A

#include "stdio.h"

main()

{

char a,b;

a=getchar(); scanf("%d",&b);

a=a-A+0;

b=b*2;

printf("%c %c",a,b);

}

A)程序段有语法错B)1 B C)1 65 D)1 b

3.有以下程序

main()

{

int m=0256,n=256;

printf("%o %o\n",m,n);

}

程序运行后的输出结果是()。

A)0256 0400 B)0256 256 C)256 400 D)400 400

4.有以下程序

main()

{

int a=666, b=888;

printf("%d\n",a,b);

}

程序运行后的输出结果是()。B

A)错误信息B)666 C)888 D)666,888

5.设有以下程序

main( )

{

int x=102,y=012;

printf("%2d,%d\n",x,y);

}

执行后输出结果是C

A)10,01 B)02,12 C)102,10 D)02,10

6.执行以下程序时输入1234567,则输出结果是________。

#include

main()

{

int a=1,b;

scanf("%2d%2d",&a,&b);printf("%d %d\n",a,b);

}

第三章选择结构

第一节关系运算与逻辑运算

习题

1.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是B

A)kk>='A'&&kk<='Z' B)!(kk>='A'‖kk<='Z')

C)(kk+32)>='a'&&(kk+32)<='z' D)isalpha(kk)&&(kk<91)

2.当变量c的值不为2、4、6时,值也为“真”的表达式是B

A)(c==2)‖(c==4)‖(c==6) B)(c>=2&&c<=6)‖(c!=3)‖(c!=5)

C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1)

3.以下选项中,当x为大于1的奇数时,值为0的表达式D

A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0

4.以下关于逻辑运算符两侧运算对象的叙述中正确的是()。D

A)只能是整数0和1 B)只能是整数0或非0整数

C)可以是结构体类型的数据D)可以是任意合法的表达式

5.设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是C

A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m

6.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A

A)(!a==1)&&(!b==0) B)(!a==1)||(!b==0)

C)a && b D)a||(b+b)&&(c-a)

第二节if语句

习题

1.若变量已正确定义,有以下程序段

int a=3,b=5,c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

printf("%d,%d,%d\n",a,b,c);

其输出结果是B

A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7 2.当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是D

A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1 3.下列条件语句中,功能与其他语句不同的是D

A)if(a) printf("%d\n",x); else printf("%d\n",y);

B)if(a==0) printf("%d\n",y); else printf("%d\n",x);

C)if (a!=0) printf("%d\n",x); else printf("%d\n",y);

D)if(a==0) printf("%d\n",x); else printf("%d\n",y);

4.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是C A)if(x++) ; B)if(x>y&y!=0);

C)if(x>y)x- - D)if(y<0) {;}

else y++: else x++;

第三节嵌套的if语句

习题

1.在嵌套使用if语句时,C语言规定else总是C

A)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对

C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对

2.有以下程序

main( )

{ int a=5,b=4,c=3,d=2;

if(a>b>c)

printf("%d\n",d);

else if((c-1>=d)==1)

printf("%d\n",d+1);

else

printf("%d\n",d+2)

}

执行后输出结果是D

A)2 B)3 C)4 D)编译时有错,无结果

3.以下程序的输出结果是C

main( )

{ int a=5,b=4,c=6,d;

printf("%d\n",d=a>b?(a>c?a:c):(b));

}

A)5 B)4 C)6 D)不确定

第四节条件表达式、switch语句、goto语句

习题

1.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是A

A)if((a>b) &&(b>c) ) k=1; B)if((a>b) ||(b>c) ) k=1;

else k=0; else k=0;

C)if(a<=b) k=0; D)if(a>b) k=1;

else if(b<=c) k=1; else if(b>c) k=1;

else k=0;

2.下列叙述中正确的是D

A)beak语句只能用于switch

B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用

D)在switch语句中,不一定使用break语句

3.有以下程序段B

int k=0,a=1,b=2,c=3;

k=ac?c:k;

执行该程序段后,k 的值是

A)3 B)2 C)1 D)0 4.有以下程序D

#include

main()

{

int x=1,y=0,a=0,b=0;

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=%d\n",a,b);

}

程序的运行结果是

A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1 5.以下叙述中正确的是C

A)break语句只能用于switch语句题中

B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环

C)break 语句只能用在循环体内和switch语句体内

D)在循环体内使用break语句和continue语句的作用相同

6.有以下程序

main()

{

int k=5,n=0;

do

{

switch(k)

{case 1: case 3:n+=1; break;

default :n=0;k--;

case 2: case 4:n+=2;k--;break;

}

printf(“%d”,n);

}while(k>0&&n<5);

}

程序运行后的输出结果是

A)235 B)0235 C)02356 D)2345

第四章循环结构

第一节while语句

习题

1.有以下程序

main()

{ int y=10;

while(y--); printf("y=%d\n",y);

}

程序执行后的输出结果是B

A)y=0 B)y=-1C)y=1 D)while构成无限循环2.有以下程序

main()

{

int k=5;

while(--k) printf("%d",k-=3);

printf("\n");

}

执行后的输出结果是A

A)1 B)2 C)4 D)死循环

第二节do-while语句

习题

1.若变量已正确定义,有以下程序段

i=0;

do

printf("%d,",i);

while(i++);

printf("%d\n",i)

其输出结果是B

A)0,0 B)0,1 C)1,1 D)程序进入无限循环2.有以下程序段D

int n,t=1,s=0;

scanf("%d",&n);

do{ s=s+t; t=t-2; }while (t!=n);

为使此程序段不陷入死循环,从键盘输入的数据应该是

A)任意正奇数B)任意负偶数C)任意正偶数 D)任意负奇数

3.以下程序的功能是:将输入的正整数按逆序输出。例如,若输入135,则输出531,请填空。n/=10

#include

main()

{

int n,s;

printf("Enter a number:"); scanf("%d",&n);

printf("Output: ");

do

{

s=n%10; printf("%d",s);

_____;

} while(n!=0);

printf("\n");

}

第三节for语句

习题

1.有以下程序

#include

main()

{

int x=8;

for( ; x>0; x--)

{

if(x%3)

{

printf("%d, ",x--);

continue;

}

printf("%d, ",--x);

}

}

程序的运行结果是D

A)7,4,2 B)8,7,5,2 C)9,7,6,4 D)8,5,4,2

2.以下不构成无限循环的语句或者语句组是A

A)n=0; B)n=0;

do{++n;}while(n<=0); while(1){n++;}

C)n=10; D)for(n=0,i=1; ;i++) n+=i;

while(n); {n--;}

第四节循环结构的嵌套

习题

1.有以下程序

main( )

{

int i,n=0;

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

{

do

{

if(i%3) continue;

n++;

} while(!i);

n++;

}

printf("n=%d\n",n);

}

程序执行后的输出结果是D

A)n=5 B)n=2 C)n=3 D)n=4 2.有以下程序

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);

}

程序执行后的输出结果是B

A)x=4 B)x=8 C)x=6 D)x=12 3.下面程序的功能是输出以下形式的金字塔图案

*

***

*****

*******

main( )

{

int i,j;

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

{

for(j=1;j<=4-i;j++) printf(" ");

for(j=1;j<=_______;j++) printf("*");

printf("\n");

}

}

在下划线处应填入的是B

A)i B)2*i-1 C)2*i+1 D)i+2

第五节循环结构的分析方法

习题

1.以下程序段中的变量已正确定义

for(i=0;j<4;i++,i++)

for(k=1;k<3;k++); printf("*");

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

A)******** B)**** C)** D)*

第五章函数

第一节函数的定义、库函数

习题

1.在C语言中,函数返回值的类型最终取决于A

A)函数定义时在函数首部所说明的函数类型

B)return语句中表达式值的类型

C)调用函数时主函数所传递的实参类型

D)函数定义时形参的类型

2.有以下函数

int fun(char *s)

{

char *t=s;

while(*t++);

return(t-s);

}

该函数的功能是B

A)比较两个字符的大小B)计算s所指字符串占用内存字节的个数

C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中3.程序中对fun函数有如下说明C

void *fun();

此说明的含义是

A)fun函数无返回值

B)fun函数的返回值可以是任意的数据类型

C)fun函数的返回值是无值型的指针类型

D)指针fun指向一个函数,该函数无返回值

第二节函数的调用与函数说明

习题

1.有以下程序

#include

int f(int x)

{

int y;

if(x==0||x==1) return (3);

y=x*x-f(x-2);

return y;

}

main()

{

int z;

z=f(3);

printf("%d\n",z);

}

程序的运行结果是C

A)0 B)9 C)6 D)8

2.以下叙述中错误的是C

A)改变函数形参的值,不会改变对应实参的值

B)函数可以返回地址值

C)可以在函数内部定义函数

D)调用sin函数需要包含头文件math.h

3.若程序中定义了以下函数

double myadd(double a, double b)

{

return (a+b);

}

并将其放在调用语句之后,则在调用之前应进行函数声明,以下选项中错误的是A A)double myadd(double a, b); B)double myadd(double, double); C)double myadd(double b, double a); D)double myadd(double x, double y);

第三节函数的数据传递

习题

1.有以下程序

void f(int v , int w)

{

int t;

t=v;v=w;w=t;

}

main( )

{

int x=1,y=3,z=2;

if(x>y)

f(x,y);

else if(y>z)

f(y,z);

else

f(x,z);

printf("%d,%d,%d\n",x,y,z);

}

执行后输出结果是C

A)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1 2.以下程序的输出结果是_________。1 3

#include

void fun(int x)

{

if(x/2>0)

fun(x/2);

printf("%d ",x);

}

main()

{

fun(3);

printf("\n");

}

第六章指针

第一节变量的地址和指针

习题

1.以下叙述中错误的是C

A)改变函数形参的值,不会改变对应实参的值

B)函数可以返回地址值

C)可以给指针变量赋一个整数作为地址值

D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL 2.以下定义语句中正确的是D

A)int a=b=0 ; B)char …A?=65+1,b='b';

C)float a=1,*b=&a,*c=&b ; D)double a=0.0,b=1.1;

3.设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是D A)float *p=1024; B)int *p=(float x);

C)float p=&x; D)float *P=&x;

第二节指针变量赋值及运算

习题

1.设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是D

A)p=1; B)*q=2; C)q=p; D)*p=5;

2.有以下程序

main()

{

int a=1,b=3,c=5;

int *p1=&a, *p2=&b, *p=&c;

*p=*p1*(*p2);

printf("%d\n",c);

}

执行后的输出结果是C

A)1 B)2 C)3 D)4 3.设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A A)*p=*q; B)p=q; C)*p=&n1; D)p=*q; 4.有以下程序

#include

main()

{

int n,*p=NULL;

*p=&n;

printf("Input n: "); scanf("%d",&p);

printf("output n: "); printf("%d\n",p);

}

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是A A)int n,*p=NULL; B)*p=&n;

C)scanf("%d",&p) D)printf("%d\n",p);

第三节函数之间地址值的传递

习题

1.以下程序的功能是:利用指针指向3个整型变量,并通过指针运算找出3个数中的最大值,输出到屏幕上,请填空:*pmax=x; (或者max=x)

main()

{

int x,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;

py=&y;

pz=&z;

pmax=&max;

__________________

if(*pmax<*py)

*pmax=*py;

if(*pmax<*pz)

*pmax=*pz;

printf("max=%d\n",max);

}

2.void f( int y, int *x)

{ y=y+*x; *x=*x+y;}

main( )

{ int x=2,y=4;

f(y,&x);

printf("%d %d\n",x,y);

}

执行后输出的结果是。8 4

3.以下程序的输出结果是__________。 3 5

#include

void swap(int *a,int *b)

{

int *t;

t=a; a=b; b=t;

}

main()

{

int i=3, j=5, *p=&i, *q=&j;

swap(p,q);

printf("%d %d\n",*p,*q);

}

第七章数组

第一节一维数组

习题

1.有以下程序段

int j; float y; char name[50];

scanf("%2d%f%s",&j,&y,name);

当执行上述程序段,从键盘上输入55566 7777abc后,y的值为B

A)55566.0 B)566.0 C)7777.0 D)566777.0 2.有以下程序

main()

{

char ch[]="uvwxyz",*pc;

pc=ch; printf("%c\n",*(pc+5));

}

程序运行后的输出结果是A

A)z B)0 C)元素ch[5]地址D)字符y的地址3.有以下程序

#include

main()

{

int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++) c[s[i]]++;

for(i=1;i<5;i++) printf("%d",c[i]);

printf("\n");

}

程序的运行结果是C

A)1 2 3 4 B)2 3 4 4 C)4 3 3 2 D)1 1 2 3

第二节二维数组

习题

1.以下错误的定义语句是C

A)int x[][3]={{0},{1},{1,2,3}};

B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D)int x[][3]={1,2,3,4};

2.若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是D

A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][ !1]

3.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是B

A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4]

第三节数组应用举例

习题

1.有以下程序

main()

{ int i,t[][3]={9,8,7,6,5,4,3,2,1};

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

printf("%d", t[2-i][i]);

}

程序执行后的输出结果是B

A)7 5 3 B) 3 5 7 C) 3 6 9 D)7 5 1 2.有以下程序

main()

{

int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t;

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

for(k=i+i;k<4;k++)

if (a[ i ][ i ]< a[ k ][ k ])

{ t = a[ i ][ i ];

a[ i ][ i ]= a[ k ][ k ];

a[ k ][ k ]=t;

}

For(i=0;i<4;i++)

printf("%d,",a[0][ i ]);

}

程序运行后的输出结果是B

A)6,2,1,1, B)6,4,3,2, C)1,1,2,6, D)2,3,4,6,

3.有以下程序

main()

{

int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,j,k,t;

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

for(j=0;j<3;j++)

for(k=j+1;k<4;k++)

if(a[j][ i]>a[k][ i])

{t=a[j][ i];a[j][ i ]=a[k][ i ];a[k][ i]=t;}/*按列排序*/

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

printf("%d, ",a[ i ][j]);

}

程序运行后的输出结果是A

A)1,2,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1,

第八章字符串

第一节字符串与字符串数组

习题

1.以下关于字符串的叙述正确的是D

A)C语言中有字符串类型的常量和变量

B)两个字符串中的字符个数相同时才能进行字符串大小的比较

C)可以用关系运算符对字符串的大小进行比较

D)空串一定比空格打头的字符串小

2.以下正确的字符串常量是D

A)"\\\" B)'abc' C)OlympicGames D)"" 3.设有如下程序段A

char s[20]= "Bejing",*p;

p=s;

则执行p=s;语句后,以下叙述正确的是

A)可以用*p表示s[0]

B)s数组中元素的个数和p所指字符串长度相等

C)s和p都是指针变量

D)数组s中的内容和指针变量p中的内容相等

4.以下能正确定义字符串的语句是D

A)char str[]={' \064'}; B)char str="\x43";

C)char str="; D)char str[]="\0";

第二节字符串的输入输出

习题

1.当用户要求输入的字符串中含有空格时,应使用的输入函数是B

A)scanf() B)getchar() C)gets() D)getc() 2.有以下程序

#include

void fun(char *a,char *b)

{

while(*a=='*') a++;

while(*b=*a) {b++;a++;}

}

main()

{

char *s=”****a*b****”,t[80];

fun(s,t); puts(t);

}

程序的运行结果是C

A)*****a*b B)a*b C)a*b**** D)ab

第三节对字符串的操作

习题

1.若有定义:char *x="abcdefghi";,以下选项中正确运用了strcpy函数的是D

A)char y[10]; strcpy(y,x[4]);

B)char y[10]; strcpy(++y,&x[1]);

C)char y[10],*s; strcpy(s=y+5,x);

D)char y[10],*s; strcpy(s=y+1,x+1);

2.有以下程序

#include

main()

{

char p[20]={ 'a', 'b', 'c', 'd'},q[]="abc", r[]="abcde"

strcat(p,r);

strcpy(p+strlen(q),q);

printf("%d \n",strlen(p));

}

程序运行后的输出结果是

A)9 B)6 C)11 D)7

3.有以下程序

相关主题