While循环,将变量递增到一个点

While Loop that increments a variable to a point

本文关键字:一个 循环 变量 While      更新时间:2023-10-16

这个程序的目标是从用户那里获得值'y'的输入,然后将该值乘以0、1、2、3、4、5、6、7、8、9,然后打印10个结果。现在,当用户输入'y'的值时,程序只返回一个零列表。知道我哪里做错了吗?

#include <iostream>
using namespace std;
int main(){
    int x;
    int y;
    int z;
    x = 0;
    z = x * y;
    cout << "enter y" << endl;
    cin >> y;
    while (x < 10) {
        cout << z << endl;
        x = x + 1;
    }
}

您的问题是,您实际上没有在循环内计算z,因此它将始终是您在循环外计算的值。语句和表达式不能追溯。

但是你有一个更糟糕的问题,因为你在初始化y之前使用了它,这会导致未定义的行为

您需要将y输入的位置更改为应该在循环内计算z之前的位置

语句z = x * y应该在while循环中才能工作。现在发生的事情是,每次它都输出相同的z值,即最初计算为x(为0)和y(由于没有初始化,因此是一些垃圾值),从而得到0

代码中出现的第一个问题是试图通过x乘以y来分配z,但y没有分配给某个值=>错误!这意味着您应该在分配z之前获得用户输入。

你可能想知道为什么你得到十个'0'的输出:在循环中,你只打印分配给z的值到控制台,但z之前已经分配了,并且在重复期间没有改变。

#include <iostream>
using namespace std;
int main(){
    int x;
    int y;
    int z;
    x = 0;
    z = x * y;                 // y is never assigned to a value
    cout << "enter y" << endl;
    cin >> y;                  // y got assigned here!
    while (x < 10) {
        cout << z << endl;     // z stays the same in the loop
        x = x + 1;
    }
}