题目内容

以下程序的运行结果是sub(intx,inty,int*z){*z=y-x;}int main(void){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%4d,%4d,%4d\n",a,b,c);return 0;}

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

查看答案
更多问题

下面程序应能对两个整型变量的值进行交换。以下正确的说法是int main(void){inta=10,b=20;printf("(1)a=%d,b=%d\n",a,b);swap(&a,&b);printf("(2)a=%d,b=%d\n",a,b);}void swap(intp,intq){intt;t=p;p=q;q=t;}

A. 该程序完全正确
B. 该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
C. 该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D. 以上说法都不对

以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是int main(void){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);return 0;}

A. *p表示的是指针变量p的地址
B. *p表示的是变量a的值,而不是变量a的地址
C. *p表示的是指针变量p的值
D. *p只能用来说明p是一个指针变量

以下程序有错,错误原因是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;语句

执行以下程序后,a,b的值分别为int main(void){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(-*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);return 0;}

A. -1,5
B. 1,6
C. 0,7
D. 4,10

答案查题题库