C语言计算每人分得纸杯蛋糕数量程序运行异常 求错误排查
代码问题排查
你的代码存在3个明显错误,逐一说明如下:
- 计算逻辑顺序错误
pie = c/peo、rem_pie = c%peo两行计算代码放在了scanf读取用户输入之前,此时变量c和peo未初始化,存储的是内存中的随机垃圾值,计算结果完全无效。需要把计算逻辑移动到两次scanf读取完用户输入的数值之后。 - 输出参数错误
调用printf输出pie和rem_pie的数值时,错误添加了取地址符&,导致实际输出的是两个变量的内存地址,而非变量存储的数值,删除两个printf参数中的&即可。 - 多余的强制类型转换
c和peo本身就是int类型,二者做除法、取余运算的结果默认就是int类型,代码中的(int)强制转换完全多余,可直接删除。
修正后完整代码
#include <stdio.h> int main() { int c, peo, pie, rem_pie; printf("Enter number of cupcakes:"); scanf("%d", &c); printf("Enter number of people:"); scanf("%d", &peo); // 计算逻辑调整到输入完成后 pie = c / peo; rem_pie = c % peo; // 输出删除取地址符 printf("Everyone will get %d pieces.", pie); printf("\nThere are %d remaining pieces.", rem_pie); return 0; }
运行验证
输入纸杯蛋糕数21、人数5时,输出结果如下:
Enter number of cupcakes:21 Enter number of people:5 Everyone will get 4 pieces. There are 1 remaining pieces.
内容的提问来源于stack exchange,提问作者WWoPPoWW
相关产品推荐
相关产品推荐

