C语言1-7章练习题 下载本文

printf(“%d,%d”,a,b); }

A) 6,1 B) 2,1 C) 6,0 D) 2,0

6. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 。 if(x>y) z=x; x=y; y=z;

A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 7. 以下程序的运行结果是 。

main() { int m=5; if(m++>5)

printf(“%d\\n”,m);

else;

printf(“%d\\n”,m--); }

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

8. 若运行时给变量x输入12,则以下程序的运行结果是 。

main() { int x,y;

scanf(“%d”,&x); y=x>12 ? x+10 : x-12;

printf(“%d\\n”,y); }

A) 4 B) 3 C) 2 D) 1 (二)编程题

1. 编程实现:输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数

字,否则输出两数之和。 2. 编程判断输入的正整数是是否既是5又是7的整倍数。若是,则输出yes;否则输出no。

??1(x?0)?3. 用switch编程实现: y??0(x?0)

?1(x?0)? 4. 用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’ 五、循环控制 1.设有程序段 int k=10;

while(k=0)k=k-1;

这下面描述中正确的是_________.

a)while循环执行10次 B)循环是无限循环

C)循环体语句以此也不执行 D)循环体语句执行一次 2.语句while(!E);中的表达式!E等价于________. A)E==0 B)E!=1 C)E!=0 D)E==1 3.下面程序段的运行结果是_______. int n=0;

while(n++<=2);printf(\

A)2 B)3 C)4 D)有语法错 4.下面程序的运行结果是____. #include main() {

int num=0; while(num<=2) { num++;

printf(\ } }

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

5.以下程序段________. x=-1; do{ x=x*x; }while(!x);

A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 6.若有如下语句 int x=3;

do{printf(\ 则上面程序段______.

A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环 7.下面程序的运行结果是______. #include main() {int y=10;

do{y--;}while(--y); printf(\ }

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

8.若i为整型变量,则以下循环执行次数是_____. for(i=2;i==0;)printf(\ A)无限次 B)0次 C)1次 D)2次

9.执行语句for(i=1;i++<4; );后变量i的值是______. A)3 B)4 C)5 D)不定 10.以下正确的描述是_______.

A)continue语句的作用是结束整个循环的执行 B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同

D)从多层循环嵌套中退出时,只能使用goto语句 (二)、填空题

1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束 循环。请填空。 int n=0,c; c=getchar();

while(__c!=’\\n’__) {

if(__c>=’0’&& c<=’9’___)n++; c=getchar(); }

2.下面程序的功能是用\辗转相除法\求两个正整数的最大公约数。请填空。 #include main() {int r,m,n;

scanf(\ if(m

while(r){m=n;n=r;r=_m % n__;} printf(\ }

3.下面程序的运行结果是____127_____. #include main()

{int a,s,n,count; a=2;s=0;n=1;count=1;

while(count<=7){n=n*a;s=s+n;++count;} printf(\ }

4.下面程序段的运行结果是____-5_____. i=1;a=0;s=1;

do{a=a+s*i;s=-s;i++;}while(i<=10); printf(\

5.下面程序段的运行结果是__8_____. i=1;s=3; do{s+=i++;

if(s%7==0)continue; else ++i; }while(s<15); printf(\六、数组

1.以下为一维整型数组a的正确说明是_________. A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10; scanf(\ int a[n];

2.以下对二维数组a的正确说明是________. A)int a[3][]; B)float a(3,4); C)double a[1][4] D)float a(3)(4);

3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______. (假设a[0][0]位于数组的第一个位置上。)

A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1

4.若二维数组a有m列,则在a[i][j]前的元素个数为______. A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1 5.若有以下程序段:

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