C语言实现学生成绩计算器时无法通过输入字符串正常终止循环
具体修改方案
你只需要调整3处代码即可实现需求:
- 将原循环内的输入提示文字修改,告知用户输入
UNKNOWN即可终止程序 - 替换退出判断逻辑:C语言中字符串匹配不能直接用
==对比,需要调用<string.h>头文件中提供的strcmp()函数,两个字符串完全一致时函数返回值为0,以此作为退出条件 - 修正原代码中
scanf("%s", &name)的写法错误:数组名本身就是内存首地址,不需要额外加取地址符&
修改后的完整代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { float grade1, grade2, grade3, grade4; char name[32]; printf("Welcome to the Student Quiz Calculator Program\n"); while (1) { // 修改提示文字 printf("Enter a student name. Enter 'UNKNOWN' to quit: \n"); // 去掉多余的&符号 scanf("%s", name); // 替换为字符串匹配判断逻辑 if (strcmp(name, "UNKNOWN") == 0) { printf("Thanks for using the calculator. Bye!\n"); break; } else { printf("Enter quiz grade 1: "); scanf("%f", &grade1); printf("Enter quiz grade 2: "); scanf("%f", &grade2); printf("Enter quiz grade 3: "); scanf("%f", &grade3); printf("Enter quiz grade 4: "); scanf("%f", &grade4); float average = (grade1 + grade2 + grade3 + grade4) / 4; printf("%s, with grades of %.0f, %.0f, %.0f, and %.0f, your quiz average is %0.2f!\n", name, grade1, grade2, grade3, grade4, average); } } // 补充main函数返回值,符合C语言规范 return 0; }
补充说明
如果作业要求支持不区分大小写的匹配(比如输入unknown、Unknown也可以退出),可以把strcmp替换为strcasecmp(Linux平台)或者_stricmp(Windows平台)即可。
内容的提问来源于stack exchange,提问作者dejjen
相关产品推荐
相关产品推荐

