对于循环 - 多次C

时间:2013-09-11 17:00:06

标签: c for-loop

我遇到的问题比我想的更多。这段代码的目标是从用户读取输入,然后根据该整数输入“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");
      }
   }

3 个答案:

答案 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--)是没有意义的, 为什么选择xdouble?你不能重复“Hello world”3.2次