2024年3月12日发(作者:)

1.以下程序的运行结果是【 B 】。

sub(int x,int y,int *z)

{*z=y-x ;}

main()

{ int a, b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

printf(”%4d,%4d,%4d\n”,a,b,c);

A. 5,2,3 B. -5,-12,-7 C.-5,-12,

-17 D. 5,-2,-7

2.若已定义 char s[10]; 则在下面表达式中不表

示s[1]的地址的是【 B 】

A)s+1 B)s++ C)&s[0]+1 D)&s[1]

3.下列程序能对两个整型变量的值进行交换。以下

正确的说法是【 D 】。

main()

{ int a=10,b=20;

printf("(1)a=%d,b=%d\n",a,b);

swap(&a,&b);

printf(“(2)a=%d,b=%dn”a,b);

swap(int p, int q)

{ int t; t=p;p=q;q=t;}

A. 该程序完全正确

B. 该程序有错,只要将语句swap(&a,&b);

中的参数改为a,b即可

C. 该程序有错,只要将swap()函数中的形参

p和q以及t均定义为指

针(执行语句不变)即可

D. 以上说法都不正确

4.有四组对指针变量进行操作的语句,以下判断正

确的选项是【 D 】。

(1)int *p,*q; q=p;

int a,*p,*q;p=q=&a;

(2)int a,*p,*q; q=&a; p=*q;

int a=20, *p; *p=a;

(3)int a=b=0,* p; p=&a; b=* p;

int a=20,*p,*q=&a; *p=*q;

(4)int a=20,*p,*q=&a; p=q;

int p, *q; q=&p;

A.正确:(1);不正确:(2),(3),(4)

B.正确:(l),(4);不正确:(2),(3)

C.正确:(3);不正确:(1),(2),(4)

D.以上结论都不正确

5. 以下程序中调用scanf函数给变量a输入数值的

方法是错误的,其错误原因是 【 B 】。

main()

{ int a,b,*p=&a,*q ;

printf(“input a;”); scanf(“%d”,*p);

„„

}

A.*p表示的是指针变量 p的地址