A. 产生错误 B. 1 C. 2 D. 3 152、以下叙述中正确的是()
A. 预处理命令行必须位于C源程序的起始位置 B. 在C语言中,预处理命令行都以”#”开头
C. 每个C程序必须在开头包含预处理命令行:#include
main() {
int m=1,n=2,k; k=ADD(m+n)*3; printf(“%d”,k); }
A. 9 B. 10 C. 12 D. 18 154、下面程序的运行结果是()
#define M 10 #define S(x) x*x #define F(x) (x*x) main() {
int n1,n2;
n1=1000/S(M); n2=1000/F(M);
printf(“%d,%d\\n”,n1,n2); }
A. 10,10 B. 1000,10 C. 10,1000 D. 1000,1000
指针
155、设有以下语句,则()是对a数组元素的不正确引用,其中0<=i<10。 int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A. a[p-a] B. *(&a[i]) C. p[i] D. *(*(a+i))
156、若有定义int *p1,*p2;则指针变量p1、p2不能进行运算的是() A. < B. = C. + D. -
157、以下关于指针概念的叙述中,错误的是()
A. 一个指针变量职能指向同一类型的变量 B. 一个变量的地址称为该变量的指针C. 两个同类型的指针变量可以作加减运算 D. 任何指针变量都可以与空指针NULL进行比较 158、以下程序段运行后*(p+3)的值为()
char a[]=”good”; char *p; p=a;
A. ?d? B. ?\\0? C. 存放?d?的地址 D. ?0?
17
159、以下程序段运行后*(++p)的值为()
char a[5]=”work”; char *p; p=a;
A. ?w? B. 存放?w?的地址 C. ?o? D. 存放?o?的地址 160、若有定义:int *p,a=4;p=7a;则以下均代表地址的是() A. a,p B. &a,p C. &a,*p D. a,*p
161、若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是() A. *p=&a;scanf(“%lf”,p); B. *p=&a;scanf(“%lf”,*p); C. p=&a,scanf(“%lf”,*p); D. p=&a;scanf(“%lf”,p);
162、若已定义:int x=12;对①int *p=&x;和②*p=x;这两条语句的正确理解是()
A. 语句①是在对指针变量p定义时初始化,使p指向x;而语句②是将变量x的值赋给指针变量p所指向的变量
B. 语句①和②中的*p含义相同,都表示给指针变量赋值
C. 语句①是在对指针变量p定义时初始化,使p指向x;而语句②是将变量x的值肤给指针变量p
D. 语句①和②的执行结果都是把变量x的地址赋给指针变量p 163、下面语句正确的是()
A. int *p;*p=20 B. char *s=”abcdef”;printf(“%s\\n”,s);
C. char str[]=”abcd”;str++; D. char str[]={?a?,?b?,?c?};printf(“%s”,str); 164、若有定义int a[2][3],*p=a;则以下不能表示数组元素a[1][2]的是() A. *(a[1]+2) B. *(p[1]+2) C. p[5] D. *(p+5) 165、若已定义:int a=5,*p;且p=&a;则以下表示中不正确的是()
A. &(*p)==&a B. *(&a)==a C. &(*p)==p D. *(p++)==a++
166、若有以下程序段,切0<=i<4,0<=j<3,则不能正确访问a数组元素的是()
int i,j,(*p)[3];
int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p=a;
A. *(*(a+i)+j) B. p[i][j] C. (*(p+i))[j] D. p[i]+j 167、以下程序段的运行结果是()
int x[]={2,3,4,5,6,7};*p=x; int i,s=0;
for(i=1;i<6;i++) s+=p[i++]; printf(“%d”,s);
A. 12 B. 15 C. 25 D. 27 168、下面程序的运行结果是()
main() {
int x,y;
int *p,*q,*t; p=&x;q=&y t=p; p=q; q=t;
18
printf(“%d,%d\\n”,x,y);
}
A. 36,36 B. 63,63 C. 36,63 D. 63,36 169、以下程序段运行后x的值为()
int a[]={1,2,3,4,5,6,7}; int I,x,*p; x=1; p=&a[2];
for(i=0;i<3;i++) x*=*(p+j);
A. 不确定 B. 24 C. 120 D. 60 170、以下程序段运行后x的值为()
int a[]={1,2,3},b[]={4,2,5}; int *p,*q; int i,x; p=a;q=b;
for(i=0;i<3;i++) if(*(p+i)==*(q+i)) x=*(p+i)*2;
A. 2 B. 4 C. 5 D. 不确定 171、以下程序运行结果是()
main() {
char a[]=”1357”,*p; for(p=a;p A. 1357 B. 1357357577 C. 7531 172、下面程序的输出结果是() #include int i; char *s=”abc”; for(i=0;i<3;i++) printf(“%s\\n”,s+i); } A. abc bc c B. c bc abc D. 7531531311 19 C. abc c bc D. a ab abc 173、下面程序的输出结果是() #include char *str=”12345”,*ps=str+4; printf(“%c\\n”,ps[-4]); } A. 1 B. 2 C. 3 D. 错误 174、以下程序执行时,输入1 2 3 4 5<回车>,输出为() #include int a[N]; int *p=a;
相关推荐: