我遇到的问题比我想的更多。这段代码的目标是从用户读取输入,然后根据该整数输入“hello world”行的次数。我尝试了多种不同的方法,但每次我的代码只执行一次..任何建议?
#include <stdio.h>
int main()
{
double x;
printf("Enter a number from 1 to 5: ");
scanf("%f", &x);
for(int i =0; i <x; i++)
{
x= x-1;
printf ("Hello World.\n");
}
}
答案 0 :(得分:3)
首先,您不必使用double
,这是一种浮点类型。一个整数就足够了。
scanf("%d", &x);
在x
循环中减少for
是没用的:Hello world
将在(x - 1) - 0 + 1 = x
次打印而没有此说明。
for (int i = 0; i < x; i++)
{
printf("Hello world.\n");
}
答案 1 :(得分:2)
你为什么要这样做?
x= x-1;
这会导致循环迭代大约一半。每次迭代,这是发生的比较
//user enters x=5
for(int i =0; i <x; i++) // i == 0; x == 5; i < x is false
for(int i =0; i <x; i++) // i == 1; x == 4; i < x is false
for(int i =0; i <x; i++) // i == 2; x == 3; i < x is false
for(int i =0; i <x; i++) // i == 2; x == 2; i < x is true, loop terminated!
此外,你正在使用双打,即
double x;
但希望用户输入整数。
虽然这不会导致您看到的特定错误,但如果将x更改为int,您将获得更好的结果。
答案 2 :(得分:0)
试试这个:
#include <stdio.h>
int main()
{
int x;
int i;
printf("Enter a number from 1 to 5: ");
scanf("%d", &x);
for(i = 0; i < x; i++)
{
printf ("Hello World.\n");
}
}
行x = x - 1
(顺便说一句,你可以把它写成x--
)是没有意义的,
为什么选择x
为double
?你不能重复“Hello world”3.2次