Mister-小方


私信TA

用户名:1104986125

访问量:196163

签 名:

如此英俊为哪般

等  级
排  名 4
经  验 29719
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

解题思路以及注意事项:

  每一个程序员都有自己独特的写法,针对同一问题的解法也是仁者见仁,智者见智,这道题就深刻地阐释了这个真理。

  好,下面大家看看小方的代码,小方会在代码之中给大家讲解小方的解题思路!

实例代码:

#include"stdio.h"
int main()
{
    int x,i,item=10000,number,size;//x用来存用户输入的数,i为控制循环常用的数,item为计算位数的数
    scanf("%d",&x);                //number为替代x的数,以保证x的完整,size为存位数的数,以便后面用
    for(i=5;i>0;i--,item/=10)
    {
        if(x/item)                 // 循环判断位数
        {
            printf("%d\n",i);
            size=i;
            break;
        }
    }
    for(i=0,item=1;i<size;i++)
    {
        item*=10;                   //得出像10000 1000 100 10这样的数,用到下面的循环中去
    }
    for(i=5,number=x;i>0 && number!=0;i--,item/=10)
    {
        if(number/item==0)continue; //保证小于五位的数分开输出前面不会有0
        if(i==1)
            printf("%d",number/item);//最后一位后面没有0
        else
            printf("%d ",number/item);//输出
        number%=item;
    }
    printf("\n");
    for(i=5,number=x;i>0&&number!=0;i--)//逆序输出,相比前面的简单很多,相信大家看的懂
    {
        printf("%d",number%10);
        number/=10;
    }
    return 0;
}

还有不懂的请在评论区留言,小方会为您解答


 

0.0分

36 人评分

  评论区

#include <stdio.h>
int main()
{
	int x,n=0,i,a[5];
	scanf("%d",&x);
    for(i=0;i<=5;i++)
    {
		a[i]=x%10;
    	x=x/10;
    	n++;
		
	}
	printf(" %d\n",n);
	for(i=5;i>=0;i--)
	{   
		printf(" %d",a[i]);
	}
	printf("\n");
	printf(" ");
	for(i=0;i<=5;i++)
	{   
	 	printf("%d",a[i]);
	}
	return 0;
 } 
为什么输入12345输出是5 4 3 2 1 0
谢谢
2022-03-28 21:59:25 | |
include<stdio.h>
int main()
{
 int b,i,a;
 i=1;
 scanf("%d",&b);
 a=b;
 while(a>10)
 {
     a=a/10;
     i++;
 }
 printf("%d",i);
 return 0;
}
我是求位数,为什么编译错误?求指点
2021-05-18 11:08:38 | |
测试1230的时候第二个数据输出的是1 2 3
2021-02-06 18:26:04 | |
#include<stdio.h>
int main()
{
	int chr[6]={0};
	int num,num_1,x = 0;

	scanf("%d",&num);
	num_1=num;
	//判断几位数
	while (num_1)
		{
			num_1 = num_1 / 10;
			x++;		
		}
	printf("%d\n",x);
	
	//取值
	for(int i=0;i<=5;i++)
	{
		chr[i]=num%10;
		num=num/10;
			
	}
	//正序输出 最后以为没有空格
	for(int s =x-1; s>0;s--)
	{	
		printf("%d ",chr[s]);
	}
	 printf("%d\n",chr[0]);

	//逆序输出
	for(int j =0; j<x;j++)
	{	
		printf("%d",chr[j]);
	}
		
	return 0;

}
欢迎交流
2021-01-19 10:53:21 | |
#include<stdio.h>
int main()
{
	int n, x=0, a, b, c, d, e;
	scanf("%d",&n);
	a=n/10000;
	b=((n%10000)/1000);
	c=(((n%10000)%1000)/100);
	d=((((n%10000)%1000)%100)/10);
	e=((((n%10000)%1000)%100)%10);
	for(x=0;n>0;x++)
	{
		n=n/10;
	}
	printf("%d\n",x);
	printf("%d %d %d %d %d\n",a,b,c,d,e);
	printf("%d%d%d%d%d",e,d,c,b,a);
	return 0;
}
评论一下我这个怎么样
2020-12-05 22:07:19 | |
第一个问题可以输入大于五位的数,会导致第二个问题混乱
第二个问题只输出四个数,
2020-11-04 19:40:10 | |
c = Num;
    for (i = size, x = 0; Num > 0; i--, x++)
    {
        a[x] = Num / b; //储存每一位数上面的数字
        Num = Num % b;
        if (x == size - 1) // 确保最后一个数字后面没有空格
        {
            printf("%d", a[x]);
        }
        else printf("%d ", a[x]);
        b /= 10;
    }
    printf("\n");
    //全部归位
    x = 0;
    i = size;
    Num = c;  
    for (b = 10; i > 0; i--, x++)
    {
        a[x] = Num % b; // 8123
        Num = Num / b;
        printf("%d", a[x]);
    }

    return 0;
}
2020-08-14 20:29:32 | |
#include <stdio.h>

int main(void)
{
    int Num = 0; //输入的数字
    int b = 10000; //判断位数
    int i = 0; //控制循环
    int size = 0; //储存循环次数
    int c = 0; //储存Num
    scanf_s("%d", &Num);
    //判断循环位数
    if (Num >= 100000)
    {
        printf("请输入一个五位数\n");
        scanf_s("%d", &Num);
    }
    for (i = 5; i > 0 && b != 0; b /= 10, i--)
    {
        if (Num / b)
        {
            printf("%d\n", i); //输出位数
            break;
        }
    }
    b = 1;
    size = i;
    //输出每一位数上面的数字

    int a[100] = { 0 };
    int x = 0;
    for (i = 1; i < size; i++)
    {
        b *= 10;
    }
    c =
2020-08-14 20:28:37 | |