You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现学生成绩计算器时无法通过输入字符串正常终止循环

具体修改方案

你只需要调整3处代码即可实现需求:

  1. 将原循环内的输入提示文字修改,告知用户输入UNKNOWN即可终止程序
  2. 替换退出判断逻辑:C语言中字符串匹配不能直接用==对比,需要调用<string.h>头文件中提供的strcmp()函数,两个字符串完全一致时函数返回值为0,以此作为退出条件
  3. 修正原代码中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:36:05