当前位置:首页 > 第三章(C语言程序设计同步练习指导)
a+=1;
if(y printf(\} 答:x=5,y=4,a=1 33.下面程序的输出是( )。 main() { int x=2; while(x--); printf(\ } 答:-1 循环while(x--);的循环体为一条空语句。当x为0时,循环结束,执行x—后,x的值为-1。 34.以下循环体的执行次数是( )。 main() { int i,j; for(i=0,j=1;i<=j+1;i+=2,j--)printf(\A)3 B)2 C)1 D)0 答:C) 35.下列程序执行后的输出结果是( )。 main() { int a[3][3], *p, i; p=&a[0][0]; for(i=0;i<9;i++) p[i]=i+1; printf(\答:6 a[0][0]=p[0]=1 a[0][1]=p[1]=2 a[0][2]=p[2]=3 a[1][0]=p[3]=4 a[1][1]=p[4]=5 a[1][2]=p[5]=6 a[2][0]=p[6]=7 a[2][1]=p[7]=8 a[2][2]=p[8]=9 36.下列程序执行后的结果是( )。 main() { int i,j,m=0,n=0; for(i=0;i<2;i++) for(j=0;j<2,j++) if(j>=i)m=1;n++; printf(\答:1 语句n++;并不在循环体内。循环体仅包含语句if(j>=i)m=1;。 37.阅读下列程序: #include 64 main() { int count; for(count = 1; count <= MAX_COUNT; count++) fun(); } void fun() { static int i; i += 2; printf(\} 上述程序的输出结果是( )。 答:2468 3.4 编译预处理 3.4.1 考试要求 (1)宏定义 不带参数的宏定义;带参数的宏定义。 (2)文件包含 3.4.2 要点指导 1. 宏定义 不带参数的宏定义: #define 宏名 字符串 在编译之前,将宏名替换成字符串。 带参数的宏定义: #define 宏名(形式参数表) 含形式参数的字符串 宏替换过程: 先把实际参数与形式参数一一对应,再把每个实际参数替换到字符串中 对应形式参数出现的位置,将这个形成的字符串替换到程序中宏名出现的位置。 2.文件包含 文件包含就是在一个文件中把另一个文件的内容包含进来。 文件包含格式: #include ”文件名” 或#include <文件名> 3.4.3 同步练习 1.以下for 语句构成的循环执行了( )次。 #include #define NUM (M+1)*M/2 main() 65 { int i,n=0; for (i=1;i<=NUM;i++) { n++; printf(\ } printf(\ } 答:8 宏定义NUM先替换为(M+1)*M/2,(N+1+1)*N+1/2,(2+1+1) *2+1/2 2.以下程序的输出结果是( )。 #include #define FUDGE(y) 2.84+y #define PR(a) printf(\ #define PRINT1(a) PR(a); putchar('\\n') main () { int x=2; PRINT1(FUDGE(5)*x); } A)11 B)12 C)13 D)15 答:12 宏替换过程: PRINT1(FUDGE(5)*x) PR(FUDGE(5)*x) printf(\printf(\printf(\3.程序的运行结果是( )。 #define MIN(x,y) (x)<(y)?(x):(y) main() { int i=10,j=15,k; k=10*MIN(i,j); printf(\} A) 10 B) 15 C) 100 D) 150 答:B) 宏替换过程: k=10*MIN(i,j) k=10*(i)<(j)?(i):(j) k=10*i 4.程序的运行结果是( )。 #define MAX(A,B) (A)>(B)?(A):(B) #define PRINT(Y) printf(\ 66 main() { int a=1,b=2,c=3,d=4,t; t=MAX(a+b,c+d); PRINT(t); } 答:Y=3 5.程序的运行结果是( )。 #define PT 5.5 #define S(x) PT*x*x main() { int a=1,b=2; printf(\} 答:9.5 宏替换过程: S(a+b) PT*a+b*a+b 5.5*a+b*a+b 5.5*1+2*1+2 6.程序的运行结果是( )。 #define MING 0 main() { char str[20]=\ int i=0; while((c=str[i])!='\\0') {i++; #if MING if(c>='a'&&c<='z') c=c-32; #else if(c>='A'&&c<='Z') c=c+32; #endif printf(\ } } 答:C LANGUAGE 因为MING已定义,因此执行if(c>='a'&&c<='z') c=c-32;,即将小写字母转换成大写字母。 7.下列程序执行后的输出结果是( )。 #define MA(x) x*(x-1) main() { int a=1,b=2; printf(”%d\\n”,MA(1+a+b));} 答:8 宏替换过程: 1+a+b*(1+a+b-1) 8.程序的运行结果是( )。 67
共分享92篇相关文档