hdu1106

本文介绍了一个使用C语言处理字符串的应用案例,该程序能够去除字符串前导的特定字符,并从中提取非特定字符组成的数字,然后将这些数字进行排序并输出。通过分析此程序,读者可以了解如何利用C语言中的字符串操作、内存处理及排序算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<string.h>
int main()
{
    char ch[10000];
    int i,j,e,flog;
    __int64 t,a[10000];
    while(gets(ch))
    {
       memset(a,0,sizeof(a));//把a[10000]都初始化为0;a是用来装找出来的数
      
       for(e=0;e<strlen(ch);e++)//这里字符串最前面可能有5,所以先把前面的5去掉
       if(ch[e]!='5')
       break;
       flog=0;t=1;j=0;//j是代表找出的第几个数的下角码
        for(i=strlen(ch)-1;i>=e;i--)//这里要从最后开始往前找
        {
           if(ch[i]!='5')//是5的话说明这个数就己经结束
            {
               a[j]+=(ch[i]-'0')*t;//t=1表示这个数的个位数,等10表示十位数,以此类推
               t*=10; flog=1;//flog是控制下一个数的开关
            }
            else if(flog)//如果为真说明上面找的数己经结束,到找一下个数了,
            {
                j++;t=1;flog=0;//t和flog初始化;j++是下一个数了
            }
        }
        for(i=0;i<=j;i++)//把找出来的数从小到大排序
        for(e=i+1;e<=j;e++)
        if(a[i]>a[e])
        {
            t=a[i];a[i]=a[e];a[e]=t;
        }
        t=0;
        for(i=0;i<=j;i++)//输出,注意是两个数之间有空隔
        {
            if(t==0)
            {
                printf("%I64d",a[i]);
                t=1;
            }
            else
            printf(" %I64d",a[i]);
        }
        printf("\n");
    }
    return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值