简单的c程序不断崩溃

时间:2013-10-14 15:58:49

标签: c scanf crash-reports

#include <stdio.h>
int main(void)
{
int a,b,c;
printf("Enter values of a,b,c:");
scanf("%d %d %d",a,b,c);

printf("\nDescending order of the numbers entered:");

/*Test for Biggest Number*/
if((a>b)&&(a>c))
 printf("%d",a);
else if((b>a)&&(b>c))
 printf("%d",b);
else if((c>a)&&(c>b))
 printf("%d",c);

 /*Test for Second Biggest Number*/
 if((a>b&&a<c)||(a<b&&a>c))
  printf("%d",a);
 else if((b>a&&b<c)||(b<a&&b>c))
  printf("%d",b);
 else if((c>a&&c<b)||(c<a&&c>b))
  printf("%d",c);

/*Test for Smallest Number*/
if((a<b)&&(a<c))
 printf("%d",a);
else if((b<a)&&(b<c))
 printf("%d",b);
else if((c<a)&&(c<b))
 printf("%d",c);

 return 0;
}

这是一个c程序,其中输入了3个数字,程序按降序打印。我编译了程序并运行程序。在输入三个数字之后程序就会崩溃。我的代码有问题或者我必须添加一些内容吗?

2 个答案:

答案 0 :(得分:5)

那是因为您没有将变量的地址传递给scanf。改变

scanf("%d %d %d",a,b,c) 

scanf("%d %d %d",&a,&b,&c)

答案 1 :(得分:3)

尝试使用: -

scanf("%d %d %d",&a,&b,&c)

而不是

scanf("%d %d %d",a,b,c) 

因为&是指变量的地址。

在C中,参数按值传递,因此您需要传递地址(或指针)。当您传递地址(或指针)时,scanf知道它必须放置值的位置。