东大18秋学期《高级语言程序设计基础》在线作业2
	试卷总分:100    得分:100
	一、 单选题 (共 20 道试题,共 100 分)
	1.有两个字符数组a、b,则以下正确的输入语句是( )。
	A.gets(a,b);
	B.scanf("%s%s",a,b);
	C.scanf("%s%s",&a,&b);
	D.gets("a"); gets("b");"
	正确答案: B
	
	2.设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是( )。     for (y=100; x!=y; ++x,y++)      printf("****\n");
	A.循环体只执行一次
	B.是无限循环
	C.循环体一次都不执行
	D.for语句中存在语法错误
	正确答案: C
	
	3.有下面的程序段 char a[3],b[]="China"; a=b; printf("%s",a); 则( )。
	A.运行后将输出China
	B.运行后将输出Ch
	C.运行后将输出Chi
	D.编译时出错
	正确答案: D
	
	4.下面程序段的输出结果是( )。 int a=023;printf("%d\n",--a);
	A.23
	B.17
	C.18
	D.24
	正确答案: C
	
	5.语句while (!y)中的表达式 !y 等价于( )。
	A.y==0
	B.y!=1
	C.y!=0
	D.y==1
	正确答案:www.youxue100f.com
	
	6.以下判断正确的是( )。
	A.char *s="string"; 等价于char *s; *s="string";
	B.char str[10]={"string"}; 等价于char str[10]; str={"string"};
	C.char *s="string"; 等价于char *s; s="string";
	D.char str[10]={"string"}; 等价于char str[10]; *str={"strint"};"
	正确答案:
	
	7.若执行下述程序时从键盘输入3 4,则输出结果是( )。
	#include main( ) { int a,b,s; 
	scanf("%d%d",&a,&b);
	 s=a;  if (a<b)  printf("%d\n",s*s); s=b;  }              
	A.186
	B.256
	C.324
	D.400
	正确答案:
	
	8.若有语句:int a=4, *p=&a;,下面均代表地址的一组选项是( )。
	A.a, p, &*a
	B.*&a, &a, *p
	C.&a, p, &*p
	D.*&p, *p, &a"
	正确答案:
	
	9.以下能正确进行字符串赋值操作的是( )。
	A.char s[5]={"12345"};
	B.char s[5]={'1', '2', '3', '4', '5'};
	C.char *s; *s="12345";
	D.char *s="12345"; "
	正确答案:
	
	10.以下对指针变量的操作中,不正确的是( )。
	A.int p, *q; q=&p;
	B.int *p, *q; q=p=NULL;
	C.int a=5, *p; *p=a;
	D.int a=5, *p=&a, *q=&a; *p=*q;"
	正确答案:
	
	11.以下正确的说法是( )。
	A.实参和与其对应的形参各占用独立的存储单元
	B.实参和与其对应的形参共占用一个存储单元
	C.只有当实参和与其对应的形参同名时才共用存储单元
	D.形参是虚拟的,不占用存储单元
	正确答案:
	
	12.若k为整型变量,则以下for循环的执行次数是( )。     for (k=2; k==0; )      printf("%d",k--);
	A.无限次
	B.0次
	C.1次
	D.2次
	正确答案:
	
	13.在C语言中,一维数组的定义方式为:类型说明符 数组名( )。
	A.[常量表达式]
	B.[整型表达式]
	C.[整型常量或整型表达式]
	D.[整型常量]
	正确答案:
	
	14.下面程序的输出结果为( )。 main( ) { int a=1,b=0; switch(a) { case 1: switch (b) { case 0: printf("**0**"); break; case 1: printf("**1**"); break; } case 2: printf("**2**"); break; }}
	A.**0**
	B.**0****2**
	C.**0****1****2**
	D.有语法错误
	正确答案:
	
	15.若a为int类型变量,则执行以下程序段后a的值为( )。 a=5;a*=a/=a++;
	A.2
	B.1
	C.40
	D.3
	正确答案:
	
	16.以下在任何情况下计算两数积时都不会引起二义性的宏定义是( )。
	A.#define MUL(x,y) x*y
	B.#define MUL(x,y) (x)*(y)
	C.#define MUL(x,y) (x*y)
	D.#define MUL(x,y) ((x)*(y))"
	正确答案:
	
	17.下程序( )。     main( )    { int x1=3, x2=0, x3=0;       if (x1=x2+x3) printf("* * * *"); else printf("# # # #");    }
	A.输出:* * * *
	B.输出:# # #
	C.#存在语法错误
	D.无输出结果
	正确答案:
	
	18.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( )。
	A.num%2==1
	B.!(num%2==0)
	C.!(num%2)
	D.num%2
	正确答案:
	
	19.若有定义:int x[10], *p=x;,则*(p+5)表示( )。
	A.数组元素x[5]的地址
	B.数组元素x[5]的值
	C.数组元素x[6]的地址
	D.数组元素x[6]的值
	E.选项内容11
	F.选项内容11
	G.选项内容11
	正确答案:
	
	20.执行以下程序后,m的值是( )。   #define MIN(x, y) (x)<(y) ? (x) : (y)   main( )   { int i=12, j=8, m;    m=10*MIN(i, j);    printf("%d\n", m);  }
	A.120
	B.80
	C.12
	D.8
	正确答案:

 
