int i;
for(i=1;i<=5;i++) fun(); printf(\
A. 0 B. 1 C. 5 D. 6 140、下面程序的输出结果是:()
#include
int global=5; return ++global; }
void main() {
printf(\}
A. 100 B. 101 C. 5 D. 6
141、下列关于C语言函数的描述中,正确的是(B) A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和函数的调用都可以嵌套 D. 函数的定义和函数的调用都不可以嵌套 142、以下程序的运行结果是()
fun(int x,int y) {
int z;
z=(x main() { int a=10,b=6; printf(\} A. 4 B. 6 C. 10 D. 6 143、以下程序运行结果是(B) void main() { int min(float x,float y); float a=-7.9,b=-6.3; int c; 注意c的数据类型 负数的比较一样按数学方式进行即(-7.9小于-6.3 ) c=min(a,b); 16 printf(\} int min(float x,float y) { float z; if(x>y) z=y; else z=x; return(z); } A. -7.9 B. -7 C. -6.3 D. -6 144、以下程序的运行结果是(C) #define M(a,b) a*b main() 注意括号问题() { int x=3,y=2,s1,s2; s1=M(x+y,x-y); s2=M(x-y,x+y); printf(\} A. -1,7 B. 5,5 C. 7,-1 D. 5,-5 145、以下叙述中,正确的是(B) A. “#define PRICE=30”定义了与30等价的符号常量PRICE B. 预编译处理命令行都必须以“#”开头 C. 程序中使用带参的宏时,参数类型要与宏定义时一致 宏名无类型 D. 宏名只能包含大写字母和数字字符 146、以下叙述中,正确的是(A) A. 宏展开不占用运行空间,只占用编译时间 B. 预编译处理命令行必须以分号结束 C. 一个源程序只能有一个预编译处理命令行 D. 使用带参数的宏定义时,应该说明每个参数的数据类型 147、以下的叙述中不正确的是(C) A. 宏展开不占用运行时间,只占用编译时间 B. 宏名无类型 C. 宏名必须用大写字母表示 D. 预处理命令行都必须以#号开始 148、若有定义:#define PI 3,在表达式PI*2*2的值为() A. 12 B. 4 C. 3 D. 不确定 149、以下程序运行后,屏幕输出为(C) #define MIN(a,b) ((a)<(b)?(a):(b)) main() { int x=2,y=3,z; z=2*MIN(x,y); printf(\} 17 A. 2 B. 3 C. 4 D. 6 150、下列#include命令中,正确的是(D) A. #inclue [string.h] B. #include {string.h} C. #include (string.h) D. #include #define TWO ONE+1 #define THREE TWO+1 void main () { printf(\} A. 产生错误 B. 1 C. 2 D. 3 152、以下叙述中正确的是() A. 预处理命令行必须位于C源程序的起始位置 B. 在C语言中,预处理命令行都以”#”开头 C. 每个C程序必须在开头包含预处理命令行:#include main() { int m=1,n=2,k; k=ADD(m+n)*3; printf(\} A. 9 B. 10 C. 12 D. 18 154、下面程序的运行结果是() #define M 10 #define S(x) x*x #define F(x) (x*x) main() { int n1,n2; n1=1000/S(M); n2=1000/F(M); printf(\} A. 10,10 B. 1000,10 C. 10,1000 D. 1000,1000 指针 155、设有以下语句,则(D)是对a数组元素的不正确引用,其中0<=i<10。 18 int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a; A. a[p-a] B. *(&a[i]) C. p[i] D. *(*(a+i)) 156、若有定义int *p1,*p2;则指针变量p1、p2不能进行运算的是(C) A. < B. = C. + D. - 157、以下关于指针概念的叙述中,错误的是(C) A. 一个指针变量只能指向同一类型的变量 B. 一个变量的地址称为该变量的指针 C. 两个同类型的指针变量可以作加减运算 D. 任何指针变量都可以与空指针NULL进行比较 158、以下程序段运行后*(p+3)的值为(A) char a[]=”good”; char *p; p=a; A. ?d? B. ?\\0? C. 存放?d?的地址 D. ?0? 159、以下程序段运行后*(++p)的值为(C) char a[5]=”work”; char *p; p=a; A. ?w? B. 存放?w?的地址 C. ?o? D. 存放?o?的地址 160、若有定义:int *p,a=4;p=&a;则以下均代表地址的是(B) A. a,p B. &a,p C. &a,*p D. a,*p 161、若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是(D) A. *p=&a;scanf(“%lf”,p); B. *p=&a;scanf(“%lf”,*p); C. p=&a,scanf(“%lf”,*p); D. p=&a;scanf(“%lf”,p); 162、若已定义:int x=12;对①int *p=&x;和②*p=x;这两条语句的正确理解是(A) A. 语句①是在对指针变量p定义时初始化,使p指向x;而语句②是将变量x的值赋给指针变量p所指向的变量 B. 语句①和②中的*p含义相同,都表示给指针变量赋值 C. 语句①是在对指针变量p定义时初始化,使p指向x;而语句②是将变量x的值赋给指针变量p D. 语句①和②的执行结果都是把变量x的地址赋给指针变量p 163、下面语句正确的是(B) A. int *p;*p=20 B. char *s=”abcdef”;printf(“%s\\n”,s); C. char str[]=”abcd”;str++; D. char str[]={?a?,?b?,?c?};printf(“%s”,str); 164、若有定义int a[2][3],*p=a[0];则以下不能表示数组元素a[1][2]的是(B) A. *(a[1]+2) B. *(p[1]+2) 表示第二行第三个数 C. p[5] D. *(p+5) 注意: 165、若已定义:int a=5,*p;且p=&a;则以下表示中不正确的是(D) A. &(*p)==&a B. *(&a)==a C. &(*p)==p D. *(p++)==a++ 166、若有以下程序段,其中0<=i<4,0<=j<3,则不能正确访问a数组元素的是() int i,j,(*p)[3]; int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; 19 p=a; A. *(*(a+i)+j) B. p[i][j] C. (*(p+i))[j] D. p[i]+j 167、以下程序段的运行结果是(B) int x[]={2,3,4,5,6,7},*p=x; int i,s=0; for(i=1;i<6;i++) s+=p[i++]; printf(\ A. 12 B. 15 C. 25 D. 27 168、下面程序的运行结果是(C) main() { int x=36,y=63; int *p,*q,*t; p=&x;q=&y; t=p; p=q; q=t; printf(\} A. 36,36 B. 63,63 C. 36,63 D. 63,36 169、以下程序段运行后x的值为() int a[]={1,2,3,4,5,6,7}; int i,x,*p; x=1; p=&a[2]; for(i=0;i<3;i++) x*=*(p+i); A. 不确定 B. 24 C. 120 D. 60 170、以下程序段运行后x的值为(B) int a[]={1,2,3},b[]={4,2,5}; int *p,*q; int i,x; p=a;q=b; for(i=0;i<3;i++) if(*(p+i)==*(q+i)) x=*(p+i)*2; A. 2 B. 4 C. 5 D. 不确定 171、以下程序运行结果是(B) main() { char a[]=\ for(p=a;p 20