资源描述:
《编译预处理和动态存储分配及答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译预处理和动态存储分配一、选择题(1)有以下程序 main() {char p[]={'a','b','c'},q[]="abc"; printf("%d %d",sizeof(p),sizeof(q)); };程序运行后的输出结果是 A)4 4 B)3 3 C)3 4 D)4 3(2)有以下程序 #define f(x) (x*x) main() {int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d",i1,i2); }程序运行后的输出结果是 A)6
2、4,28 B)4,4 C)4,3 D)64,64(3)有以下程序main(){ char a[7]="a0 a0 ";int i,j; i=sizeof(a); j=strlen(a); printf("%d %d",i,j);}程序运行后的输出结果是 A)2 2 B)7 6 C)7 2 D)6 2(4)以下叙述中正确的是 A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令 C)宏名必须用大写字母表示 D)宏替换不占用程序的运行时间(5)有以
3、下程序main(){ chara[]=”abcdefg”,b[10]=”abcdefg”; printf(“%d %d”,sizeof(A),sizeof(B));}执行后输出结果是 A)7 7 B)88 C)810 D)1010(6)有以下程序#define f(x) x*xmain(){ inti; i=f(4+4)/f(2+2); printf(“%d”,i);}执行后输出结果是 A)28 B)22 C)16 D)4(7)有以下程序#include #define F(X,Y)
4、(X)*(Y)main(){int a=3,b=4;printf("%d",F(a++,b++));}程序运行后的输出结果是 A)12 B)15 C)16 D)20(8)有以下程序main(){ char s[]="123\"; printf("%d,%d",strlen(s),sizeof(s));}执行后输出结果是 A)赋初值的字符串有错 B)6,7 C)5,6 D)6,6(9)有以下程序main(int arge,char *argv[]){ int n,i=0;w
5、hile(arv[1][i]!=' '{ n=fun(); i++;} printf(%d",n*argc);}int fun(){ staticint s=0; s+=1; return s;}假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行exam 123<回车>则运行结果为(10)有以下程序main(){chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘ ’};int i,j;i=sizeof(a); j=strlen(a);printf(“%d,%db”i,j);}程序运行后的输出结
6、果是 A)9,9 B)8,9 C)1,8 D)9,8(11)程序中头文件typel.h的内容是:#define N 5#define M1 N*3程序如下:#define “type1.h”#define M2 N*2main(){inti;i=M1+M2; printf(“%d”,i);}程序编译后运行的输出结果是: A)10 B)20 C)25 D)30(12)有以下程序#include main(){char*p,*q;p=(char*)malloc(sizeof(char
7、)*20);q=p;scanf(“%s%s”,p,q); printf(“%s%s”,p,q);} 若从键盘输入:abcdef<回车>,则输出结果是: A)defdef B)abcdef C)abcd D)dd(13)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是 A)p=2*(int*)malloc(sizeof(int)); B)p=(int*)malloc(2*sizeof(int)); C)p=(int*)malloc(2*2); D)p=(int*)calloc(2,sizeof(int));(14)以下程
8、序的输出结果是main(){ char st[20