二级C语言模拟题2018年(28)
(总分100, 做题时间90分钟)
选择题
1. 
C语言的编译系统对宏命令的处理是______。
A 在系统对源程序进行编译前
B 和其他语句的编译同时进行
C 在程序连接时进行
D 在程序运行时进行
    分值: 2
答案:A
2. 
以下叙述中不正确的是______。
A 预处理命令行都必须以“#”号开始,结尾不加分号
B 在程序中凡是以“#”号开始的语句行都是预处理命令行
C C程序在执行过程中对预处理命令进行处理
D 预处理命令可以放在程序中的任何位置
    分值: 2sizeof结构体大小
答案:C
3. 
下面描述中正确的是______。
A C语言中预处理是指完成宏替换和文件包含指定的文件的调用
B 预处理指令只能位于C源程序文件的首部
C 预处理命令可以放在程序中的任何位置
D 预处理命令结尾需要加分号
    分值: 2
答案:C
4. 
以下有关宏替换的叙述不正确的是______。
A 使用宏定义可以嵌套
B 宏定义仅仅是符号替换
C 双引号中出现的宏名不替换
D 宏名必须用大写字母表示
    分值: 2
答案:D
5. 
#define能做简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为______。
A #define f(x)5*x*x+5*x+5
B #define f5*x*x+5*x+5
C #define f(a)(5*a*a十5*a+5)
D #define(5*x*x+5*x+5)f(x)
    分值: 2
答案:C
6. 
在“文件包含”预处理语句的使用形式中,当#include后面的文件名用尖括号(<>)括起时,寻被包含文件的方式是______。
A 仅仅搜索当前目录
B 仅仅搜索源程序所在目录
C 在标准目录下查指定文件
D 先在源程序所在目录搜索,如没到,再按系统指定的标准目录查
    分值: 2
答案:C
7. 
下述程序段中,不能正确赋值的是______。
A char*p,ch;p=&ch;scanf("%c",&p);
B char*p;p=(char*)malloc(1);scanf("%c",p);
C chai*p;*p=getchar();
D char*p,ch;p=&ch;*p=getchar0;
    分值: 2
答案:C
8. 
在“文件包含”预处理语句的使用形式中,N#include后面的文件名用双引号(" ")括起时,寻被包含文件的方式是______。
A 仅仅搜索当前目录
B 仅仅搜索源程序所在目录
C 在标准目录下查指定文件
D 先在源程序所在目录搜索,如没到,再按系统指定的标准目录查
    分值: 2
答案:D
9. 
以下叙述中不正确的是______。
A 预处理命令行都必须以“#”号开始,结尾不加分号
B 在程序中凡是以“#”号开始的语句行都是预处理命令行
C C程序在执行过程中对预处理命令进行处理
D 预处理命令可以放在程序中的任何位置
    分值: 2
答案:C
10. 
若有宏定义“#define max(a,b)(a>b?a:b)”,则表达式“max(2,max(3,1))”的值是______。
A 3
B 4
C 5
D 6
    分值: 2
答案:A
11. 
以下程序运行时输出结果为______。
int x=1;
main()
{printf("%d",f(x));}
#define x 2
int f(int y)
{return x+y;}
A 1
B 2
C 3
D 4
    分值: 2
答案:C
12. 
以下程序运行时输出结果是______。
#define EVEN(x) x%2==0? 1:0
main()
{if(EVEN(5+1))printf("Even");
else printf("Odd");
}
A Even
B Odd
C 45
D EVEN
    分值: 2
答案:B
13. 
以下程序运行时输出结果是______。
#define UP 2
#define DN (2+UP)
#define NI DN/2
main()
{printf("%d",((UP+DN)*NI)/2);}
A 5
B 2
C 8
D 6
    分值: 2
答案:D
14. 
以下程序输出结果为______。
#include<stdio.h>
#defineADD(x,y) x+y
main()
{int a=15,b=10,c=20,d=5;
printf("%d\n",ADD(a,b)/ADD(c,d));
}
A 34
B 20
C 80
D 65
    分值: 2
答案:B
15. 
以下程序的运行结果为______。
#define A(x,y) x*y-x+y
main()
{int a=3,b=1,x,y;
x=A(a,b);y=A(a+b,a-b);
printf("%d,%d\n",x,y);
}
A 1,5
B 2,9
C 0,0
D 6,5
    分值: 2
答案:A
16. 
以下程序的运行结果为______。
#define A(x,y)x*y-x/y
main()
{int a=5,b=2,y;
y=A(a+b,a-b);
printf("%d\n",y);
}
A 6
B 7
C 8
D 9
    分值: 2
答案:A
17. 
有如下程序:
#define N 2
#define M N+1
#define NUM 2*M+1
main()
{int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);}
该程序中的for循环执行的次数是______。
A 5
B 6
C 7
D 8
    分值: 2
答案:B
18. 
若有宏定义“#define max(a,b)(a>b?a:b)”,则表达式“max(2,max(3,1))”的值是______。
A 1
B 2
C 3
D 4
    分值: 2
答案:C
19. 
以下程序的执行结果是______。
#define f(x)x*x
main()
{int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
A 4
B 28