桂林电子科技大学C语言程序设计习题集及答案 下载本文

{ int x=1,y=1; while(y<=5)

{ if(x>=10) break; if(x%2==0)

{ x+=5; continue; } x-=3; y++; }

printf(\%d,%d\,x,y); }

A 6,6 B 7,6 C 10,3 D 7,3 17 以下程序执行后的输出结果是_A__。

main()

{ int a=5;

while(!(a-->5)) { switch(a)

{ case 1:a++; case 4:a+=4;

case 5:a+=5;break; default:a-=5; } }

printf(\%d\\n\,a); }

A 12 B 7 C 5 D 13 18 对于下面的for循环语句,可以断定它执行_C__次循环。

for(x=0,y=0;(y!=67)&&(x<5);x++) printf(\----\);

A无限 B 不定 C 5次 D 4次 19 在执行以下程序时,如果从键盘上输入:ABCdef,则输出结果为_B__。

#include \stdio.h\ main()

{ char ch;

while((ch=getchar())!='\\n')

{ if(ch>='A' && ch<='Z') ch=ch+32;

else if(ch>='a' && ch<='z') ch=ch-32; printf(\%c\,ch); }

printf(\\\n\); }

A ABCdef B abcDEF C abc D DEF 20 当执行以下程序时,_A__。

int a=1;

do{ a=a*a; }while(!a);

A 循环体将执行1次 B 循环体将执行2次 C 循环体将执行无限次 D 系统将提示有语法错误

二 填空题(每空3分,共33分)

12

1 若输入字符串:abcde<回车>,则以下while循环体将执行_0__次。

while((ch=getchar())=='e') printf(\*\); 2 以下while循环执行的次数是_无限多次__。

k=0; while(k=10) k=k+1;

3 下列程序的输出结果是_3,2,-1__。执行三次循环直到不满足条件

main()

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

while(z-->0 && ++x<5) y=y-1; printf(\%d,%d,%d\\n\,x,y,z); }

4 下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。

main()

{ int a,b,c,i; a=c=0;

for(i=0;i<=10;i+=2) { a+=i;

_ 【1】b=i+1 ; c+=b; 关键 }

printf(\偶数之和=%d\\n奇数之和=%d\\n\,a, 【2】c-11 ); }

5 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

main()

{ int i,j;

for(i=0; _ 【1】i<10 ; i++) { j=i*10+6;

if(_ 【2】j%3 )continue; printf(\%d\\n\,j); } }

6 以下程序的输出结果是_5__。1+2+2

main()

{ int s,i;

for(s=0,i=1;i<3;i++,s+=i); printf(\%d\\n\,s); }

7 要使以下程序段输出10个整数,请填入一个整数。

for(i=0;i<=_18或19__;printf(\%d \\n\,i+=2)) ; 8 程序的功能是根据以下近似公式求π值:

?2111

?1?????62?23?3n?n

请填空完成求π的功能。

#include \math.h\ main()

{ int n=30000; double s=0.0; long i; for(i=1;i<=n;i++) s=s+_ 【1】 1.0/(i*i) ; printf(\pi=%f\\n\,_ 【2】sqrt(6*s) );

13

}

三 程序填空题(每空3分,共27分)

1111 下列程序是求 的值。 1?????2450#include \stdio.h\ main()

{ int i=2; float sum=1;; while( 【1】i<=50 )

{ sum=sum+1.0/i; 【2】i=i+2 ; } printf(\sum=%f\\n\, 【3】sum ); }

2 以下程序的功能是从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为负数时,结束输入。 main()

{ float x,max,min; scanf(\%f\,&x);

max=min= 【1】x ; do{ if(x>max) max=x;

if(x

} while( 【3】x>=0 );

printf(\%f,%f\,max,min); }

3 下面的程序用来求出所有的水仙花数。所谓水仙花数是指一个3位数,它的各位数字的立方和恰好等于它本身。 main()

{ int n,i,j,k; for(n=100; 【1】n<=999;n++ ) /* 判断3位数n是否是水仙花数 */ { i=n/100; /* i是n的百位上的数字 */

j= 【2】n/10 ; /* j是n的十位上的数字 */ k=n; /* k是n的个位上的数字 */ if( 【3】n==i*i*i+j*j*j+k*k*k ) printf(\} }

数组

一 单项选择题(每题2分,共40分)

1 以下对一维整型数组a的正确定义(说明)的是_D__。

A int a(10); B)int n=10,a[n]; C int n; D #define SIZE 10

scanf(\%d\,&n); int a[SIZE]; int a[n];

2 若有定义(说明)int a[10];,则对数组a的元素正确引用的是_D__。

14

A a[10] B a[3.5] C a(5) D a[10-10] 3 执行下面程序段后,变量k 的值是__A_。

int k=3,s[2];

s[0]=k; k=s[1]*10;

A 不定值 B 33 C 30 D 10 4 以下程序的输出结果是__B_。

main()

{ int i,k,a[10],p[3]; k=5;

for(i=0;i<10;i++) a[i]=i;

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

printf(\%d\\n\,k); 21=1+2*(3*3+1) }

A 20 B 21 C 22 D 23 5 以下对一维整型数组a初始化的语句中正确的是_D__。 A int a[10]=(0,0,0,0,0); B int a[10]=(); C int x=2,a[10]={10*x}; D int a[10]={0}; 6 若有以下说明,则数值为4的表达式是_D__。

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;

A a[g-c] B a[4] C a['d'-'c'] D a['d'-c] 7 下列程序运行后的输出结果是_B__。

#define MAX 10 void main()

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

for(i=0;i

A sum=55 B sum=-54 C sum=-55 D sum=54 8 以下程序的输出结果是__B_。

main()

{ int y=18,i=0,j,a[8];

do{ a[i]=y%2; i++; y=y/2; }while(y>=1);

for(j=i-1;j>0;j--) printf(\%d\,a[j]); 执行四次循环 }

A 1000 B 1001 C 1010 D 1100 9 以下对二维数组a的正确定义(说明)的是__C_。

A int a[3][]; B float a(3,4); Cdouble a[1][4]; D float a(3)(4); 10 若有定义(说明)int a[3][4];,则对数组a的元素的引用非法的是_D__。

A a[2][2*1] B a[1][3] C a[4-2][0] D a[0][4] 11 以下不能对二维数组a进行正确初始化的语句是_C__。

A int a[2][3]={0}; B int a[][3]={{1,2},{0}}; C int a[2][3]={{1,2},{3,4},{5,6}}; D int a[][3]={1,2,3,4,5,6}; 12 下列数组定义语句中,正确的是__C_。

15