C)ab c D)ab
12. 判断字符串a和b是否相等,应当使用 。
A)if (a= =b) B)if (a=b) C)if (strcpy(a,b)) D)if(strcmp(a,b)) 13. 有字符数组a[80]和b[80],则正确的输出语句是 。
A)puts (a,b); B)printf(“%s,%s”,a[],b[]);
C)putchar(a,b); D)puts(a),puts(b); 14. 若有如下定义和语句: char s[12]= “abook!”;
printf(“%d”,strlen(s) );则输出结果是: 。
A)12 B)10 C)6 D)7
二、程序填空题
1.以下程序可求出所有水仙花数(指3位正整数中各位数字立方和等于该数本身,如153=13+53+33),请填空。
main( )
{ int x, y ,z, a[10], m, i=0;
printf(“shui xian huan shu :\\n”); for(___(1)____;m<1000;m++) { x=m/100;
y=____(2)____; z=m;
if(m==x*x*x+y*y*y+z*z*z)
{____(3)_____; i ++; } } for( x=0;x
printf(“m”,a[x] ) ; }
2. 打印以下杨辉三角形.(要求打印出10行) main( )
{ int a[10][10],i, j ; 1 for( i=0;i<10;i++) 1 1 {__(1)___ ___(2)___ } 1 2 1 for( i=2; i<10; i++ ) 1 3 3 1 for(j=1; j
{ for( j=0; j<=i; j++) printf(“]”,a[i][j]); printf(“\\n”);} }
3. 用起泡法对十个数由大到小排序。 main( )
{ int a[11], i, j, t;
printf(“input 10 numbers: \\n”); for(i=1;i<11;i++) scanf(“%d”,&a[i]); printf(“\\n”);
for (j=1;j<=9;j++)
for(i=1; _(1)__; i++)
if (__(2)___) {___(3)___ a[i]=a[i+1]; __(4)__ } printf(“the sorted numbers: \\n”); for ( i=1; i<11; i++) printf(“%d”,a[i]); }
4. 下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。请填空。
main( )
{ int a[10],b[10], i for(i=0;i<10; i++) scanf(“%d”,&a[i]) ; for(i=1;____ (1) ___; i++) b[i]=____ (2)_____; for(i=1;i<10;i++) { printf(“=”,b[i]); if (___(3)___)
printf(“\\n”); } }
5. 以下程序是求矩阵a , b的和,结果存入矩阵c中并按矩阵形式输出。请填空: main( )
{ int a[3][4] = { { 7, 5, -2, 3 },{ 1, 0, -3, 4 },{ 6, 8, 0, 2 } }; int b[3][4] = { { 5, -1, 7, 6 },{ -2, 0, 1, 4 },{ 2, 0, 8, 6 } }; int i, j, c[3][4]; for ( i=0; i<3; i++ )
for ( j=0; j<4; j++ )
c[i][j] = ___(1)____ ; for ( i=0; i<3; i++ )
{ for ( j=0; j<4; j++ )
printf ( “=”, c[i][j] ) ; ____(2)___ ; } }
四、读程序写结果题
2. 下列程序的运行结果是 。 main( )
{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}, b[4][3]; int i, j;
for (i=0;i<3;i++ )
for (j=0;j<4;j++ ) b[j][i]=a[i][j];
for ( i=0;i<4;i++ )
{ for ( j=0;j<3;j++ )
printf( “]”,b[i][j] ); printf( “\\n” ); } }
3. 下列程序的运行结果是 。 main( ) { int a[21],i,j,n=0; for(i=2;i<20;i++ )
a[i]=i;
for ( i=2;i<10;i++ ) {if (a[i]==0) continue; for (j=i+1;j<=20;j++)
if (a[j]%a[i]==0) a[j]=0;} for ( i=2;i<=20;i++ )
if (a[i]!=0) { printf(“M”,a[i]); n=n+1;} if (n%4==0) printf(“\\n”); }
4. 下面程序的运行结果是:___________。 main( )
{ char a[5][5],i,j; for(i=0;i<5;i++)
for(j=0;j<5;j++) if(i==0 ||i+j==4) a[i][j]='*'; else a[i][j]=' '; for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf(\
printf(\ } }
5. 下面程序的运行结果是: 。 main( )
{ char a[5][5],i,j; for(i=0;i<5;i++)
for(j=0;j<5;j++) if(i= =0||i= =j) a[i][j]='*'; else a[i][j]=' '; for(i=0;i<5;i++) {for(j=0;j<5;j++)
printf(\
printf(\ }
}
6. 下面程序的运行结果是: 。 main( )
{ int a[5][5],i, j ; for( i=0;i<5;i++) { a[i][0] =1; a[i][i] =1; } for( i=2; i<5; i++ ) for(j=1; j
{ for( j=1; j<=i; j++) printf(“]”,a[i][j]); printf(“\\n”);}
}
7. 下面程序的运行结果是: 。 #include
{ char str[ ]={“a1b2c3d4e5”},i,s=0;
for(i=0;str[i]!=?\\0?;i++) if(str[i]>=?a?&&str[i]<=?z?) printf(“%c\\n”,str[i]); printf(“\\n”); }
8. 下面程序运行结果是: 。 main( )
{ char a[6][6], i, j; for(i=0;i<6;i++) for(j=0;j<6;j++) { if ( i a[i][j]= ?#?; else if(i==j) a[i][j]= ? ?; else a[i][j]= ?*? ; } for(i=0;i<6;i++) { for(j=0;j<6;j++) printf(“%c”,a[i][j]); printf(“\\n”);} } 第六 一、选择题 1.以下函数定义正确的是: 。 A) double fun(int x, int y) B) double fun(int x; int y) C) double fun(int x, int y) ; D) double fun(int x , y) 2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: 。 A)地址传递; B)单向值传递; C)双向值传递; D)由用户指定传递方式 3.以下关于C语言程序中函数的说法正确的是: 。 A)函数的定义可以嵌套,但函数的调用不可以嵌套; B)函数的定义不可以嵌套,但函数的调用可以嵌套; C)函数的定义和调用均不可以嵌套; D)函数的定义和调用都可以嵌套。 4.以下正确的函数形式是: 。 A)double fun(int x,int y) B)fun (int x,y) {z=x+y;return z;} {int z;return z;} C)fun(x,y) D)double fun(int x,int y) {int x,y; double z; {double z; z=x+y; return z;} z=x+y; return z;} 5.以下说法不正确的是: 。 C 语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)形参应与其对应的实参类型一致 6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 。 A) float型 B) int 型 C)long 型 D)double 型 8.若用数组名作为函数调用的实参,传递给形参的是 。 A)数组的首地址 B)数组第一个元素的值 C)数组中全部元素的值 D)数组元素的个数 11.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为 。 A)自动(auto) B)静态(static) C)外部(extern) D)寄存器(register) 12.下面程序的正确运行结果是: 。 main( ) {int a=2, i; for(i=0;i<3;i++) printf(“M”,f(a) ); } f( int a) { int b=0; static int c=3; b++; c++; return (a+b+c);} A)7 7 7 B)7 10 13 C)7 9 11 D)713.下面函数调用语句中实参的个数为: 。 func((exp1,exp2),(exp3,exp4,exp5)) A) 1 B) 2 C) 4 D) 5 22.有如下程序 int func(int a,int b) { return(a+b);} main( ) { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\\d\\n”,r); } 该程序的输出的结果是 。 9 8