交换两数大小程序结果出错,且scanf 有警告

来源:百度知道 编辑:UC知道 时间:2024/06/30 06:05:08
程序如下:
#include"stdio.h"
#include"math.h"
main()
{
int *p1,*p2,*p,a,b;
scanf("%d,%d",&a,&b);
p1=&a;p2=&b;
if(a<b)
{p=p1;p1=p2;p2=p;}
printf("\na=%d,b=%d\n\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
}
1.能编译成功,但运行时,我输入2 4,结果是a=2 b=-858993460
无论输入什么a都是前面一个数,b都是-858993460,-858993460是不是什么数据溢出什么的?

2.顺便问一下,这个头文件是干什么用的:#include"minmax.h"

3.warning C4996: 'scanf' was declared deprecated
这个warning怎么解决?
多亏大家的帮助,第一个问题已经解决了,麻烦大家看看第二三个问题吧

你输入有问题
scanf("%d,%d",&a,&b);
这句话意思是
你输入的时候应该用逗号隔开
不是空格隔开
正确输入为2,4回车

第九行.交换两个两个地址不能这么做。这样相当于交换俩数值时的值传递。可以用二级指针,你看着改吧

其实你的编程没问题,只是你的输入出现问题了.scanf("%d,%d",&a,&b);你的scanf中打了逗号而不是空格,所以你运行输入应该是2,4而不是2 4

1、正确的输入是:2,4 回车。
2、关于:#include"math.h"
的作用是在程序编译的时候,将本程序中涉及计算的math.h文件中的子程序组合到你的程序中来,以能完成你需要的计算操作。

1,scanf()那句a,b的输入中 要用,间隔,把scanf()中两个%d中间的,去掉

scanf("%d,%d",&a,&b);改成scanf("%d%d",&a,&b);格式控制出不应有‘,’。
或者输入的时候输入“x,y”,不能只输入“x y”。