为什么C语言代码中的第二个scanf函数执行时被跳过
问题修复方案
核心原因
你代码的scanf格式规则和你提示用户的输入规则不匹配:
- 你提示用户输入用逗号分隔两个坐标(如
0,0),但scanf("%d %d", ...)要求两个数字之间用空白字符分隔 - 当用户按提示输入带逗号的内容时,第一个
scanf读取第一个整数后遇到逗号匹配失败,逗号和后续内容残留在输入缓冲区 - 第二个
scanf执行时读取到残留的非数字逗号,直接匹配失败,表现为被跳过
修复步骤
- 修改两处
scanf的格式串,匹配逗号分隔的输入规则:
将两处scanf调用修改为以下格式:
// 读取起始坐标 scanf("%d,%d", &x1, &y1); // 读取结束坐标 scanf("%d,%d", &x2, &y2);
如果需要兼容用户可能在逗号前后输入空格的情况,可以在逗号前后加空格,自动跳过空白字符:
scanf("%d ,%d", &x1, &y1);
- 其他必要修正
- 引入缺失的头文件:代码用到标准输入输出和数学函数,需要在开头添加:
#include <stdio.h> #include <math.h>
- 修正不符合标准的主函数写法:将
void main(void)改为int main(void),函数末尾添加return 0; - 修正变量赋值逻辑错误:当前代码
acos的结果赋值给了sintheta、asin的结果赋值给了costheta,二者命名和赋值对象相反,后续使用会出错,建议调整。
内容的提问来源于stack exchange,提问作者NONAME
相关产品推荐
相关产品推荐

