当前位置:文档之家› 第五章C语言

第五章C语言

第五章
1.以下合法的字符常量是
A '0xDE' B \101 C '\' D '\''
答案:D
分析:表示转义字符中的单引号字符

2.以下不合法的字符常量是
A 'a' B '\179' C '\xee' D '\n'
答案:B
分析:B)’\179’中的9中超出了八进制数值的范畴
3.已定义ch为字符型变量,以下赋值语句中错误的是
A ch="\"; B ch=62+3; C ch='\0'; D ch='\xaa';
答案:A
分析:
A)字符变量要保存字符常量,字符常量要用单引号引起来,同时,这应是一个转义字符,正确的应为:ch=’\\’
B)等价于ch=’A’
C)’\0’为转义字符,赋值正确
D)十六进制表示的转义字符

4.以下程序的输出结果是
main()
{ char x='C';
x=(x>='A'&&x<='Z')?(x+32):x;
printf("%c",x);
}
A C B c C 67 D 99
答案:B
分析:条件表达式x=(x>=’A’&&x<=’Z’)?(x+32):x的第一个式子(x>=’A’&&x<=’Z’)为真,因此执行x+32这个操作,所以x=’C’+32,因此打印输出的是c。
5.以下程序的输出结果是
main()
{ char x,y;
x='B'-'A'+'a';
y=x+2;
printf("%d,%c",x,y);
}
A 98,d B b,d C B,D D 98,100
答案:A
分析:
(1) x=’B’-’A’+’a’=66-65+97=98
(2) y=x+2=98+2=100,ASCII值为100的是字符’d’
所以最后输出的98,d

6.若变量均正确定义,要求用scanf("%d%c%d%c",&a,&x,&b,&y);进行数据输入,使得a的值为40,b的值为50,为x赋'*',为y赋'#',以下正确的输入形式是
A 40*50# B 40 * 50 # C 40 *50# D 40*50 #

分析:整型数据和字符型数据交替输入的时候输入形式只有两种:
(1)40*50#<回车>
(2)40* 50#<回车>
其他情况下,都会降空格符号作为字符读入,导致结果错误,所以选A)

7.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,则正确的程序段是
A while((ch=getchar())!='N')printf("%c",ch);
B while(ch=getchar()!='N')printf("%c",ch);
C while(ch=getchar()=='N')printf("%c",ch);
D while((ch=getchar())=='N')printf("%c",ch);

