putchar(c-32); }
上述程序经编译、链接后生成的可执行文件名为cpy.exe,假定磁盘上有三个文本文 件,其文件名和内容分别为:
文件名 内容 a aaaa# b bbbb# c cccc#
如果在DOS下键人cpy a b c
if(x= =0)||(x= =1))return(3); p=x-fun(x-2); return p;} main()
{ printf(\%d\\n\,fun(9)); } 5. 下面程序的输出结果是____ #include
{ return a+b } funb(int a,int b)
{ return a-b; } sub(int(*t)(),int x,int y)
{ return((*t)(x,y)); } main()
{ int x,(*p)(); p=funa;
x=sub(p,9,3); x+=sub(funb,8,3); printf(“%d\\n”,x);} 6. 请读程序
#include
printf(\%d,\,argc);
for(i=0;i<=argc-1;i++) printf(\%s\,argv[i]); printf(\; }
若上面的程序执行后的输出结果是____。
7. 下面invert函数的功能是将一个字符串str中的字符顺序颠倒过来,请填空。 #include
for(i=0,j=strlen(str),____;i 8. 下面pi函数的功能是根据以下的公式,返回满足精度e要求的值,请填空。 26 / 45 π/2=1+1/3+1/3*(2/5)+1/3*(2/5)*(3/7)+…… double pi(double eps) { double s=1.0,t=1.0; int n; for(____;t>eps;n++) { s+=t; t=n*t/(2*n+1);} return(2.0*____); } 9. 以下程序的功能是:从学生成绩数据文件data.dat中读取每个学生的成绩,统计最高 成绩和最低成绩,当遇到成绩为负数是,结束统计并输出最高成绩和最低成绩。请填空。 #include { FILE *fp; float i,max,min; if((fp=fopen(\.dat\ { printf(\; exit(0); } fscanf(fp,\%f\,&i); while(____) { if(____)max=i; if(i printf(\%f,%f\,max,min); } 10. 若有以下程序片段: #include { int a[10]; sub(a);} 其中函数sub的类型为void型,则定义函数sub时,其首部定义可以有以下三种形式____,____,____。(形参的名字请用p) 11. 以下程序的功能是:从键盘上输入10个数值并存储在数组a中,调用函数findmax求数组中的最大值并输出。请在下划线处填上合适的语句,完成函数功能。 #include { int a[10],i,j; for(i=0;i<10;++i) scanf(\%d\,&a[i]); findmax(a,10,____); printf(\%d\,a[j]); } findmax(s,t,k) int * s,t,* k; { int p; for(p=0,*k=P;P 12. 孪生素数是指两个相差为2的素数。例如:3和5,5和7,11和13等,下面的程序可输出15对孪生素数,请填空。其中函数isprime的功能是判断整数a是否为素数。 #include 27 / 45 main() { int k,n; n=0;k=2; do {if(isprime(k)&&____) { n=n+1; printf(\%d,%d\,k,k+2);} k=k+l;} while(n<15);} isprime(int a) { int k,j; j=1; k=2; while((k<=a/2)&&j) { if(____) j=0 else k=k+1; } return(j); } 13. 函数judge的功能是判断方阵,是否关于主对角线对称,若对称则返回1,否则返回0。 函数参数的意义是:n为矩阵的阶数,a为存储矩阵元素数据的数组名。请在程序中下划线处填上合适内容。 judge(int n,int * *a); { int i,j; for(i=0;i 第九章 预处理命令 单项选择题 1. 请选出以下程序段的输出结果。 #include #define MIN(x,y) (x)<(y)?(x):(y) main() { int i,j,k; i=10;j=15; k=10*MIN(i,j); printf(\%d\\n:,k); } A)15 B)100 C)10 D)150 2. 以下程序,执行后的输出结果是。 #include { printf(\%d,\,funl()); printf(\%d\; } 28 / 45 funl() { int i; i=PI*PI;return i; } #undef PI fun2() { int i; i=PI*PI*PI; return i; } A)9,27 B)9 27 C)程序出错,无法通过编译、链接 D)死机 3. 以下程序,执行后的输出结果是。 #include #define POWER(x) P*x*x main() { int x=1,y=2; printf(\%d,%d\,POWER(x+y), POWER(y+x));} A)18,18 B)6,7 C)6,6 D)7,7 4. 以下程序执行后的输出结果是。 #include #define POWER(x) P*(x)*(x) main() { int x=l,y=2; printf(\%d,%d\,POWER(x+y), POWER(y+x)); } A)18,18 B)6,7 C)6,6 D)7,7 5. 有以下程序: #include #define MAX(x,y) ((x>y)?(x):(y)) main() {short int a,b; float i,j; scanf(\%hd,%hd\,&b); scanf(\%f,%f,&i,&j); printf(\%d,%d\,sizeof(MAX(a,b)),sizeof(MAX(i,j))); } 若从键盘上输入1,2,1.0,2.0,则程序执行后的输出结果是。 A)4,4 B)2,2 C)2,4 D)程序出错6. 请读程序: #include #define SUB(X,Y) (X)*Y main() { int a=3,b=4; printf(\%d\\n\,SUB(a+b,b++)); } 上面程序的输出结果是。 A)12 B)15 C)16 D)28 29 / 45 7. 有以下程序: #include #define FUN(x,y) x*y main() { int a=1,b=2; printf(\%d\,FUN(a+b,a-b)); } 则执行后的输出结果为 A) -3 B)1 C) -1 D)0 8. 以下程序的运行结果是。 #define MIN(x,y) (x)<(y)?(x):(y) main() { int a=1,b=2,c; c=10*MIN(a,b); printf(\%d\,c); } A)1 B)10 C) 2 D)20 9. 有关宏定义的叙述中不正确的是。 A)宏替换不占用运行时间 B)宏名无类型 C)宏替换就是简单的字符替换 D)可以在一行中定义多个宏 10. 有以下程序: #include #define MUL(x,y) (x)*y main() { int a=4,b=3; printf(\%d\,MUL(a+b,a-b));} 其输出结果为。 A)13 B)7 C)25 11. 以下程序的输出结果为。 #include #define PR(a) printf(\%d\,(int)(a)) #define PRINT(a) PR(a);putchar('\\n'); main() { int x=2; PRINT(F(3)*x); } A)8 B)9 C)10 D)11 填空题 1. 下面程序的运行结果是____。 #define MAX(a,b,c) ((a)>(b)?((a)>(c)?(a):(c)):((b)>(c)?(b):(c))) main() {int x,y,z; x=1;y=2;z=3; printf(\%d,\,MAX(x,y,z)); printf(\%d,\,MAX(x+y,y,y+x)); printf(\%d\,MAX(x,y+z,z)); } 2. 下面程序运行结果是____. #define SELECT(a,b) a 30 / 45