19.下列程序的输出结果是( C )。
main()
{char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf("%d",*--p);
}
A) 非法
B) a[4]的地址
C) 5
D) 3
20.下列程序的运行结果是( B )。
void fun(int *a, int *B)
{int *k;
k=a; a=b; b=k;
}
main()
{int a=3, b=6, *x=&a, *y=&b;
fun(x, y);
printf("%d %d", a, B);
}
A) 6 3
B) 3 6
C) 编译出错
D) 0 0
21.下面程序的输出结果是( C )。
main()
{int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%d\n",*p+9);
}
A) 0
B) 1
C) 10
D) 9
22.假定以下程序经编译和连接后生成可执行文件PROG . EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCD EFGH IJKL<回车>,则输出结果为( D )。
main( int argc, char *argv[ ])
{while(--argc>0) printf("%s", argv[argc]);
printf("\n");
}
A) ABCDEFGH
B) IJHL
C) ABCDEFGHIJKL
D) IJKLEFGHABCD
23.对于基类型相同的两个指针变量之间,不能进行的运算是( C )。
A) <
B) =
C) +
D) -
24.有以下函数:
char * fun (char *p)
{return p;}
该函数的返回值是( B )。
A) 无确切的值 B) 形参p中存放的地址值
C) 一个临时存储单元的地址
D) 形参p自身的地址值
25.若有以下说明和定义
fun(int *C){…}
main()
{int (*a)()=fun,*b(),w[10],c;
┆
}
在必要的赋值之后,对fun函数的正确调用语句是( B )。
A) a=a(w);
B) (*a)(&C);
C) b=*b(w);
D) fun (B);
26.有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是( B )。
A) *p+9
B) *(p+8)
C) *p+=9
D) p+8
27.有如下程序:
main()
{char ch[2][5]={“6937”,“8254”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>‘\0’;j+=2)
s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
}
该程序的输出结果是( C )。
A) 69825
B 63825
C) 6385
D) 693825
28.若有以下定义和语句:
char *s1=“12345”,*s2=“1234”;
printf(“%d\n”, strlen(strcpy (s1, s2)));
则输出结果是( A )。
A) 4
B) 5
C) 9
D) 10
29.下面程序的输出结果是( C )。
main( )
{char *s=“121”;
int k=0, a=0, b=0;
do
{k++;
if(k%2= =0) {a=a+s[k]-‘0’; continue;}
b=b+s[k]-‘0’; a=a+s[k]-‘0’;
}
while(s[k+1]);
printf(“k=%d a=%d b=%d\n”, k, a, B);
}
A) k=3 a=2 b=3
B) k=3 a=3 b=2
C) k=2 a=3 b=2
D) k=2 a=2 b=3
30.若有以下的定义:
int a[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a;
则值为3的表达式是( A )。
A) p+=2,*(p++)
B) p+=2,*++p
C) p+=3,*p++
D) p+=2,++*p
31.以下程序的输出结果是( A )。
#include
sub1(char a, char B) {char c; c=a; a=b; b=c;}
sub2(char *a, char B) {char c; c=*a; *a=b; b=c;}
sub3(char *a, char *B) {char c; c=*a; *a=*b; *b=c;}
main()
{char a, b;
a=‘A’; b=‘B’; sub3 (&a, &B); putchar(a); putchar(B);
a=‘A’; b=‘B’; sub2 (&a, B); putchar(a); putchar(B);
a=‘A’; b=‘B’; sub1 (a, B); putchar(a); putchar(B);
}
A) BABBAB
B) ABBBBA
C) BABABA
D) BAABBA
32.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( B )。
A) k=*p1+*p2;
B) p2=k;
C) p1=p2;
D) k=*p1*(*p2);
33.设有如下定义:
int arr[ ]={6, 7, 8, 9, 10}; int *ptr;
则下列程序段的输出结果是( D )。
ptr=arr;
*(ptr+2)+=2;
printf(“%d, %d\n”, *ptr, *(ptr+2));
A) 8,10
B) 6,8
C) 7,9
D) 6,10
34.以下程序的输出结果是( D )。
main()
{char a[ ]=“programming”, b[ ]= “language”;
char *p1, *p2;
int i;
p1=a; p2=b;
for(i=0; i<7; i++)
if(*(p1+i)= =*(p2+i)) printf(“%c”, *(p1+i));
}
A) gm
B) rg
C) or
D) ga
35.以下程序运行后,输出结果是( C )。
main()
{char *s=“abcde”;
s+=2;
printf(“%ld\n”, s);
}
A) cde
B) 字符c的ASCII码值
C) 字符c的地址
D) 出错
36.以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为( D )。
#include
#include
func(char str[ ])
{int num=0;
while(*(str+num)!=’\0’) num++;
return(num);
}
main()
{char str[10], *p=str;
gets (p);
printf(“%d\n”, func (p));
}
A) 8
B) 7
C) 6
D) 5
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |