ACM训练系统 1009 [编程入门]数字的判断和处理 C

目录

使用数学逻辑和循环编写代码。 以下代码可以满分通过。

使用if逐句判断编写代码,以下代码可以满分通过。

使用数组编写代码,以下代码可以满分通过。


使用数学逻辑和循环编写代码。 以下代码可以满分通过

首先将题目分解,逐个完成然后再将代码组合在一起。

给出一个不多于5位的整数,

1、求出它是几位数

2、分别输出每一位数字,使用空格隔开

3、按逆序输出各位数字

1.求出它是几位数,使用整除10查看结果是否为0的循环。

//baizhen
#include <stdio.h>
int main(void)
{
        int a,i;
        scanf("%d",&a);
        for(i=0;a!=0;i++)   //如果整除10的结果不为0,计数器就加一
                a=a/10;
        printf("%d\n",i);
        return 0;
}

2、分别输出每一位数字,使用空格隔开

//baizhen
#include <stdio.h>
#include <math.h>
int main(void)
{
        int a,i,aa;
        scanf("%d",&a);
        aa=a;
        for(i=0;a!=0;i++)
                a=a/10;
        printf("%d\n",i);
        for(;i!=0;i--)
                printf("%d ",aa%(int)pow(10,i)/(int)pow(10,i-1)); //pow之前要加int进行强制类型转换,不然不满足题目要求。
        return 0;
}

核心思想是向上取余向下取整,比如求12345的第三位 12345%1000=345  (int)345/100=3 通过数学函数调整10的i次方就可以取出任意位数。

3.按逆序输出各位数字

//baizhen
#include <stdio.h>
#include <math.h>
int main(void)
{
        int a,i,aa,ii;
        scanf("%d",&a);
        aa=a;
        for(i=0;a!=0;i++)
                a=a/10;
        printf("%d\n",i);
        ii=i;
        for(;i!=0;i--)
                printf("%d ",aa%(int)pow(10,i)/(int)pow(10,i-1));
        printf("\n");
        for(int x=1;x<=ii;x++)
                printf("%d",aa%(int)pow(10,x)/(int)pow(10,x-1));
        return 0;
}

使用if逐句判断编写代码,以下代码可以满分通过

//lijiarui算法(doge)
#include<stdio.h>
int main()
{
int a,b,c,d,e,f;
scanf("%d",&a);
if(a>9999)
{printf("5\n");
    b=a/10000;
    c=(a%10000)/1000;
    d=((a%10000)%1000)/100;
    e=(((a%10000)%1000)%100)/10;
    f=(((a%10000)%1000)%100)%10;
    printf("%d %d %d %d %d\n",b,c,d,e,f);
    printf("%d%d%d%d%d",f,e,d,c,b);
}
if(a<=9999 && a>999)
{printf("4\n");
    b=a/1000;
    c=(a%1000)/100;
    d=((a%1000)%100)/10;
    e=((a%1000)%100)%10;
    printf("%d %d %d %d\n",b,c,d,e);
    printf("%d%d%d%d",e,d,c,b);
}
if(a<=999 && a>99)
{printf("3\n");
    b=a%100;
    c=(a%100)/10;
    d=(a%100)%10;
    printf("%d %d %d\n",b,c,d);
    printf("%d%d%d",d,c,b);
}
if(a<=99 && a>9)
{printf("2\n");
    b=a%10;
    c=a/10;
    printf("%d %d\n",b,c);
    printf("%d%d",c,b);
}
if(a<9)
{printf("1\n%d\n%d",a,a);

}

return 0;
}
~ 

使用数组编写代码,以下代码可以满分通过

//baizhen
#include <stdio.h>
#include <string.h>
int main(void)
{
        char a[10];
        scanf("%s",a);
        long b=strlen(a);
        printf("%ld\n",b);

        for(int i=0;i<b;i++)
        {
                printf("%c",a[i]);
                if(i>=0&&i<b-1)
                        printf(" ");
        }
        printf("\n");
        for(int i=0;i<=b;i++)
        {
                printf("%c",a[b-i]);
        }
        return 0;

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值