总 复 习
EX1 有 int a=3,b=4,c=5,x,y;,则以下表达式 !(x=a)&&(y=b)&&c的值为 【 】0
EX2 若 s是 int型变量,且 s=6,则下面表达式
s%2+(s+1)%2的值为 【 】 。1
以下程序段的输出结果是 【 】 。
int x=0177; printf("%d",x);
EX3 127
EX4 以下程序的运行结果是 【 】
{int x,y,z;
x=1;y=1;z=0;
x=x||y&&z;
printf("%d,%d",x,x&&!y||z); }
1,0
EX5 以下程序的运行结果是 【 】
{int a,b,c;
int s,w=0,t=0;
a=-1;b=3;c=3;
if(c>0)s=a+b;
if(a<=0)
{if(b>0)
if(c<=0)w=a-b; }
else if(c>0)w=a-b;
else t=c;
printf("%d,%d,%d\n",s,w,t); }
2,0,0
EX6 以下程序段的运行结果是 【 】
int x=1,y=0;
switch(x)
{case 1:
switch (y)
{ case 0:printf("*1*");break;
case 1:printf("*2*");break;}
case 2:printf("*3*");break;
}
*1**3*
b=i+1
c-11
下面程序的功能是计算 1至 10之间的奇数和偶数之和。
main( )
{ int a,b,c,i;
a=c=0;
for(i=0;i<=10,i+=2)
{ a+=i;
【 】 ;
c+=b; }
printf("偶数之和 =%d",a);
printf("奇数之和 =%d",【 】 );
}
EX7
下面程序段是从键盘输入的字符中统计数字字符个数,
用换行符结束循环。请填空。
int n=0,c;
c=getchar();
while(【 】 )
{ if (【 】 ) n++;
c=getchar();
}
EX8
c!='\n'
(c>='0') &&(c<='9’)
6
a=-5下面程序段的运行结果是 【 】 。
i=1; a=0; s=1;
do { a=a+s*i; s=-s; i++; } while(i<=10);
printf("a=%d",a);
EX9
设 x和 y均为 int型变量,则执行下的循环后,y值为 【 】
for(y=1,x=1;y<=50;y++)
{ if(x>=10)break;
if (x%2==1)
{ x+=5; continue;}
x-=3; }
EX10
EX11 运行以下程序后,如果从键盘上输入 student#<回车 >,则输出结果为 【 】 。
#include<stdio.h>
main( ){int v1=0,v2=0;
char ch;
while((ch=getchar( ))!='#')
switch(ch)
{case 'd':
case 't':
default,v1++;
case 'a',v2++; }
printf("%d,%d\n",v1,v2);}
7,7
EX12 若变量都已正确说明,则以下程序段输出为 ( )
int a=1,b=2,c=3;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
A)a=1 b=2 c=1 B)a=1 b=2 c=3
C)a=1 b=3 c=1 D)a=2 b=3 c=2√
EX13 以下正确的函数定义是 ( ).
A) double fun(int x,int y)
{z=x+y; return z; }
B) double fun(int x,int y);
{int z;
z=x+y; return z; }
C) fun(int x,y)
{int z; return z; }
D) double fun(int x,int y)
{double z;
z=x+y; return z; }

EX14 有如下程序
main()
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c++;
printf("%d\n",c);
}
该程序的输出结果是 ( )
A) 0 B) 1 C) 2 D) 3√
EX15若定义 char s[20]="programming",*ps=s;则不能代表字符 a的表达式是 ( )。
a,ps+5 b,s[5] c,ps[5] d,ps+=5,*ps


EX16下面程序段中,for循环的执行次数是 ( )。
char *s="\ta\018bc";
for( ;*s!='\0';s++) printf("*");
A) 9 B) 5 C) 6 D) 7
EX17以下能正确进行字符串赋值、赋初值的语句组是 ( )。
a,char s[5]={'a','e','i','o','u'};
b,char *s; s="good!";
c,char s[5]="good!";
d,char s[5]; s="good";

EX18以下程序运行后,输出结果是 ( )。
{char *p,s[ ]="china";
p=s;
while(*p!='\0') p++;
printf("%d\n",p-s); }
A) 99 B) 97 C) 5 D) 某一地址√
EX19 C语言中的函数 ( ).
A)可以嵌套定义。
B)不可以嵌套调用。
C)可以嵌套调用,但不能递归调用。
D)嵌套调用和递归调用均可。√
EX20对下列递归函数:
int f(int n)
{ return (n==0)? 1,f(n-1)+2;
}
函数调用 f(3)的返回值是 ( ).
A) 5 B) 6 C) 7 D) 以上均不是√
EX21 执行下列语句后,程序的运行结果为 ( ).
int a=10;
f( )
{a=12;
}
main()
{f();
printf("%d",a);
}
A) 10 B) 12 C) 0 D) 不确定√
EX22 下列程序的执行结果为 ( ).
float f1(float x)
{ int k=2;
k=k*x;
return k; }
main()
{ float b=4.3;
printf("%.1f",f1(b));
}
A) 8.6 B) 9.0 C) 8.0 D) 8√

EX23 执行下列程序后,变量 a的值应为 ( ).
f1(float x)
{return x+1.3;}
main( )
{float a;
a=f1(2.4);
}
A) 3.7 B) 3 C) 4 D) 不确定

EX24写出下面程序输出结果 ( )
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1:
switch(y)
{case 0,a++; break;
case 1,b++; break;}
case 2,a++; b++; break;}
printf("a=%d,b=%d\n",a,b) ; }
A) a=2,b=1 B) a=1,b=1
C) a=1,b=0 D) a=2,b=2