菜鸟跪求以下c语言题目的答案

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:54:55
#include<stdio.h>
void fun (float *a,float *b)
{float w;
*a=*a+*a;w=*a;*a=*b;*b=w;

}
main()
{float x=2.0,y=3.0,*px=&x,*py=&y;
fun(px,py);printf("%2.0f,%2.0f\n",x,y);
}程序的输出结果及具体讲解,本人极笨,尽量详细啊,不胜感激!
第二道,
#include<stdio.h>
void sub (double x,double*y,double*z)
{*y=*y-1.0;*z=*z+x;}
main()
{double a=2.5,b=9.0,*pa,*pb;
pa=&a;pb=&b;
sun(b-a,pa,pa);printf(%f\n,a);程序的输出结果
}
第三题
#include<stdio.h>
void 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("%d,%d,%d\n",a,b,c);程序的输出结果

}

第一道问题的答案是3,4,因为在fun方法里面是这样的,a = a +a也就是a = 2+2先给W赋值,w = 4;然后a又被赋值为b的值,现在a = 3了,但是w还是4,最后把w的值赋值给了b所以输出的是3,4

第二道问题的答案是8.000000,你的代码函数名和调用函数的名字不一样,需要改一下,函数名字就叫sun来说吧,在调用sun函数的时候先传进去的数字是6.5因为9.0-2.5=6.5,然后是2.5在这里pa指针式引用a,这个时候a在函数体里面改变值得话a本身的值也会跟着改变,这个就是引用和指针的区别,这个时候a = 1.5,然后后面在时pa所以这个时候pa = 1.5因为a = 1.5,然后*z = *z+x,*z = 1.5+6.5所以显示的是8为什么8的后面有6个0,因为printf默认输出所有个数

第三道问题的答案是,-5,-12,-7,第一个运行以后是a = -5,第二个运行的时候sub(7,-5,&b)这个时候在sub函数里面是*z = y - x ,*z = -5 - 7,正数前面有负号就是负数这个知道吧,所以负数加上负数所以是-12,然后是sub(-5,-12),运行完了以后就是-7,*z = -12 - -5,负负得正,所以是-7

第一题:答案为 3, 4 注意3 和4 前面都有空格
#include<stdio.h>
void fun (float *a,float *b)
{//函数的作用为将第一个float指针所指向的内容加上自身以后,再将两个
//参数的内容相换
float w;
*a=*a+*a;
w=*a;
*a=*b;
*b=w;

}
main()
{
float x=2.0,y=3.0,*px=&x,*py=&y;//在这里用了引用,对*px和*py的操作便是对x和y的操作
fun(px,py);//将x的值加上x以后赋给y,将y的值赋给x
printf("%2.0f,%2.0f\n",x,y);
}