C语言,输入a和b两个整数,按先大后小的顺序输出a和b,哪里错了?

# include <stdio.h>
int main()
{
int a,b,p;
scanf("%d %d\n",a,b);
int *c=&a;
int *d=&b;
if(a<b)
{p=*d;*d=*c;*c=p;}
printf("%d %d\n",a,b);
printf("max=%d min=%d\n",*c,*d);
return 0;
}

第1个回答  2013-04-30
# include <stdio.h>
int main()
{
int a,b,p;
scanf("%d %d\n",&a,&b); // 改这一行
int *c=&a;
int *d=&b;
if(a<b)
{p=*d;*d=*c;*c=p;}
printf("%d %d\n",a,b);
printf("max=%d min=%d\n",*c,*d);
return 0;
}

送一个简单的
//////////////////////////////////////////////////
# include <stdio.h>
int main()
{
int a,b;
scanf("%d %d\n",&a,&b); // 改这一行if(a<b)
if(a>b)
printf("max=%d min=%d\n",a,b);
else
printf("max=%d min=%d\n",b,a);
return 0;
}追问

我编译了下,输入数据以后程序就卡住了,什么原因?

追答

出现错误不要急于求助,你可以运用调试手段啊。比如,多按按F10。一步一步的跟进,看看变量都有哪些变化。

先定位错误出在哪里,然后再找原因。

比如这个错误,很容易定位,错误出在scanf("%d %d",&a,&b);这一行。那么好了,你可能是scanf的用法不熟练。然后你可以查查scanf通常是怎么用的,然后再跟你写的程序进行比较。然后,你就知道scanf怎么用了。

通常程序出错,解决步骤就是:
1、定位错误,
2、发现错误
3、解决错误

本回答被提问者和网友采纳
第2个回答  2013-04-30
修改这个scanf("%d %d\n",&a,&b);如果输入数a是指针或者数组时,a前面就不用加&,否则则加&。你可以编写代码试一下追问

我编译了下,输入数据以后程序就卡住了,什么原因?

第3个回答  2013-04-30
scanf("%d %d\n",a,b);这句a,b前面少加了求地址符&追问

我编译了下,输入数据以后程序就卡住了,什么原因?

追答

不好意思看漏了,scanf("%d %d\n",&a,&b);里面那个“\n”去掉,不然你得输入第三次才有反应。

第4个回答  2013-04-30
scanf("%d %d\n",a,b);

改为scanf("%d%d",&a,&b);
scanf中少写格式控制.....追问

我编译了下,输入数据以后程序就卡住了,什么原因?

第5个回答  2013-04-30
其实你这样写就可以了
scanf("%d %d\n",a,b);
if(a<b)swap(a,b);追问

我编译了下,输入数据以后程序就卡住了,什么原因?

相似回答