早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C语言选择题下列程序能对两个整型变量的值进行交换。以下正确的说法是(4)D。main(){inta=10,b=20;printf("(l)a=%d,b=%d\n",a,b);swap(&a,&b);printf(“(2)a=%d,b=%d\n”a,b);

题目详情
C语言选择题下列程序能对两个整型变量的值进行交换。以下正确的说法是(4) D 。 main() { int a=10,b=20; printf("(l) 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. 以上说法都不对
▼优质解答
答案和解析
首先,A肯定不对,因为这个程序没有实现a,b的交换。 其次,B的做法也无法改变a,b的值。因为调用函数的时候会复制参数的一个副本,函数内部是用这个副本运算,因此,值传递无法改变原始数据的值。 再次,C的意思是改为 swap(int *p, int *q) { int *t; t=p;p=q;q=t;} 这个函数运行时,同样把a,b的地址复制一个副本给p,q,然后将p,q的值(a,b地址的副本)进行了交换,而地址指向的值却没有任何变动,因此无法改变a,b的值。 所以,D.以上说法都不对