c语言习题册及答案

.

6

20.运行以下程序,从键盘输入:AhaMA[空格]Aha<回车>,则下面程序的运行结果是( )。

#include void main()

{ char s[80],c=’a’;

int i=0;

scanf(“%s”,s); while(s[i]!=’\\0’)

{ if(s[i]==c) s[i]=s[i]-32;

else if(s[i]==c-32) s[i]=s[i]+32; i++; } puts(s); }

A)ahAMa B)AbAMa C)AhAMa[空格]ahA D)ahAMa[空格]ahA 二、填空题

1.以下程序的输出结果是 【1】 。abc #include void main()

{ char s[ ]=”abcdef”; s[3]=’\\0’;

printf(“%s\\n”,s); } 2.若有定义:double w[10];

则w数组元素下标的上限为 【2】9 ,下限为 【3】0 。

3.在C语言中,二维数组元素在内存中的存放顺序是 【4】 。按行存放 4.若有定义:int a[3][4]={{1,2{,{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是 【5】0 ,a[2][1]得到的初值是 【6】6 。

5.以下程序可求出所有水仙花数(提示:所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数。如407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数)。请填空。 #include void main( )

{ int x,y,z,a[8],m,i=0;

printf (“the special number are(in the arrange of 1000):\\n”); for( 【7】 ;m++) m=100;m<1000 { x=m/100;

y= 【8】 ; m/10 z=m;

if(x*100+y*10+z= =x*x*x+y*y*y+z*z*z) { 【9】 ;i++ ;} a[i]=m

.

.

}

for(x=0;x

printf(“m”,a[x]); } 三、读程序写结果

1.以下程序运行后的输出结果是( 19 )。 #include void main()

{ int aa[5][5]={{1,2,3,4},{5,6,1,8},{5,9,10,2},{1,2,5,6}}; int i,s=0;

for(i=0;i<4;i++) s+=aa[i][2];

printf(“%d”,s); }

2.以下程序的输出结果是( 4 )。注意s初值为1 #include void main()

{ int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) s+=a[i][j];

printf(“%d\\n”,s); } 3.下列程序的输出结果是( )。12344

#define N 20

fun(int a[ ],int n,int m) { int i,j;

for(i=m;i>n;i--)a[i+1]=a[i]; } void main()

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

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

printf(“%d”,a[i]); }

4.有下列程序: 6 7 8 9 10

#include

void change(int k[ ]) { k[0]=k[5]; } void main()

{ int x[10]={1,2,3,4,5,6,7,8,9,10},n=0; while(n<=4)

{ change(&x[n]); n++; }

.

.

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

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

5.以下程序运行后的输出结果是( )。1,2,3,4,5,6,7,8,9,10,

void f(int b[ ]) { int i;

for(i=2;i<6;i++) b[i]*=2; } void main()

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

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

printf(“%d,”,a[i]); }

四. 阅读下列程序,在【】处填入适当内容,使程序完整

1.下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行4个元素输出数组b, 请填空。

#include void main()

{ int a[10],b[10],i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=1;i<10;i++)

【1】 ; b[i-1]=a[i]-a[i-1] for(i=1;i<10;i++)

{ printf(“%d”, 【2】 ); b[i-1]

if(i%4= =0) printf(“\\n”); }

2.下面程序将二维数组a的行和列元素互换后存放到另一个二维数组b中,请填空。

#include void main( )

{ int a[2][3]={{1,2,3},{4,5}},b[3][2],i,j; for(i=0;i<2;i++)

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

【3】 ; } b[i][j]=a[i][j]

}

3.下列程序功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

#include void main()

.

.

{ int x[10],a[9],i;

for (i=0;i<10;i++) scanf(“%d”,&x[i]);

for( 【4】 ;i<10;i++) i=1 a[i-1]=x[i]+ 【5】 ; x[i-1] for(i=0;i<9;i++)

printf(““%d”,a[i]); printf(“\\n”); } 4.用冒泡法进行排序。 #include void main()

{ int a[10],i,j,t; for(i=0;i<10;i++) scanf(\

for(i=1; 【6】 ;i++) i<10

for(j=0; 【7】 ;j++) j<10-i if(a[j]>a[j+1])

{ t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i<=9;i++) printf(\ printf(\5.用选择法进行排序。 #include void main()

{ int a[10],i,j,t,mini,min; for(i=0;i<10;i++) scanf(\

for(i=0; 【8】 ;i++) i<9 { mini=i;

for( 【9】 ;j<=9;j++) j=i+1 if(a[j]

{t=a[i];a[i]=a[mini];a[mini]=t;} }

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

printf(\ printf(\

.

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4