C语言图形面积计算程序运行异常,请求代码故障排查及修复
图形面积计算工具程序异常排查与修复方案
问题描述
开发的C语言图形面积计算工具,接收用户输入图形类型(圆形、正方形、矩形)后,无法正常执行后续的尺寸输入与面积计算流程,代码如下:
#include<stdio.h> #include<math.h> float square(float side); float circle(float rad); float rect(float a,float b); int main(){ char lol; printf("press s for square\n c for circle\n r for rectagle\n"); scanf("%c ", &lol); if(lol == 's') { int t; printf("enter side measurement"); scanf("%d", &t); printf("the area is %f", square(t)); } if(lol == 'c'); { int r; printf("enter radius of circle"); scanf("%d", &r); printf("the area is %f", circle(r)); } if (lol == 'r') { int m,n; printf("enter 2 sides "); scanf("%d %d", &m,&n); printf("the area is %f", rect(m,n)); } return 0; } float square(float side){ return side*side; } float circle(float rad){ return 3.14* rad*rad; } float rect(float a,float b){ return a*b; }
问题排查
- scanf格式符后的多余空格阻塞输入
代码中scanf("%c ", &lol);的%c后多了一个空格,scanf会持续忽略空白字符,直到读取到非空白字符才结束,导致用户输入图形类型后,必须再输入一个非空白字符才能推进流程,造成假死现象。 - if语句后的冗余分号破坏逻辑
if(lol == 'c');末尾的分号让if成为空语句,后续代码块会无条件执行,不管用户选的是什么图形,都会触发圆形的输入计算逻辑,干扰正常分支流程。 - int类型尺寸参数的精度缺陷
尺寸参数用int定义,但计算函数接收float类型,若用户输入小数会被截断,导致计算结果不准确,同时限制了输入范围。
修复方案
针对上述问题,修复后的代码如下:
#include<stdio.h> #include<math.h> float square(float side); float circle(float rad); float rect(float a, float b); int main(){ char lol; printf("请输入图形类型:s(正方形)、c(圆形)、r(矩形)\n"); // 移除%c后的空格,避免输入阻塞 scanf("%c", &lol); if(lol == 's') { // 改用float类型存储尺寸,支持小数输入 float t; printf("请输入正方形的边长:"); scanf("%f", &t); printf("正方形的面积为:%f\n", square(t)); } // 移除if语句后的分号,恢复分支逻辑 if(lol == 'c') { float r; printf("请输入圆形的半径:"); scanf("%f", &r); printf("圆形的面积为:%f\n", circle(r)); } if (lol == 'r') { float m, n; printf("请输入矩形的两个边长:"); scanf("%f %f", &m, &n); printf("矩形的面积为:%f\n", rect(m, n)); } return 0; } float square(float side){ return side * side; } float circle(float rad){ // 使用M_PI(需包含math.h)替代硬编码的3.14,提升精度 return M_PI * rad * rad; } float rect(float a, float b){ return a * b; }
额外优化点:
- 将提示信息改为中文,提升易用性
- 使用
math.h中的M_PI常量替代硬编码的3.14,计算精度更高 - 输出添加换行符,让结果显示更整洁
内容的提问来源于stack exchange,提问作者bruhgnik
相关产品推荐
相关产品推荐

