1.即使两个指针变量的类型相同,它们也不能
A.相加
B.相减
C.比较
D.指向同一地址
A
相加没有意义
相减,比如一个指针指向字符串的开始,另一个指针结尾,相减可以得到字符串的个数
2.下面程序段的运行结果是()。
char s[ ] = "language", *p = s;
while( *p++ != 'u') {
printf("%c", *p – 'a' + 'A');
}
A.LANGU
B.LANG
C.LANGUAGE
D.ANGU
D
3.若有以下定义:
char s[20]="programming",*ps=s;
则不能代表字符o的表达式是
A.ps[2]
B.ps+=2,*ps
C.s[2]
D.ps+2
D
4.假设scanf
语句执行时输入ABCDE
<回车>,能使puts(s)
语句正确输出ABCDE
字符串的程序段是__。
A.char *s; scanf("%s", s); puts(s);
B.char s[5]={'A', 'B', 'C', 'D', 'E'}; puts(s);
C.char *s; s="ABCDE"; puts(s);
D.char s[5]={"ABCDE"}; puts(s);
C 要正常输出ABCDE必须在字符串的末尾有’\0’作为结束,这样输出函数才知道什么时候终止。
D中字符串数组大小为5只能放ABCDE,放不下’\0’了。如果大小为6,会自动在后面补’\0’
B与D一样,放不下’\0’
A字符串读入进来是要存起来的,而s只是个指针,存不下这么多字符。必须是char s[6];scanf("%s",s);puts(s);
C选项是正确的,"ABCDE"作为静态常量存储于程序段,地址赋给s,可以正常输出。
5.根据声明int a[10], *p=a;
,下列表达式错误的是( )。
A.*p++
B.a[9]
C.a++
D.p[5]
C a是地址,不能自增
6.
下面程序运行后的输出结果是____。
#include<stdio.h>
int main()
{ char s[ ]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
return 0; }
A.12
B.59
C.15
D.16
C