Mister-小方


私信TA

用户名:1104986125

访问量:237621

签 名:

如此英俊为哪般

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

  自我简介:

TA的其他文章

解题思路以及注意事项:

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

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

实例代码:

#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分

41 人评分

  评论区

当一个小白,感觉这些题完全没有思路,大家怎么过来的啊,还有中间分别把每个数字取出来这一端有一些看不懂求解答
2019-08-28 10:37:56
#include <stdio.h>

int main() {

    int num;//键盘输入数
    int count = 0;//位数计算
    int sum = 0;//倒序数
    int a[5] = {0};//输入数各位数字值
    printf("请输入一个不大于5位的数\n");
    scanf("%d",&num);

    do
    {
        count++;
        a[count-1] = num%10;//存各位数字值
        
        sum*=10; //实现位数左移,以便下一步骤以个位加入
        sum += num%10;//每次获得一位数
        num/=10;//将已经获得的位数去掉
    } while (num != 0);
    
    printf("%d\n",count);//位数
    for(int i = count-1; i >= 0;i --)
    printf("%d  ",a[i]);
    printf("\n%d\n",sum);

    return 0;
}

//想请问下各位兄弟,为什么我这个代码不对?有点搞不懂.
2019-08-26 22:16:05
这个代码如果输入100,1000等这样的数字就不能得到想要的结果
2019-03-24 23:05:06
#include<stdio.h>
#include<math.h>

int main()

{
	int i=0,n=0,k=0,m=0,y=0,number=0;
	scanf("%d", &i);
	k = i;				//用k保存输入的数
	while (i > 0)
	{
		i /= 10;	
			n+=1;		
	}
	printf("%d\n", n);
	y = n;				//用y保存输入的位数
	for (int j = 0; j < y; j++)
	{
		n--;
		m = pow(10,n);
		number = (k / m)%10 ;
		printf("%d ", number);
	}
	printf("\n");
	for (int l = 0; l < y; l++)
	{
		m = pow(10, n);
		number = (k / m) % 10;
		printf("%d", number);
		n++;
	}
	return 0;

}
2019-03-24 22:20:28
这代码写错了,如果五位,输出会少一位。
2019-01-17 08:46:38
#include<stdio.h>
int main()
{
    int a[5],b,i,n,j,r,k;
    scanf("%d",&b);
    for (i=0;r!=0;i++)
    {
        a[i]=b%10;
        b=b/10;
        if (a[i]==0 && b==0)
        {
            r=0;
            n=i;
        }
    }
    printf("%d\n",n);
    for (j=n-1;j>-1;j--)
    {
        if(j>0)
        printf("%d ",a[j]);
        else printf("%d",a[j]);
    }
    printf("\n");
    for (k=0;k<n;k++)
        printf("%d",a[k]);
}
求解 哪里错了/流泪
2019-01-15 15:50:59
#include<stdio.h>
#include<string.h>
int main()
{
    char c[5];
    int n,i;
    gets(c);
    n=strlen(c);
    printf("%d\n",n);
    for(i=0;i<n-1;i++)
        printf("%c ",c[i]);
    printf("%c",c[n-1]);
    printf("\n");
    for(i=n-1;i>=0;i--)
        printf("%c",c[i]);
    printf("\n");
    return 0;
}
请问这样写为什么不对呢?
2019-01-10 19:59:30
如果是5位数的话结果不对,最后一位会漏掉
2018-12-20 22:27:23