昆明理工大学C语言程序设计课后习题答案 下载本文

void 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(\

A.x=4 B.x=8 C.x=6 D.x=12

32.设变量已正确定义,则以下能正确计算f=n!的程序段是_______。 A.f=0; B.f=1; for(i=1;i<=n;i++) for(i=1;i<=n;i--) f*=i;f*=i;

C.f=1; D.f=1;

for(i=n;i>1;i++) for(i=n;i>=2;i--) f*=i; f*=i;

33.以下程序运行后的输出结果是_______。

#include \void main() { int k=5,n=0; while(k>0) { switch(k)

{ default : break; case 1 : n+=k; case 2 :

case 3 : n+=k;} k--;}

printf(\

A.0 B.4 C.6 D.7 34.以下程序的输出结果是_______。

#include \void main() {int a=1,b;

for(b=1;b<=10;b++) {if(a>=8)break;

if(a%2==1){a+=5;continue;} a-=3; }

printf(\A.3 B.4 C.5 D. 6

35.以下程序输出结果是_______。 #include \void main() {int i;

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

switch(i)

{ case 0:printf(\ case 2:printf(\default:printf(\

A.022111 B.021021 C.000122 D.012 36.以下程序输出结果是_______。 #include \void main() { int i=0,s=0; for(;;)

{if(i==3||i==5) continue; if(i==6) break; i++;s+=i;};

printf(\

A.10 B.13 C.21 D.程序进入死循环 37.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是_______。 A.for(i=1,p=1;i<=5;i++) p*=i; B.for(i=1;i<=5;i++){ p=1;p*=i;} C.i=1;p=1;while(i<=5){p*=i; i++;} D.i=1;p=1;do{p*=i;i++;}while(i<=5); 38.以下程序执行后的输出结果是_______。

#include \void main()

{ int x=0,y=5,z=3;

while(z-->0&&++x<5) y=y-1; printf(\

A.3,2,0 B.3,2,-1 C.4,3,-1 D.5,-2,-5 39.以下程序执行后的输出结果是_______。

#include \void main() { int i,n=0; for(i=2;i<5;i++)

{ do{ if(i%3) continue;n++; }while(!i); n++; }

printf(\

A.n=5 B.n=2 C.n=3 D.n=4

40.下面程序的功能是输出以下形式的金字塔图。在下划线处应填入的是_______。

*

*** ***** ******* #include \voidmain( ) { int i,j;

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

{ for(j=1;j<=4-i;j++) printf(\for(j=1;j<=_______;j++) printf(\printf(\}

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

第5章 数组

二、习题

(一)、是非题

1.数组名代表数组的首地址。

A.对 B.错

2.字符型数组可以用来存储字符串,因此可以用字符串初始化数组,例如:char str[]=\

Programming\。

A.对 B.错

3.函数strcpy(str1,str2)是将字符串 str2 连接到字符串 str1之后。

A.对 B.错

4.一个数组可以存储不同类型的数据。

A.对 B.错

5.数组在定义时可以不指定数组的长度,可根据程序中实际使用的元素个数决定。

A.对 B.错

6.在 C 语言中,只有当两个字符串所包含的字符个数相同时,才能比较大小。例如,字符串“That”与“The”就不能进行大小比较。 A.对 B.错

7.若有定义:int a[10];,使用数组元素时,下标的最小值是1,最大值是10。

A.对 B.错

8.在 C 语言中引用数组元素时,其数组的下标可以是任何类型的表达式。

A.对 B.错

9.任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占用存储空间。

A.对 B.错

10.一维数组的元素实质上就是一个变量,代表内存中的一个存储单元。

A.对 B.错

11.若有说明:int a[3][4]={0};,则只有元素a[0][0]可得到初值0。

A.对 B.错

12.若有说明:int a[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小不能确定。

A.对 B.错

13.若一维数组在定义时进行了初始化,则可以省略数组长度,系统会根据初始值个数确定该数组长度。

A.对 B.错

14.数组初始化时,若初始值的个数少于数组定义的长度,C语言会自动将剩余的元素初始化为初始化列表中最后一个初始值。

A.对 B.错

15.可以对字符型数组进行整体输入、输出。

A.对 B.错

16.可以对实型数组进行整体输入、输出。

A.对 B.错

17.设有定义:double a[4][5];,则数组a中元素的个数是9。

A.对 B.错 18.设有定义:int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};,则表达式a[1][2]+a[2][3]的值9。

A.对 B.错 19.设有定义:char s[]={\,则执行printf(\后输出的值是6。

A.对 B.错

20.设有两个整型数组a和b,可以通过a=b,将数组b整体赋值给数组a。

A.对 B.错 (二)、选择题

1.设有两字符串“Good”、“Morning”分别存放在字符数组 str1[10]、str2[10]中,下面语句中能把“Morning”连接到“Good”之后的是______。 A.strcpy(str1,str2); B.strcpy(str1, \

C.strcat(str1, \ D.strcat(\2.以下对一维整型数组 a 定义正确的是______。

A.int a(10); B.int n=10,a[n];

C.int n;scanf(\D.#define SIZE 10 int a[SIZE];

3.下列字符串赋值语句中,不能正确把字符串“Hello World”赋给数组的语句是______。

A.char a1[]={'H','e ','l','l','o','','W','o','r','l','d','\\0'}; B.char a2[15]; strcpy(a2,\C.char a3[15]; a3=\D.char a4[10]={ \

4.用 scanf 函数输入一个字符串到数组 str 中,下面正确的语句是______。

A.scanf(\ B.scanf(\C.scanf(\ D.scanf(\

5.以下能对二维数组 a 进行正确说明和初始化的语句是______。

A.int a()(3)={ (1,2,3),(2,4,6)};B.int a[2][]={{3,2,1},{5,6,7}}; C.int a[][3]={{3,2,1},{5,6,7}};D.int a(2)()={(1,2,3),(2,4,6)}; 6.判断字符串 a 和 b 是否相等,应当使用______。

A.if(a==b) B.if(a=b)

C.if(strcat(a,b)) D.if(strcmp(a,b))

7.有字符数组 a[80]和 b[80],则正确的输出语句是______。

A.puts(a,b); B.puts(a);puts(b);

C.printf(\ D.putchar(a,b); 8.下面程序的运行结果是______。 #include main()

{int a[5],i;

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

{ a[i]=9*(i-2+4*(i>3))%5; printf(\

A.-3-404 4 B.-3-4043C.-3-40 4 2 D.-3-40 4 0

9.假设 array 是一个有 10 个元素的整型数组, 则下列写法中正确的是______。

A.array[0]=10; B.array=0;C.array[10]=0;D.array[-1]=0; 10.下面程序的运行结果是______。

#include main()

{int a[3],i,j,k;

for(i=0;i<3;i++) a[i]=0; k=2;

for(i=0;i

printf(\

A.0 B.1 C.2 D.3 11.若有定义:int a[5]={1,2,3,4,5};char b='c',c;,则下面表达式中数值为 2 的是______。

A.a[2] B.a[c-b] C.a[b] D.a[b-'b'] 12.下面程序的运行结果是______。

#include main()

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

for(i=0;i<=2;i++)printf(\A.3 5 7 B.3 6 9C.1 5 9 D.1 4 7 13.下面程序的运行结果是______。

#include main()

{char c[5]={'a','b','\\0','c','\\0'}; printf(\

A.'a' 'b' B.abC.ab c D.ab\\0c\\0 14.下面程序的运行结果是______。

#include main()

{char s[12]= \printf(\

A.6 B.7 C.10 D.12

15.若有说明:int a[3][4]; 则对a数组元素的正确引用是______。

A.a[2][4] B.a[1,3]C.a[1+1][0] D.a(2)(1)

16.以下各组选项中,均能正确定义二维实型数组a的选项是______。

A.float a[3][4]; float a[][4]; float a[3][]={{1},{0}}; B.float a(3,4); float a[3][4]; float a[][]={{0};{0}}; C.float a[3][4]; static float a[][4]={{0},{0}}; D.float a[3][4]; float a[3][];

17.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式是______。(假设