一道c语言题目求解,谢谢?

#include<stdio.h>
void swap(int x,int *y)
{int t;
t=x;
x=*y;
*y=t;
}
int main()
{
int a=5,b=10;
swap(a,&b);
printf("%d %d",a,b);
return 0;
}
输出为5 5,为什么不是10 5

读swap()子程序,可知此程序的功能是将输入的两个参数对调,但只修改后一个参数对应的实际内容。
因此swap(a, &b);的实际功能相当于 b=a;
因此最后a、b的值都是5。
这道题考察你对函数形参以及局部变量的认识。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-19
由于函数参数x变化无法影响实参,所以a的值是不变。要交换数值,要在所有x前加*符号。
swap(a,&b)改为swap(&a,&b)本回答被提问者采纳
第2个回答  2019-12-19
这道c语言的题目,我建议你直接用Microsoft be语言来进行解释,他又在语言的话就可能过于复杂了。
第3个回答  2019-12-19
因为x是传值,不是传地址,所以swap操作之后,a的值不会被改变,而b的值会被改变成a的值。

c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...

C语言,求解答,谢谢
您好,很高兴回答您的问题。其实这个题目主要是考察运算符的优先级别。在C语言中,赋值运算符=的优先级别高于逗号运算符;,所以这个题目其实是先把3*5=15先赋值给变量a,然后再运算逗号表达式15,a*4,a+5。因为最后是要输出a的值,而除了赋值之外,a的值并没有再发生变化,所以最后a的值为15。

一道C语言题目,看图~大神帮忙解答下吧!急急急急急!!在线等
答案是D 在C语言中数组赋值可以如A,那样,【】里面定义了长度5{}中有最大不超过5个值,则赋值成功 B在5个数值之内所以也是正确的 答案C,就是另外中赋值方法,在【】中不定义长度,因此数组a[]的实际长度取决于{}中的值的数量,也就是说在C答案中有5个0作为数值,因此C答案中的a[]的实际...

求解一道c语言题目 请详细解释一下怎样输入输出多组数据。谢谢!
include<stdio.h>int main(void){ int a[6][5]={{0}}; int i=0,j=0,k=0; int temp; for(i=0;i<6;i++) { for(j=0;j<5;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<6;i++) { for(j=0;j<5;j++) { fo...

求解C语言题目,最好有解释,谢谢:
1.*p1和*p2都是指向float类型的指针。它们的值只能是地址。A B C 中p1或p2的值都是地址,只有D中a[0]+1结果为float类型的数字,不是地址,所以应该选D 2.A 错误,函数的返回值又函数自身定义决定 B正确 C 错误 main函数可以放在程序的后面,前面可以放全局变量和函数等 D 错误 C语言程序总...

C语言求助题目有图,希望过程详细一些!!
a[0] = 10* (0+2-5*(0>2)) % 6; \/\/(0>2)为判断语句,0大于2为假 ,结果是0 = 10* (0+2-5*0) % 6 = 20 % 6 \/\/取余数 = 2 当i = 1时候 a[1] = 10* (1+2-5*(1>2)) % 6; \/\/(1>2)为判断语句,1大于2为假 ,结果是0 = 10* (1+2-5*0) % ...

C语言问题,求解。。。最好有过程和说明,谢谢!
当n=5时,返回值是*p[0]+add(p+1,5-1)=1+add(p+1,4)当n=4时,add(p+1,4)就等于*p[1]+add(p+1,5-1)=2+add((p+1)+1,4-1)当n=3时,add(p+1,4-1)就等于*p[2]+add(p+1,4-1)=3+add(p+1+1+1,3-1)当n=2时,add(p+1,3-1)就等于*p[3]+add(p...

C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是...

C语言求助,题目有图,希望过程详细一些? 。。。
int a[8][8] 是一个两维数组:a[行数][列数] 就是8行,8列,int a[8][8]={20,30,32,50,52,68,52,88, 72,78,61,89,1,4,101,24, 11,14,97,83};int a[8][8]={{20,30,32,50,52,68,52,88}, {72,78,61,89,1,4,101,24},{11,14,97,83}};上面两行 等效...

一道C语言题目求解,我想知道s,w,t的值分别是怎么得到的
{ int a,b,c;int s,w=0,t;a=-1,b=3,c=3;if(c>0){ s=a+b;\/\/s = 2 } if(a<=0)\/\/a=-1,if条件成立执行 { if(b>0)\/\/if条件不成立,此条语句不执行 { if(c<=0){ w=a-b;} } } else if(c>0)\/\/虽然else if条件成立,但是此条语句不执行,如果不懂,\/\/建议重...

相似回答