简单的c程序不断崩溃

#include  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)||(ac)) printf("%d",a); else if((b>a&&b<c)||(bc)) printf("%d",b); else if((c>a&&c<b)||(cb)) 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; } 

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

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

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

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

尝试使用: –

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

代替

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

as &指向变量的地址。

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