37.以下程序执行后,a的值是( C )。
main()
{int a, k=4, m=6, *p1=&k, *p2=&m;
a=p1= =&m;(等于运算符==优先级高于赋值运算符=,即为a=(p1==&m))
printf(“%d\n”, a);
}
A) 4
B) 1
C) 0
D) 运行时出错,a无定值
38.以下程序运行后,如果从键盘上输入:
book<回车>
book<空格><回车>
则输出结果是( B )。
#include
main()
{char a1[80], a2[80], *s1=a1, *s2=a2;
gets(s1); gets(s2);
if(!strcmp(s1, s2)) printf(“*”);
else printf(“#”);
printf(“%d\n”, strlen(strcat(s1, s2)));
}
A) *8
B) #9
C) #6
D) *9
39.若有以下调用语句,则不正确的fun函数的首部是( D )。
main()
{ …
int a[50], n;
…
fun (n, &a[9]);
…
}
A) void fun(int m,int x[ ])
B) void fun(int s,int h[41])
C) void fun(int p,int *s) D) void fun(int n,int a)
40.假定下列程序的可执行文件名为prg . exe,则在该程序所在的子目录下输入命令行:
prg hello good<回车>后,程序的输出结果是( B )。
main(int argc, char *argv[ ])
{int i;
if(argc<=0) return;
for(i=1; i
}
A) hello good
B) hg
C) hel
D) hellogood
41.以下程序的输出结果是( D )。
main( )
{char s[ ]=”ABCD”, *p;
for(p=s+1; p
}
A) ABCD BCD CD D
B) A B C D
C) B C D
D) BCD CD D
42.若已定义:int a[9], *p=a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( C )。
A) p+1
B) a+1
C) a++
D) ++p
43.执行以下程序后,y的值是( C )。
main( )
{int a[ ]={2, 4, 6, 8, 10};
int y=1, x, *p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf(“%d\n”, y);
}
A) 17
B) 18
C) 19
D) 20
44.下列程序的输出结果是( C )。
main( )
{int a[5]={2, 4, 6, 8, 10}, *p, **k;
p=a;
k=&p;
printf(“%d ”, *(p++));
printf(“%d\n”, **k);
}
A) 4 4
B) 2 2
C) 2 4
D) 4 6
45.下列程序的输出结果是( D )。
#include
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
46.设有以下定义:
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)
47.阅读程序:
main( )
{int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p;
p=a;
printf("%x\n",p);
printf("%x\n",p+9);
}
该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是( D )。
A) 203
B) 204
C) 1a4
D) 1a6
48.以下程序的输出结果是( C )。
#include
#include
void fun(char *w, int m)
{char s, *p1, *p2;
p1=w; p2=w+m-1;
while(p1
{s=*p1++; *p1=*p2--; *p2=s;}
}
main( )
{char a[ ]="ABCDEFG";
fun(a, strlen(a));
puts(a);
}
A) GEFDCBA
B) AGADAGA
C) AGAAGAG
D) GAGGAGA
49.以下程序的输出结果是( C )。
#include
void fun(int *s)
{static int j=0; www.Examda.CoM
do
s[j]+=s[j+1];
while (++j<2);
}
main( )
{int k, a[10]={1, 2, 3, 4, 5};
for(k=1; k<3; k++) fun (a);
for(k=0; k<5; k++) printf (“%d”, a[k]);
}
A) 34756
B) 23445
C) 35745
D) 12345
50.请读程序:
#include
char fun(char *C)
{if(*c<=‘Z’&&*c>=‘A’) *c-=‘A’-‘a’;
return *c;
}
main( )
{char s[81], *p=s;
gets (s);
while(*p)
{*p=fun(p); putchar(*p); p++;}
putchar(‘\n’);
}
若运行时从键盘上输入OPEN THE DOOR<回车>,则上面程序的输出结果为(B )。
A) oPEN tHE dOOR
B) open the door
C) OPEN THE DOOR
D) Open The Door
51.以下程序的输出结果是( B )。
#include
main( )
{char *s1="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d\n",strcmp(s1, s2));
}
A) 正数
B) 负数
C) 零
D) 不确定的值
52.下面各语句行中,能正确进行赋字符串操作的语句行是( C )。
A) char st[4][5]={“ABCDE”};
B) char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’};
C) char *s; s= “ABCDE”;
D) char *s; scanf(“%s”,s);
53.以下程序的输出结果是( C )。
fun(int *s, int n1, int n2)
{int i, j, t;
i=n1; j=n2;
while(i
{t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;
i++; j--;
}
}
main( )
{int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, i, *p=a;
fun (p, 0, 3); fun (p, 4, 9); fun (p, 0, 9);
for(i=0; i<10; i++) printf("%d ", *(a+i));
printf(“\n”);
}
A) 0 9 8 7 6 5 4 3 2 1
B) 4 3 2 1 0 9 8 7 6 5
C) 5 6 7 8 9 0 1 2 3 4
D) 0 9 8 7 6 5 1 2 3 4
54.下面函数的功能是( B )。
sss (char *s, char *t)
{while((*s)&&(*t)&&(*t= =*s)) s++, t++;
return(*s-*t);
}
A) 求字符串的长度
B) 比较两个字符串的大小
C) 将字符串s复制到字符串t中
D) 将字符串s连接到字符串t中