执行以下程序后,a的值为【1】,b的值为【2】。main(){int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1= =&m; b=(-*p1)/(*p2)+7; printf("a=%d,b=%d\n",a,b);}
A. -1 ,5
B. 1 ,6
C. 0 ,7
D. 4 ,7
查看答案
下面程序欲对两个整型变量的值进行交换,以下正确的说法是。main(){int a=10,b=20;printf("(1)a=%d,b=%d\n",a,b);swap(&a,&B.;printf("(2)a=%d,b=%d\n",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. 以上说法都不正确
以下程序有错,错误原因是 。main(){int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; …}
A. p和q类型不一致,不能执行*p=*q;语句
B. *p中存放的是地址值,因此不能执行*p=40;语句
C. q没有指向具体的存储单元,所以*q没有实际意义
D. q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句
若有说明int *p,m=5,n;则以下正确的程序段是 。
A. p=&n; scanf("%d",&p);
B. p=&n; scanf("%d",*p);
C. scanf("%d",&n); *p=n;
D. p=&n; *p=m;
若有说明int *p1,*p2,m=5,n;以下正确的程序段是 。
A. p1=&m;p2=&p1;
B. p1=&m;p2=&n;*p1=*p2;
C. p1=&m;p2=p1;
D. p1=&m;*p2=*p1;