循环运行无限次

时间:2014-09-21 07:13:31

标签: c

我试图以这种格式打印从1到100的数字的最后数字 1 2 。 。 9 9 1 0 0

我写的代码是

#include<stdio.h> 
int main(void)
{
int last_digit,i;
for(i=1;i<=100;i++)
{
  while(i!=0)
        {
        last_digit=i%10;
        printf("Last_digit=>%d\t",last_digit);
        i=i/10;
        }
        printf("\n");
    }
return 0;
}

但每当我尝试执行它时,这会遇到无限循环。你能告诉我问题出在哪里吗?

6 个答案:

答案 0 :(得分:1)

你的内部while循环除以i除以10,因此它永远不会达到100.尝试使用另一个变量作为内循环。

答案 1 :(得分:1)

int last_digit,i,j;
for(i=1;i<=100;i++)
{
   j = i;
   while(j!=0)
   {
      last_digit=j%10;
      printf("Last_digit=>%d\t",last_digit);
      j=j/10;
   }
   printf("\n");
}
return 0;

答案 2 :(得分:0)

在内圈while循环

的每一次迭代中,你正在减少i
i=i/10;

内部while循环的条件明确指出在循环之后,(i != 0) == false换句话说,内部while循环在循环之后强制执行i == 0。因此,i仍然小于100,并且您的循环永远不会完成。

要解决您的问题,请在内循环中使用另一个迭代变量。

答案 3 :(得分:0)

如果我已正确理解您的作业,那么您需要的是以下内容

#include <stdio.h> 

int main( void )
{
    const int Base = 10;
    int i;


    for ( i = 1; i <= 100; i++ )
    {
        int x = i;
        int n = 1;

        while ( x / ( n * Base ) != 0 ) n *= Base;

        do
        {
            printf( "%d ", x / n );
            x %= n;
            n /= Base;
        } while ( n != 0 );

        printf( "\n" );
    }

    return 0;
}

输出

1 
2 
3 
4 
5 
6 
7 
8 
9 
1 0 
1 1 
1 2 
1 3 
1 4 
1 5 
1 6 
1 7 
1 8 
1 9 
2 0 
//...
9 0 
9 1 
9 2 
9 3 
9 4 
9 5 
9 6 
9 7 
9 8 
9 9 
1 0 0

答案 4 :(得分:0)

如果您尝试打印数字的仅最后一位,则可以打印num%10

#include<stdio.h> 
int main(void)
{
    int i;
    for(i=1;i<=100;i++)
    {
        printf("Last_digit=>%d\t",i%10);
    }
    printf("\n");
    return 0;
}


如果您要打印数字,请执行以下操作:

#include<stdio.h> 
int main(void)
{
    int i;
    int j;
    for(i=1;i<=100;i++)
    {
        j=i;
        while(j>0)
        {
             printf("digit=>%d\n",j%10);
             j/=10;
         }
    }
    printf("\n");
    return 0;
}


请尽量清楚你的问题。

答案 5 :(得分:-1)

在while循环结束时,id为零,由for循环I.e增加。然后应用for循环测试。因此无限循环