C语言使用while循环计算数的立方 输入负数结果错误如何解决
问题排查与修复方案
现有代码核心问题
- 局部变量
i、cube未初始化:C语言中未初始化的局部自动变量会存储内存中的随机垃圾值,程序运行结果完全不可预测,这是无论输入正负都会出错的基础原因。 - while循环逻辑不符合需求:你当前的循环逻辑是从初始的
i值开始累加,每次计算i的立方,直到i大于n停止。如果输入负整数,假设你给i初始化为1,那么1 <= 负整数的条件永远不成立,循环一次都不会执行,cube始终是垃圾值,自然输出错误。 - 输出位置错误:如果你原本的需求是输出1到n所有整数的立方,应该把
printf语句放在while循环内部,当前写在循环外只能输出最后一次计算的结果。
修复代码
场景1:输入任意整数n,用while循环计算并输出n本身的立方值(符合你现有输出语句的需求)
#include <stdio.h> int main() { int n, cube = 1, count = 0; printf("Enter an integer: "); scanf("%d",&n); // 用while循环执行3次乘法得到立方值,满足循环实现要求 while (count < 3) { cube *= n; count++; } printf("The cube of %d = %d\n", n, cube); return 0; }
场景2:输入任意整数n,用while循环输出1到n所有整数的立方值
#include <stdio.h> int main() { int n, i, cube; printf("Enter an integer: "); scanf("%d",&n); // 根据n的正负适配循环逻辑,兼容负整数输入 if (n >= 1) { i = 1; while (i <= n) { cube = i*i*i; printf("The cube of %d = %d\n", i, cube); i++; } } else { i = 1; while (i >= n) { cube = i*i*i; printf("The cube of %d = %d\n", i, cube); i--; } } return 0; }
内容的提问来源于stack exchange,提问作者gigibot
相关产品推荐
相关产品推荐