8.以下程序:
main()
{ char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入
123<回车>
45678<回车>
则输出结果是
A 1267 B 1256 C 1278 D 1245
答案:D
分析:1,2,3依次赋给了c1,c2,c3,回车符也作为字符赋给了c4,所以c5,c6依次读入的是4,5。

9.在C程序中
A main函数必须出现在所有函数之前 B main函数可以在任何地方出现
C main函数必须出现在所有函数之后 D main函数必须出现在固定位置
答案:B
分析:在C语言中,函数可以在任何地方出现,而main函数作为函数中的一类,没有特殊的

限制和要求,故也可以在任何地方出现。
10.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是
A void B int C float D double
答案:B
分析:C语言默认规定

11.设函数fun的定义形式是
void fun(char ch,float x){......}
则以下对函数fun的调用语句中,正确的是
A fun("abc",3.0); B t=fun('D',16.5); C fun('65',2.8); D fun(32,32);
答案:D
分析:对应每个形参的类型结构。
12.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是
A 调用可以作为独立的语句存在 B 调用可以作为一个函数的实参
C 调用可以出现在表达式中 D 调用可以作为一个函数的形参
答案:D
分析:函数的调用不可以作为一个函数的形参。
13.以下程序的运行后的结果是
fun(int a,int b)
{ if(a>b) return(a);
else return(b);
}
main()
{ int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
A 3 B 6 C 8 D 12
答案:D
分析:fun(a,b)的作用是返回a、b中较大的。fun(x,y)=fun(3,8)=8, r=fun(fun(x,y),2*z)=fun(8,12)=12

14.以下程序:
int f1(int x;int y)
{ return x>y?x:y;}
int f2(int x,int y)
{ return x>y?y:x;}
main()
{ int a=4,b=3,c=5,d,e,f;
d=f1(a,b);d=f1(d,c);
e=f2(a,b);e=f2(e,c);
f=a+b+c-d-e;
printf("%d,%d,%d\n",d,f,e);
}
执行后输出结果是
A 3,4,5 B 5,3,4 C 5,4,3 D 3,5,4
答案:C
分析:f1(x,y)的作用是返回x、y中较大的,f2(x,y)的作用是返回x、y中较小的。d=f1(a,b)=f1(4,3)=4
d=f1(d,c)=f1(4,5)=5
e=f2(a,b)=f2(4,3)=3
e=f2(e,c)=f2(3,5)=3
此时各值为a=4,b=3,c=5,d=5,e=3,f=a+b+c-d-e=4。所以答案d, f , e为5, 4, 3

15.以下叙述正确的是
A 构成C程序的基本单位是函数 B 可以在一个函数中定义另一个函数
C main()函数必须放在其他函数之前 D 所以被调用的函数一定要在调用之前进行定义
答案:A
分析:c程序的基本单位是函数。函数中不可以嵌套定义函数。main()函数可以放在任意位置。被调用的函数只要在调用之前说明了即可。
16.以下程序:
float fun(int x, int y)
{ return(x+y); }
main()
{ int a=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序运行后的输出结果是
A 编译出错 B 9 C 21 D 9.0
答案:B
分析:fun(x,y)的作用是求x、y的和。fun(a+c,b)=a+c+b=15,(int) fun(a+c,b)=(int)15=15。fun((int) fun(a+c,b),a-c)=fun(15,-6)=9。
17.以下程序:
char fun(char x,char y)
{ if(xreturn y;
}
main()
{ int a='9',b='8',c='7';
printf("%c\n",fun(fun(a,b),fun(b,c)));\
}
程序的执行结果是
A 函数调用出错 B 8 C 9 D 7
答案:D
分析:fun(x,y)的作用是选择x,y里面较小的一个。fun(9,8)=8,fun(8,7

)=7;fun(fun(a,b),fun(b,c))=fun(8,7)=7

18.以下程序:
int fun1(double a){ return a*=a;}
int fun2(double x,double y)
{ double a=0,b=0;
a=fun1(x);b=fun1(y); return (int)(a+b);
}
main()
{ double w; w=fun2(1.1,2.0);printf("%f\n",w);}
程序执行后变量w的值是
A 5.21 B 5 C 5.0 D 0.0
答案:C
分析:fun1(a)=a2,fun2(x,y)=(int)(fun1(x)+fun1(y))=(int)( x2+ y2),所以fun1(1.1,2.0)=(int)(1.21+4.0)=(int)5.21=5
由于w是double型的,所以w的值为5.0。
19.若程序中定义了以下函数
double myadd(double a,double B)
{ return(a+B); }
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是
A double myadd(double a,B); B double myadd(double,double);
C double myadd(double b,double A) D double myadd(double x,double y);
答案:A
分析:函数的说明有其自己的格式,应该包括函数类型、函数名、以及形参类型,形参名可有可无,但是一定要统一,形参名随便取。
20.以下程序:
#include
void f(int n)
main()
{ void f(int n);
f(5);
}
void f(int n);
{ printf("%d\n",n);" }
则以下叙述中不正确的是
A 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f。
B 若在主函数前对函数f进行说明,则在主函数和其他函数中都可以正确调用函数f.
C 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明。
D 函数f无返回值,所以可用void将其类型定义为无值型。
答案:C
分析:允许这种函数说明的方式存在。如果只在主函数中说明,则只能在主函数中调用f;如果在主函数以前说明,则包括主函数的所有函数都可以调用,如果同时主函数又说明了,则不影响。

21以下叙述中错误的是
A C程序必须由一个或一个以上的函数组成。 B 函数调用可以作为一个独立的语句存在
C 若函数有返回值,必须通过return语句返回。D 函数形参的值也可以传回给对应的实参
22 以下程序:
int f(int x,int y)
{ return(y-x)*x;}
main()
{ int a=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
执行后输出结果是
A 8 B 7 C 6 D 9
答案:9
分析:1)函数的意思为f(x,y)=(y-x)*x
f(3,4)= (4-3)*3=3
f(3,5)=(5-3)*3=6
2)d=f(3,6)=(6-3)*3=9.

23.以下程序运行后输出结果是 3,2,2,3
void fun(int x,int y)
{ x=x+y;y=x-y;x=x-y;
printf("%d,%d,",x,y);
}
main()
{ int x=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
答案:3,2,2,3
分析:1)x=2,y=3,当调用fun(x,y)时,相当于执行fun(2,3)。
x=x+y; x=2+3=5;
y=x-y; y=5-3=2;
x=x-y; x=5-2=3;
此时x, y的值为3,2,所以输出的结果为3,2。
2)在main函数中,实参不会因为形参

的改变而改变, x,y的值仍为2,3,所以所以输出的结果为2,3.






相关主题
文本预览
相关文档 最新文档