C 代码中的无效选项出现在输出屏幕中
为什么“无效”出现在我的输出中的“所有”下?无效选项是菜单中的最后一项,我使用的语句是正确的还是错误的C 代码中的无效选项出现在输出屏幕中,c,C,为什么“无效”出现在我的输出中的“所有”下?无效选项是菜单中的最后一项,我使用的语句是正确的还是错误的 #include <stdio.h> void two_assesments(); void three_assesments(); void four_assesments(); void five_assesments(); void six_assesments(); int main( void ) { int c; printf("\n*****St
#include <stdio.h>
void two_assesments();
void three_assesments();
void four_assesments();
void five_assesments();
void six_assesments();
int main( void )
{
int c;
printf("\n*****Student Grade Calculator*****\n\n");
printf(" Developed By...\n");
printf(" Carlos\n");
printf(" University of South Wales\n");
printf(" =================================================================\n");
printf("\n");
printf("\n Please enter the number of assessments in the module : \n");
scanf("%d",&c);
if (c==2) {
two_assesments();
}
if (c==3) {
three_assesments();
}
if (c==4) {
four_assesments();
}
if (c==5) {
five_assesments();
}
if (c==6) {
six_assesments();
}
else
if (c=!7); {
{ printf("\nInvalid"); }
}
return(0);
}
#包括
作废两项评估();
撤销三项评估();
作废四项评估();
作废五项评估();
作废六项评估();
内部主(空)
{
INTC;
printf(“\n*******学生成绩计算器******\n\n”);
printf(“由……开发”);
printf(“Carlos\n”);
PrPTF(南威尔士大学);
printf(“=====================================================================================\n”);
printf(“\n”);
printf(“\n请在模块中输入评估次数:\n”);
scanf(“%d”、&c);
如果(c==2){
两项评估();
}
如果(c==3){
三项评估();
}
如果(c==4){
四项评估();
}
如果(c==5){
五项评估();
}
如果(c==6){
六项评估();
}
其他的
如果(c=!7){
{printf(“\n无效”);}
}
返回(0);
}
问题就在这里
else
if (c=!7); { . . .
你有一个代码>在if()之后
我建议您使用这样的switch
语句
switch (c) {
case 2: two_assesments(); break;
case 3: three_assesments(); break;
case 4: four_assesments(); break;
case 5: five_assesments(); break;
case 6: six_assesments(); break;
default: printf("\nInvalid\n");
}
if (c==2)
two_assesments();
else if (c==3)
three_assesments();
else if (c==4)
four_assesments();
else if (c==5)
five_assesments();
else if (c==6)
six_assesments();
else
printf("\nInvalid");
<> >使代码更可读。 理解问题,考虑如果用户输入<代码> 2 < /代码>会发生什么。第一个if
语句的计算结果为true,并调用two\u assessment
函数。接下来的三个if
语句失败。然后我们得到如果(c==6)
。这也会失败,因此将对else
进行评估。这里有两个问题
首先是分号。因为在if(c=!7)
后面有一个分号,编译器会将代码视为
if (c==6) {
six_assesments();
}
else {
if (c=!7)
; /* do nothing */
}
printf("\nInvalid");
换句话说,由于分号的存在,最后的if
语句无效,printf
甚至不是else
的一部分。所以“无效”总是被打印出来
另一个问题是=代码>。你的意思是如果(c!=7)
。通过反转=
和
,您实际上将0
分配给c
,而if
的计算结果始终为false。编译器应该就此向您发出警告
稍微改进的代码版本如下所示
switch (c) {
case 2: two_assesments(); break;
case 3: three_assesments(); break;
case 4: four_assesments(); break;
case 5: five_assesments(); break;
case 6: six_assesments(); break;
default: printf("\nInvalid\n");
}
if (c==2)
two_assesments();
else if (c==3)
three_assesments();
else if (c==4)
four_assesments();
else if (c==5)
five_assesments();
else if (c==6)
six_assesments();
else
printf("\nInvalid");
基本上是这样的:-else如果(c=!7);{{printf(“\nInvalid”);}