C语言编写乘法表代码首条运算输出错误其余正确,请问错误在哪?
错误原因
- 局部变量
total未初始化:C语言中未显式初始化的栈区局部变量值是不确定的内存垃圾值,第一次进入循环打印时total还没有被赋值,因此1 * n的输出结果异常。 - 循环内执行顺序错误:当前循环内先执行打印操作,再做
i自增、total计算,后续输出看起来正常是因为错位赋值刚好匹配了下一轮要打印的i值,属于逻辑巧合。
修正代码
调整循环内的执行顺序,先计算当前i对应的乘积,再打印结果,最后做i自增即可:
#include <stdio.h> int main() { int n,i = 1, total; printf("\nPlease enter multiplication table: "); scanf("%d", &n); printf("%d Times Table\n",n); while(i<= 12) { total = i * n; printf("\n%d*%d=%d", i, n, total); i++; } return 0; }
内容的提问来源于stack exchange,提问作者Yyaann
相关产品推荐
相关产品推荐

