0

why my if else if else if statement is not working?

   printf ("Enter 1 for midtern1 sorting , 2 for midterm2 sorting , 3 for final sorting\n");
   scanf ("%d",sort);

   if (sort=1){
      midterm1(x);
      for (i=9;i>=0;i--){
      printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid1);}}
   else if (sort=2){
        midterm2(x);
        for (i=9;i>=0;i--){
        printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid2);}}
   else if (sort=3){
        final(x);
        for (i=9;i>=0;i--){
        printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].final);}}

i tried (sort==1), (sort<=1) but still same result.

4

6 回答 6

7

两个问题:

(1)代替

 if (sort=1)

你可能想要

 if (sort==1)

您的所有 - 语句都类似if。提醒,'='是赋值,'=='用于布尔比较。

(2)

scanf ("%d", sort);
             ^

需要&

scanf ("%d", &sort);
             ^

不幸的是,这两个都是常见的问题/错误..如果您提高编译器的警告级别,它可能会帮助您避免其中一些。

于 2012-08-09T16:09:42.347 回答
4

您应该使用==而不是=. 第一个是比较,第二个是赋值。

于 2012-08-09T16:10:01.940 回答
2
if (sort=1){

needs to be

if (sort==1){

In your code, you're just assigning sort the value of 1 rather than comparing.

于 2012-08-09T16:10:27.857 回答
1

Multiple else if statements can often be made more readable by replacing them with a switch case statement - see here for syntax http://msdn.microsoft.com/en-us/library/66k51h7a(v=vs.80).aspx

于 2012-08-09T16:12:04.660 回答
0

正如其他人所说,您需要使用==而不是=每个 if/else if 语句。

您还应该查看 bUKaneer 关于switch在这种情况下使用语句的建议

于 2012-08-09T16:15:39.657 回答
0

此行不正确

scanf ("%d",sort);

scanf需要一个指向要存储值的变量的指针。将其更改为

scanf ("%d",&sort);

此外,您在if-else if陈述中的所有比较都是不正确的。使用比较 ( ==) 而不是赋值 ( =)。

考虑用构造替换if-else if语句switch - case,它会提高可读性。

于 2012-08-09T16:15:48.457 回答