我试图以这种格式打印从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;
}
但每当我尝试执行它时,这会遇到无限循环。你能告诉我问题出在哪里吗?
答案 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循环测试。因此无限循环