为什么我的if else if if语句不起作用?
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);}}
我试过(sort == 1),(sort< = 1)但结果仍然相同。
答案 0 :(得分:7)
两个问题:
(1)而不是
if (sort=1)
你可能想要
if (sort==1)
类似于您的所有if
语句。提醒,'='
是作业,'=='
用于布尔比较。
(2)
scanf ("%d", sort);
^
需要&
scanf ("%d", &sort);
^
不幸的是,这些都是常见的问题/错误。如果你提高编译器的警告级别,它可能会帮助你避免其中的一些。
答案 1 :(得分:4)
您应该使用==
代替=
。第一个是比较,第二个是作业。
答案 2 :(得分:2)
if (sort=1){
需要
if (sort==1){
在您的代码中,您只是分配 sort
1
的值,而不是比较。
答案 3 :(得分:1)
通过将switch语句替换为switch case语句,通常可以使其他多个if语句更具可读性 - 请参阅此处了解语法http://msdn.microsoft.com/en-us/library/66k51h7a(v=vs.80).aspx
答案 4 :(得分:0)
正如其他人所说的那样,你需要使用==
而不是=
来表示if / else if语句。
你还应该看看bUKaneer关于在这种情况下使用switch
语句的建议
答案 5 :(得分:0)
此行不正确
scanf ("%d",sort);
scanf
需要指向要存储值的变量的指针。将其更改为
scanf ("%d",&sort);
此外,if-else if
语句中的所有比较都不正确。使用比较(==
)代替分配(=
)。
请考虑使用if-else if
结构替换switch - case
语句,这样可以提高可读性。