二级C语言教程章节测试13.编译预处理和动态存储分配
一、选择题
(1)有以下过程
main ()
{char p [] = {'a ',' b ',' c'},q[]= " ABC ";
printf("%d %d\n ",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\n ",i1,I2);
}
程序运行后的输出结果是
A)64,28 B)4,4 C)4,3 D)64,64。
(3)有以下程序
main()
{ char a(6)有以下程序
# define f(x)x * x
main()
{ int I;
I = f(4+4)/f(2+2);
printf("%d\n ",I);
}
执行后的输出结果是
A) 28 B) 22 C) 16 D) 4。= " A0 \ 0a 0 \ 0 ";int i,j;
I = sizeof(a);j = strlen(a);
printf("%d %d\n ",I,j);
}
程序运行后的输出结果是
a)2 2
b)7 6
c)7 2
d)6 2。
(4)下列说法正确的是
A)预处理命令行必须在源文件的开头
B)源文件的一行可以有多个预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间。
(5)有以下程序
main()
{ char a[]= " abcdefg ",b(9)有以下程序
main (int arge,char * argv []]
{int n,I = 0;
while(arv[1][i]!= ' \ 0 '
{ n = fun();i++;}
printf(%d\n ",n * argc);
}
int fun()
{ static int s = 0;
s+= 1;
return s;
}
假设程序编译连接后生成了可执行文件exam.exe,如果键入以下命令行
exam 123
,运行结果将是= " abcdefg ";
printf("%d %d\n ",sizeof(A),sizeof(B));
}
执行后的输出结果是
A) 7 7 B) 8 8 C) 8 10 D) 10 10。
[7]
(7)有以下程序
# include
# define f (x,y)*(y)
main()
{ int a = 3,b = 4;
printf("%d\n ",F(a++,b++));
}
程序运行后的输出结果是
A) 12 B) 15 C) 16 D) 20。
(8)有以下程序
main()
{ char s[]= " \ n123 \ \ ";
printf("%d,%d\n ",strlen(s),sizeof(s));
}
执行后,输出结果为
A)初始值字符串有错误;b)6.7 C)5.6D)6.6。
[10]
(10)有以下程序
main ()
{char a [] = {'a ',' b ',' c ',' d ',' e ',' f ',' g ',' \ 0 ' };int i,j;
I = sizeof(a);j = strlen(a);
printf("%d,%d\b"i,j);
}
程序运行后的输出结果为
a) 9,9b) 8,9c) 1,8d) 9,8
(11)程序中头文件type1.h的内容为:
# define 5
# define 1n * 3
程序如下:
# define " type 1 . h "
# define
I = M1+M2printf("%d\n ",I);
}
编译后的程序输出为:
A) 10 B) 20 C) 25 D) 30。
(12)有以下程序
# include
main()
{ char * p,* q;
p =(char *)malloc(sizeof(char)* 20);q = p;
scanf("%s%s ",p,q);printf("%s%s\n ",p,q);
}
如果从键盘输入:abc def,输出结果是:
a)def b)abcdef c)ABCD d)d d。
(13)如果已经正确定义了指针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)下面这个程序的输出结果是
main()
{ charst[20]= " hello \ 0 \ t \ \ ";
printf(%d %d \n ",strlen(st),sizeof(ST));
}
A)9 9 B)5 20 C)13 20D)20
(15) 以下程序的输出结果是
amovep(int p, int (a)[3],int n)
{ int i, j;
for( i=0;i
0条评论