C语言编写1-6横轴乘法表时if语句条件不满足仍执行问题
问题原因
- 核心死循环问题:
mult变量初始化后没有在循环体内做自增操作,while(mult != 6)的退出条件永远无法满足,程序会无限循环执行循环体内的逻辑,所以会看到if语句持续执行的现象。 - 输出逻辑不符合需求:
check变量从0开始计数,会额外输出*0的无效结果,不符合横轴1~6的要求。 - 纵轴范围匹配错误:需求要求纵轴是1~5,现有循环逻辑判断mult到6才退出,就算修复死循环问题也会多输出一行乘6的冗余结果。
修复方案
调整后的代码如下:
#include <stdio.h> int main(){ int mult = 1; int check = 1; int res; // 纵轴范围1~5,mult到5就停止循环 while(mult <= 5){ if (check <= 6){ res = mult * check; printf("%d\t",res); check ++; } if (check > 6 ){ printf("\n"); check = 1; mult++; // 每行输出完成后纵轴计数+1 } } return 0; }
修改点说明:
- 将
check初始值调整为1,避免输出乘0的无效结果 - 在每次换行逻辑后新增
mult++,保证while循环可以正常退出,同时匹配纵轴1~5的输出要求 - 将while循环条件调整为
mult <=5,更贴合需求的范围描述,可读性更高 - 输出时用
\t代替空格,乘法表排版更整齐
内容的提问来源于stack exchange,提问作者Sen ZmaKi
相关产品推荐
相关产品推荐

