惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
S
SegmentFault 最新的问题
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
I
InfoQ
U
Unit 42
博客园_首页
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 聂微东
T
Tailwind CSS Blog
量子位

博客园 - smil、梵音

css渐变边框的实现 C primer Plus 第六版第4章节复习题5记录 css 的z-index的层级问题 由webai项目的 AI工作台 项目有感记录 C语言标准(C89/C90)中的32个关键字全列表 Windows 系统的 vscode 通过 Remote-SSH 连接虚拟机的 Ubuntu 系统运行 C 语言的代码 Windows 系统 vscode Remote-SSH 远程连接虚拟机里面的Ubuntu系统的失败处理 Ubuntu虚拟机里安装了SSH,开启SSH服务的时候报错 VS Code的Remote - SSH功能 Ubuntu系统里面安装 g++ ,sudo apt update 的含义 C语言是不是必须得通过gcc编译成可执行的程序? c语言用gcc编译过后,执行 ./hello.c 报错 ./hello.c: 权限不够 windows系统的虚拟机里面的Ubuntu系统安装VMware Tools Ubuntu的应用中心搜索 vscode 的时候,筛选条件为Snap包、debian包是什么意思,如何安装vscode Ubuntu系统是否就是Linux系统,安装软件和Windows系统有何区别 Ubuntu系统里面vscode运行C语言的第一个 Hello World 程序 vscode 中安装C/C++相关的插件 Ubuntu 安装一个轻量级的中文输入法Fcitx5 Ubuntu安装百度网盘 Ubuntu系统里面安装vscode 乌版图系统截屏快捷键 Ubuntu 系统里面运行C++ TortoiseGit 的安装与汉化 安装虚拟机+ ubuntu24.04 系统 联想小新安装 ubuntu24.04 双系统 | 安装乌版图系统 | windows安装 ubuntu24.04 双系统 利用faststone capture制作gif动图 Sublime Text 常用编辑快捷键速查表 vscode 中的 css 样式代码不显示折叠图标的解决方法 IDEA中git的Cherry-Pick的可视化使用(个人总结) IDEA中git的Cherry-Pick的使用 IDEA中如何实现git的cherry-pick可视化操作?
C语言第4章末尾程序找错记录
smil、梵音 · 2026-08-08 · via 博客园 - smil、梵音

找出下面程序中的错误:

define B booboo
define X 10
main(int)
{ 
      int age;
      char name;
      printf("Please enter your first name.");
      scanf("%s", name);
      printf("All right, %c, what's your age?\n", name);
      scanf("%f", age);
      xp = age + X;
      printf("That's a %s! You must be at least %d.\n", B, xp);
      rerun 0;
}

错误列表及修正

1. 缺少 # 预处理指令前缀

define B booboo      // ❌ 错误
define X 10          // ❌ 错误

应改为:

#define B booboo      // ✅ 正确
#define X 10          // ✅ 正确

2. main 函数声明错误

应改为(标准形式):

int main(void)       // ✅ 正确
// 或者
int main(int argc, char *argv[])  // 如果需要命令行参数

3. 变量类型错误 - name 应该是字符数组而非单个字符

char name;           // ❌ 错误 - 只能存储一个字符

应改为:

char name[50];       // ✅ 正确 - 可以存储字符串
// 或动态分配内存

4. scanf 格式说明符与变量类型不匹配

scanf("%s", name);   // ❌ 部分错误
  • 如果 name 是字符数组,%s 正确

  • 但如果是单个字符 char name,则用 %c

  • 修正后(使用字符数组):

scanf("%s", name);   // ✅ 正确(name 是数组名,本身就是地址)

5. printf 格式说明符与变量类型不匹配

printf("All right, %c, what's your age?\n", name);  // ❌ 错误
  • %c 用于单个字符,但 name 现在应该是字符串

应改为:

printf("All right, %s, what's your age?\n", name);  // ✅ 正确

6. scanf 格式说明符错误且缺少取地址符 &

scanf("%f", age);    // ❌ 两个错误
  • %f 用于 float,但 age 声明为 int
  • 缺少 & 取地址运算符

应改为:

int age;             // 保持 int
scanf("%d", &age);   // ✅ 正确 - 使用 %d 和 &age

7. 变量名错误 - xp 未声明

xp = age + X;        // ❌ 错误 - xp 未声明

应改为:

int xp;              // 先声明
xp = age + X;        // ✅ 正确

8. 字符串字面量格式错误

printf("That's a %s! You must be at least %d.\n", B, xp);  // ❌ 错误
  • B 被定义为 booboo,但这里需要带双引号的字符串

应改为:

#define B "booboo"   // 在宏定义中加引号
// 或者
printf("That's a %s! You must be at least %d.\n", "booboo", xp);

9. 返回语句错误

rerun 0;             // ❌ 错误 - 应该用 return

应改为:

修正后的完整代码

#include <stdio.h>   // 添加必要的头文件

#define B "booboo"   // 修正1: 添加 # 和引号
#define X 10         // 修正2: 添加 #

int main(void)       // 修正3: 正确的 main 声明
{
    int age;
    char name[50];   // 修正4: 改为字符数组
    int xp;          // 修正5: 声明 xp
    
    printf("Please enter your first name.");
    scanf("%s", name);                    // 修正6: 正确使用
    printf("All right, %s, what's your age?\n", name);  // 修正7: %s
    scanf("%d", &age);                    // 修正8: %d 和 &age
    xp = age + X;                         // 修正9: 正确赋值
    printf("That's a %s! You must be at least %d.\n", B, xp);
    
    return 0;                             // 修正10: 正确的返回语句
}

编译建议

修复所有错误后,使用以下命令编译:

gcc -Wall -Wextra program.c -o program

加上 -Wall -Wextra 可以让编译器显示更多警告,帮助发现潜在问题。