1
#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;
}

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

4

2 回答 2

5

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

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

scanf("%d %d %d",&a,&b,&c)
于 2013-10-14T15:59:41.507 回答
3

尝试使用:-

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

代替

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

as&是指变量的地址。

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

于 2013-10-14T16:00:29.133 回答