C 学生级别的练习不起作用
我想创建一个程序,从用户那里请求10个等级,然后过滤通过和失败,然后打印通过和失败的数量。我做了程序,但输出是错误的C 学生级别的练习不起作用,c,C,我想创建一个程序,从用户那里请求10个等级,然后过滤通过和失败,然后打印通过和失败的数量。我做了程序,但输出是错误的 int pass,fail,grade,studentcounter; pass=0; fail=0; grade=0; studentcounter=10; while (studentcounter!=0) { printf("enter the next grade\n"); scanf("%d",grade); student--; } s
int pass,fail,grade,studentcounter;
pass=0;
fail=0;
grade=0;
studentcounter=10;
while (studentcounter!=0)
{
printf("enter the next grade\n");
scanf("%d",grade);
student--;
}
switch (grade)
{
case 1:
if (grade >= 50)
pass++;
break;
case 2:
if (grade <= 49)
fail++;
break;
}
}
printf("the number of fail is %d",fail);
printf("the number of pass is %d",pass);
}
问题是,程序要求10个等级,但最后它会将失败次数和通过次数打印为零。为什么?您需要将通过/失败计数保留在while循环中,每次输入时都会覆盖grade变量 编辑:
另外,不要使用switch语句。您需要将通过/失败计数保留在while循环中,grade变量将在每次输入时被覆盖 编辑:
另外,不要使用switch语句。您正在输入一个年级编号。switch语句根据案例测试该等级,我非常确定等级不是1%或2%。在这种情况下,if语句更符合逻辑 其次,您有一个从未使用过的代码块。首先将studentcounter设置为零,然后说仅在studentcounter不为零时执行此块
studentcounter=0;
while (studentcounter!=0) {
printf("enter the next grade\n");
scanf("%d",grade);
student--;
}
第三个问题是,你拼错了分数
您可以按如下方式重写代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int pass,fail,grade,studentcounter;
pass=0;
fail=0;
grade=0;
studentcounter=0;
while (studentcounter < 10) {
printf("enter the next grade:\n");
scanf("%d",&grade);
if (grade >= 50) {
pass++;
} else {
fail++;
}
studentcounter++;
}
printf("the number of fail is: %d \n",fail);
printf("the number of pass is: %d \n",pass);
return 0;
}
对不起,如果我忽略了什么;我没有时间把它扔进我的编辑:P
干杯您正在输入年级编号。switch语句根据案例测试该等级,我非常确定等级不是1%或2%。在这种情况下,if语句更符合逻辑 其次,您有一个从未使用过的代码块。首先将studentcounter设置为零,然后说仅在studentcounter不为零时执行此块
studentcounter=0;
while (studentcounter!=0) {
printf("enter the next grade\n");
scanf("%d",grade);
student--;
}
第三个问题是,你拼错了分数
您可以按如下方式重写代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int pass,fail,grade,studentcounter;
pass=0;
fail=0;
grade=0;
studentcounter=0;
while (studentcounter < 10) {
printf("enter the next grade:\n");
scanf("%d",&grade);
if (grade >= 50) {
pass++;
} else {
fail++;
}
studentcounter++;
}
printf("the number of fail is: %d \n",fail);
printf("the number of pass is: %d \n",pass);
return 0;
}
对不起,如果我忽略了什么;我没有时间把它扔进我的编辑:P
干杯好的,上面的代码是一堆废话。我将把它留作练习,让您整理我为您确定的内容:
#include <stdio.h>
int main(int argc, char *argv[])
{
int pass = 0;
int fail = 0;
int grade= 0;
int studentcounter;
for (studentcounter=1; studentcounter<=10; studentcounter++ )
{
printf("Enter grade for student #%-2d :", studentcounter);
scanf("%d",&grade);
if(grade >=50)
pass++;
if(grade<=49)
fail++;
}
printf("the number of fail is %d\n",fail);
printf("the number of pass is %d\n",pass);
}
如果这是家庭作业,请在交作业时给予学分。通过查看别人的代码,你可以学到很多东西,但千万不要声称自己创建了自己没有创建的代码。好吧,现在的代码是一堆废话。我将把它留作练习,让您整理我为您确定的内容:
#include <stdio.h>
int main(int argc, char *argv[])
{
int pass = 0;
int fail = 0;
int grade= 0;
int studentcounter;
for (studentcounter=1; studentcounter<=10; studentcounter++ )
{
printf("Enter grade for student #%-2d :", studentcounter);
scanf("%d",&grade);
if(grade >=50)
pass++;
if(grade<=49)
fail++;
}
printf("the number of fail is %d\n",fail);
printf("the number of pass is %d\n",pass);
}
如果这是家庭作业,请在交作业时给予学分。通过查看他人的代码,您可以学到很多东西,但千万不要声称创建了您没有创建的代码。C“case”语句的工作方式与您期望的不同 它们在“常量表达式”上运行,这意味着为了完成您给定的任务,“确定一个等级是通过还是失败”,必须编写一个形式复杂的switch语句 switch ( grade ) { case 100: case 99: case 98: case 97: case 96: case 95: case 94: case 93: case 92: case 91: case 90: case 89: case 88: case 87: case 86: case 85: case 84: case 83: case 82: case 81: case 80: case 79: case 78: case 77: case 76: case 75: case 74: case 73: case 72: case 71: case 70: case 69: case 68: case 67: case 66: case 65: case 64: case 63: case 62: case 61: case 60: case 59: case 58: case 57: case 56: case 55: case 54: case 53: case 52: case 51: case 50: pass++; break; default: fail++; break; } 这可能会给你一个正确的答案,然而,你可能会因为写了这样一个怪兽而在家庭作业上“失败”
我会尝试思考另一个有“while、switch和if”语句的问题,或者您可以修改您当前的程序,使其不接受10个等级,而是提示用户是否希望输入另一个等级,并且只接受答案“Y”、“Y”或“N”,“n”因此“打开”该答案继续。C“case”语句的工作方式与您预期的不同 它们在“常量表达式”上运行,这意味着为了完成您给定的任务,“确定一个等级是通过还是失败”,必须编写一个形式复杂的switch语句 switch ( grade ) { case 100: case 99: case 98: case 97: case 96: case 95: case 94: case 93: case 92: case 91: case 90: case 89: case 88: case 87: case 86: case 85: case 84: case 83: case 82: case 81: case 80: case 79: case 78: case 77: case 76: case 75: case 74: case 73: case 72: case 71: case 70: case 69: case 68: case 67: case 66: case 65: case 64: case 63: case 62: case 61: case 60: case 59: case 58: case 57: case 56: case 55: case 54: case 53: case 52: case 51: case 50: pass++; break; default: fail++; break; } 这可能会给你一个正确的答案,然而,你可能会因为写了这样一个怪兽而在家庭作业上“失败”
我会试着去想另一个有“while、switch和if”语句的问题,或者你可以修改你当前的程序,这样,它就不会接受10个等级,而是会提示用户是否希望输入另一个等级,并且只接受答案“Y”、“Y”或“N”、“N”,从而“切换”该答案以继续,有一种解决方案以合理的方式使用“开关”。我不会讨论这种方法的优点/缺点或“C”语言的神秘性,但为了证明它是可能的,这里是: #include <stdio.h> int main(void) { int pass, fail, grade, answer, studentcounter; pass = 0; fail = 0; grade = 0; studentcounter = 10; while ( studentcounter-- ) { printf("enter the next grade\n"); scanf("%d", &grade); answer = ( grade > 49 ); switch ( answer ) { case 1: pass++; break; default: fail++; break; } } printf("the number of fail is %d \n", fail); printf("the number of pass is %d \n", pass); }
顺便说一句,有一种解决方案以合理的方式使用“开关”。我不会讨论这种方法的优点/缺点或“C”语言的神秘性,但为了证明它是可能的,这里是: #include <stdio.h> int main(void) { int pass, fail, grade, answer, studentcounter; pass = 0; fail = 0; grade = 0; studentcounter = 10; while ( studentcounter-- ) { printf("enter the next grade\n"); scanf("%d", &grade); answer = ( grade > 49 ); switch ( answer ) { case 1: pass++; break; default: fail++; break; } } printf("the number of fail is %d \n", fail); printf("the number of pass is %d \n", pass); }
嗯,既然你必须使用swicth,我建议如下: 保留一个检查坡度是否大于50的变量,然后在开关内部使用该变量:
希望这对您有所帮助,因为您必须使用swicth,我建议您: 保留一个检查坡度是否大于50的变量,然后在开关内部使用该变量: 希望这对您有所帮助2个错误: 1:while循环应该在switch语句之后结束。 2: 变量名为studentcounter,但正在递减student。 检查以下代码。这应该行得通
void main()
{
int pass,fail,grade,studentcounter;
pass=0;
fail=0;
grade=0;
studentcounter=10;
while (studentcounter!=0)
{
printf("enter the next grade\n");
scanf("%d",grade);
studentcounter--;
switch (grade)
{
case 1:
if (grade >= 50)
pass++;
break;
case 2:
if (grade <= 49)
fail++;
break;
}
}
printf("the number of fail is %d",fail);
printf("the number of pass is %d",pass);
}
2个错误:
1:while循环应该在switch语句之后结束。
2:您的变量名是studentcounter,但您正在递减student。
检查以下代码。这应该行得通
void main()
{
int pass,fail,grade,studentcounter;
pass=0;
fail=0;
grade=0;
studentcounter=10;
while (studentcounter!=0)
{
printf("enter the next grade\n");
scanf("%d",grade);
studentcounter--;
switch (grade)
{
case 1:
if (grade >= 50)
pass++;
break;
case 2:
if (grade <= 49)
fail++;
break;
}
}
printf("the number of fail is %d",fail);
printf("the number of pass is %d",pass);
}
首先,在发布代码时尝试缩进并使用“代码”格式按钮。第二,这闻起来像是一个家庭作业问题……是的,先生,这有点像家庭作业,但是老师让我们发明一个包含开关的程序,如果是这样的话,这段代码是100%由我写的对不起,如果我的问题很傻,但是这是我的第一篇帖子,所以我不知道规则。。在这里你像学生一样递减;在第一个while循环中,而不是studentcounter-;如果这是正在工作的原始代码,请先尝试缩进并在发布代码时使用“代码”格式按钮。第二,这闻起来像是一个家庭作业问题……是的,先生,这有点像家庭作业,但是老师让我们发明一个包含开关的程序,如果是这样的话,这段代码是100%由我写的对不起,如果我的问题很傻,但是这是我的第一篇帖子,所以我不知道规则。。在这里你像学生一样递减;在第一个while循环中,而不是studentcounter-;这是正在运行的原始代码吗?您不需要“else if”;用“其他”就行了!你知道,给学生答案并不能帮助他们学会思考。我很忙,想帮助别人,但没有看到标签作业,我道歉。是的,不需要“else-if”,但它本质上并没有错;用“其他”就行了!你知道,给学生答案并不能帮助他们学会思考。我很忙,想帮助别人,但没有看到标签作业,我道歉。是的,不需要“else if”,但它基本上没有错。使用“else”而不是两个测试。如果你投了反对票,留下评论是礼貌的。此解决方案没有问题。请使用“else”而不是两个测试。如果你投了反对票,请留下评论是礼貌的。这个解决方案没有错。