1.1 下列函数调用中,不正确的是 ( D ). A.
max(a, b);
B. max(3, a+b); D. int max(a, b);
C. max(3, 5);
1.2
以下叙述中不正确的是( B )。
A. 调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参 B. 在C的函数中,最好使用全局变量 C. 在C中,形式参数只是局限于所在函数 D. 在C中,函数名的储存类别为外部
1.3 以下程序输出结果是( B )。 #define D(x) (x)-(x) main() {
int a=4, b=6, c=7; int d=D(a-b)*7; printf(“%d”, d); } A. 0 B. 12
C. 36 D. -14
1.4 函数“fun(a+b,(x,y),fun(n+k,d,(a,b)))”中实参的个数是(B ).
A. 2 B. 3 C. 4
D. 5
1.5 如果函数定义时,形式参数是字符变量,则调用该函数时,实际参数不可以是( D )。
A. 字符型常量 B. 字符型变量 C. 字符型表达式 D. 已指向字符型变量的指针变量
1.6 在函数间传递数据的四种方式中,不能把被调函数的数据带回到主调函数的是( A )。 1.7
A.值传递 B.地址传递 C.返回值传递 D.全局外部变量 运行下列程序后的输出结果是 ( B )。
#include “string.h” main() {
char s[60], s1[10]={”123”};
char s2[20]=”123”, s3[30]=”2348”; if(strcmp(s1, s2)<0) { strcpy(s, s1); strcpy(s1, s2); strcpy(s2, s); } if(strcmp(s1, s3)<0) { strcpy(s, s1); strcpy(s1, s3); strcpy(s3, s); } if(strcmp(s2, s3)<0) strcpy(s, s2); strcpy(s2, s3); strcpy(s3, s);
printf(“%s\\n%s\\n%s\\n”, s1, s2, s3); } A 23 B 2348
123 23 2348 123 C 234823123 D 2312348
1.8
以下程序的输出结果是( A )。 #include “stdio.h” main() {
int k=2, m=1, p; p=func(k, m); printf(“%d,”, p); p=func(k, m);
printf(“%d\\n”, p); }
func(int a, int b) {
static int m; int i=2; i+=m+1; m=i+a+b; return(m); }
A. 6,12 B. 6,13
1.9
C. 6,6 D. 6,8
运行下列程序后的输出结果是( C ). int a=3, b=4;
void fun(int x1, int x2) {
printf(“%d, %d”, x1+x2, b); }
main() {
int a=5, b=6; fun(a, b); } A 3, 4 C 11, 4
1.10
B
D 11, 1 11, 6
下列函数的主要功能是计算并返回(1*(1+1))+(2*(2+1))+……(k*(k+1)),清单中缺少的是( D ). float sum1(int k) { float s=0.0; int i;
for(i=1; i<=k; i++) _________ return(s); } A i*i+1; B C s+=i*i+1; D
s=i*i+1;
s+=i*(i+1);
1.11 以下叙述中不正确的是( D )。 A. 在函数中,通过return语句传回函数值 B. 在函数中,可以有多条return语句 C. 在C中,主函数名main也可以带形参
D. 在C中调用函数,必须在一条的语句中完成
1.12 以下程序的输出结果为( B )。
#include “stdio.h” main() {
int a=1, b=2, c=3, d=4, e=5;
printf(“%d”, func((a+b,b+c,c+a),(d,e))); }
int func(int x, int y) { return x; } A. 5 B. 4 C. 9
D. 错误
1.13 当下面程序执行后,变量C的值为( A )。 main() {
int a=50, b=30, c=0; c=max(a, b); }
int max(x, y) int x, y; { int z;
if(x>y) z=x; else z=y; return(z); }
A. 50 B. 30
C. 0 D. 80
1.14 下列表达式中,结果不为1.0的表达式是( C )。 A. fabs(-1.0) C. floor(0.99)
B. pow10(0)
D. sin(90*3.14159/180)
1.15 下列表达式中,结果为0的表达式是( C )。 A. isalpha(‘A’) C. isupper(‘a’)
B. islower(‘a’) D. isdigit(‘1’)
1.16 若输入”an apple”,则输出结果是( D )。 #include main() {char str[100]; scanf(“%s”, str);
printf(“%d\\n”, length(str)); }
length(str) char str[];
{ return(strlen(str)); } A. 9 B. 8
C. 3 D. 2
1.17 下列函数定义不正确的是( C )。 A
int max() {
int x, y, z; z = x>y?x:y; }
int max(x, y) { int x, y, z; z = x>y?x:y return(z); }
B
int max(x, y) int x, y; { int z;
z = x>y?x:y return(z); } int max() { }
C D
二.写出运行结果 2.1
写出以下程序的运行结果。 main() { int i;
for(i=1; i<6; i++) { if(i%2) { printf(\"#\"); continue; } printf(\"*\"); } printf(\"\\n\"); }
2.2
写出程序的运行结果。
#include “stdio.h” int i; main() {
void prt(); printf(“\\n”);
for(i=5; i<=10; i++) prt(); }
void prt() {
for(i=5; i<10; i++) printf(“%c”, ‘*’); printf(“\\n”); } 运行结果:*****
三.填空题 3.1
利用数组求 Fibonacci 数列 [即1,1,2,3,5,8….]的前20项。 提示:要求的该项值等于该项的前两项值之和。 #include main() {//定义要求fibonacci数列 fb[20] int i, fb[20];
____6____ //将数组的第1,2元素初始化为1 for( i=1; i<19; i++) {
____7____ //求fibonacci第3项至20项的值 }
for( i=0; i<20; i++) {
if ( ____8____) { //每打印5个数,换行 printf(\"\\n\"); }
printf(\"%7d\ } }
填空:
6: fb[0]=1; fb[1]=1;
7: fb[i+1] = fb[i]+fb[i-1]; 8: i%5==0
3.2
利用宏定义,求圆的周长和面积。
#include \"stdio.h\"
#define ____9____ 3.1415
#define ____10____ L=2*PI*R; S=PI*R*R; void main() { float r, l, s;
printf(\"输入半径:\"); scanf(\"%f\&r);
CIRCLE(r, l, s); //引用宏名CIRCLE printf(\" r=%f\\n l=%f\\n s=%f\\n\r,l,s); }
填空: 9: PI
10: CIRCLE(R,L,S)
运行结果: #*#*#