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

为什么C语言代码中的第二个scanf函数执行时被跳过

问题修复方案

核心原因

你代码的scanf格式规则和你提示用户的输入规则不匹配:

  • 你提示用户输入用逗号分隔两个坐标(如0,0),但scanf("%d %d", ...)要求两个数字之间用空白字符分隔
  • 当用户按提示输入带逗号的内容时,第一个scanf读取第一个整数后遇到逗号匹配失败,逗号和后续内容残留在输入缓冲区
  • 第二个scanf执行时读取到残留的非数字逗号,直接匹配失败,表现为被跳过

修复步骤

  1. 修改两处scanf的格式串,匹配逗号分隔的输入规则:
    将两处scanf调用修改为以下格式:
// 读取起始坐标
scanf("%d,%d", &x1, &y1);
// 读取结束坐标
scanf("%d,%d", &x2, &y2);

如果需要兼容用户可能在逗号前后输入空格的情况,可以在逗号前后加空格,自动跳过空白字符:

scanf("%d ,%d", &x1, &y1);
  1. 其他必要修正
  • 引入缺失的头文件:代码用到标准输入输出和数学函数,需要在开头添加:
#include <stdio.h>
#include <math.h>
  • 修正不符合标准的主函数写法:将void main(void)改为int main(void),函数末尾添加return 0;
  • 修正变量赋值逻辑错误:当前代码acos的结果赋值给了sintheta、asin的结果赋值给了costheta,二者命名和赋值对象相反,后续使用会出错,建议调整。

内容的提问来源于stack exchange,提问作者NONAME

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:27:04