是否有任何信息或示例可以帮助我将代码流程从使用 If 语句更改为 switch-case 语句?
#include <stdio.h>
int main(void){
double averageGrade;
printf("\nThe average grade is:");
scanf("%1f", &averageGrade);
// output appropriate message for average grade
if (averageGrade > 3.5) {
printf("Average grade is A");
}
else if(averageGrade > 2.5) {
printf("Average grade is B");
}
else if (averageGrade > 1.5) {
printf("Average grade is C");
}
else if (averageGrade > 0.5) {
printf("Average grade is D");
}
else {
printf("Average grade is F");
}
return 0;
}
最佳答案
建议既不要使用 if-else if
语句链,也不使用 switch
语句。
下面的代码可以很好地实现需求。
#include <stdio.h>
#include <stdlib.h>
struct grades
{
double avgGrade;
char letGrade;
};
int main(void)
{
double testAverageGrade;
printf("\nEnter the average grade: ");
if( scanf("%lf", &testAverageGrade) != 1 )
{
fprintf( stderr, "scanf for average grade failed\n" );
exit( EXIT_FAILURE );
}
// implied else, scanf successful
struct grades gradesTbl[] =
{
{ 3.5, 'A' },
{ 2.5, 'B' },
{ 1.5, 'C' },
{ 0.5, 'D' },
{ 0.0, 'F' },
};
size_t numGrades = sizeof( gradesTbl ) / sizeof( gradesTbl[1] );
for( size_t i=0; i<numGrades; i++ )
{
if( testAverageGrade > gradesTbl[i].avgGrade )
{
printf("Average grade is %c\n", gradesTbl[i].letGrade);
break;
}
}
}
关于c - 从 If 语句切换到 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59417777/