而Loop将变量递增到一个点

时间:2016-09-15 17:22:32

标签: c++ while-loop

我的这个程序的目标是从用户那里获取值'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;
    }

}

4 个答案:

答案 0 :(得分:0)

你遇到的问题是你实际上并没有在循环中计算z,所以它总是你在循环外计算的值。陈述和表达不能追溯地完成。

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

答案 1 :(得分:0)

你需要在计算应该在循环中的z之前改变y输入的位置

答案 2 :(得分:0)

语句z = x * y应该在你的while循环中,以使其工作。 现在发生的是,每次打印z的相同值,最初计算为x(即0)和y(这是一些垃圾值,因为它尚未初始化)给0

答案 3 :(得分:0)

代码中出现的第一个问题是尝试通过将x与y相乘来分配z,但是y未分配给某个值=&gt;错误!这意味着您应该在分配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;
    }
}