0

我在 C 方面遇到的问题比我想象的要多。这段代码的目标是读取用户的输入,然后根据该整数输入“hello world”行该次数。我尝试了多种不同的方法,但每次我的代码只会执行 1 次。有什么建议吗?

#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");
      }
   }
4

3 回答 3

3

首先,您不必使用double浮点类型。一个整数就足够了。

scanf("%d", &x);

循环递减x是没用的:将在没有此指令的情况下打印。forHello world(x - 1) - 0 + 1 = x

for (int i = 0; i < x; i++)
{
    printf("Hello world.\n");
}
于 2013-09-11T17:02:50.560 回答
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,您将获得更好的结果。

于 2013-09-11T17:02:41.307 回答
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次

于 2013-09-11T17:11:15.710 回答