A、4 B、3 C、2 D、1
7、语句while(!E);中的表达式!E等价于 A 。
A、E= =0 B、E!=1
C、E!=0 D、E= =1
10、以下有关函数的形参和实参的说法中正确的是 A 。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参各占用一个的存储单元
C、只有当实参和与其对应的形参同名时才占用一个的存储单元
D、形参是虚拟的,不占用存储单元
11、以下有关宏替换的叙述不正确的是 D 。
A、宏替换不占用运行时间 B、宏名无类型
C、宏替换只是字符替换 D、宏名必须用大写字母表示
12、下面判断正确的是 C 。
A、char *a=”china”;等介于char *a;*a=”china”;
B、char str[10]={”china”};等介于char str[10];str[]={”china”};
C、char *s=”china”;等介于char *s;s=”china”;
D、char *s=”china”;等介于char s[10];*s=”china”;
13、设p1和p2是指向同一个字符串的指针变量,,c为字符变量,则以下不能正确执行
赋值语句的是 B 。
A、c=*p1+*p2 B、p2=c
C、p1=p2 D、c=*p1*(*p2)
14、函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为 A 。
int f(int m)
{ static int i=0; int s=0;
for(;i<=m;i++) s+=i; return s;
}
A、 21 B、 16 C、 15 D、 8
15、声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是 A 。
A、*(a[2]+1) B、a[9]
C、*(a[1]+2) D、*(*(a+2))+1
16、设有如下定义:
int (*ptr)*();
则以下叙述中正确的是 C 。
A、ptr是指向一维组数的指针变量
B、ptr是指向int型数据的指针变量
C、ptr是指向函数的指针,该函数返回一个int型数据
D、ptr是一个函数名,该函数的返回值是指向int型数据的指针
17、设有以下宏定义:
#define N 3
#define Y(n) ( (N+1)*n)
则执行语句:z=2 * (N+Y(5+1));后,z的值为 D 。
A、 出错 B、 42 C、 48 D、54
18、给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为 C 。
A、数组x和数组y等价
B、数组x和数组y的长度相同
C、数组x的长度大于数组y的长度
D、数组x的长度小于数组y的长度
19、若有以下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是 C 。
A、*p+6 B、*(p+6) C、*p+=5 D、p+5
20、不能把字符串:Hello!赋给数组b的语句是 B 。
A、char b[10]={'H','e','l','l','o','!'}; B、char b[10];b="Hello!";
C、char b[10];strcpy(b,"Hello!"); D、char b[10]="Hello!";
21、main()
{int a[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%xn",p);
printf("%xn",p+9); }
该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个
printf语句的输出结果是 D 。
A、203 B、204 C、1a4 D、1a6
22、左移运算:int a=16,c=a<<2; 变量c的值是 。
A、67 B、4 C、1 D、64
23、数组定义为“int a[4][5];”,引用“a[1]+3”表示 A 。
A、a数组第2行第4列元素的地址 B、a数组第2行第4列元素的值
C、a数组第4行的首地址 D、a数组第1行第4列的首地址
24、定义带参数的宏“#define jh(a,b,t) t=a;a=b;b=t”,使两个参数a、b的值交
换,下列表述中哪个是正确的 D 。
A、不定义参数a和b将导致编译错误 B、不定义参数a、b、t将导致编译错误
B、不定义参数t将导致运行错误 D、不必定义参数a、b、t类型
25、下列各语句序列中,能够将变量u、s中最大值赋值到变量t中的是 B 。
A、if(u>s)t=u; t=s; B、t=s; if(u>s)t=u;
C、if(u>s)t=s; else t=u; D、t=u; if(u>s)t=s;
26、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 A 。
main( )
{ int x;
scanf("%d",&x);
if(x + + 〉 5)printf("%d",x);
else printf("%dn",x - -); }
A、7和5 B、6和3 C、7和4 D、6和4
27、char *aa[2]={"abcd","ABCD"};
则以下就法中正确的是 D 。
A、aa数组元素的值分别是"abcd"和ABCD"
B、aa是指针变量,它指向含有两个数组元素的字符型一维数组 C、aa数组的两
个元素分别存放的是含有4个字符的一维字符数组的首地址
D、aa数组的两个元素中各自存放了字符'a'和'A'的地址
28、int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0]
则下列能够正确表示数组元素a[1][2]的表达式是 D 。
A、*((*prt+1)[2]) B、*(*(p+5))
C、(*prt+1)+2 D、*(*(a+1)+2)
29、下列程序的输出结果是 D 。
main( )
{ char*p1,*p2,str[50]="xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str); }
A、xyabcAB B、abcABz C、ABabcz D、xycdBCD
发布评论