首页 > 其他 > 详细

c:处理数字

时间:2020-08-15 22:59:12      阅读:66      评论:0      收藏:0      [点我收藏+]

27、编程实现下列算法:任意给一个12位整数;然后,删除其中8个数字,使得余下的数字按原次序组成的新数最小,并输出原来的12位整数和删除后的4位整数。

解题思路:
这到题和我做的前面几题相比要短
任意给一个12位整数
还要删除其中8个数字
用数组来处理无疑会方便许多
要使余下的4位数字按原次序组成的新数最小
第1个数字可以从数组倒数第4位开始
向前比较
找出其中最小的,记录下标
这就是第一个数字
然后从数组倒数第3位开始至第一个数字的下标处
向前比较
找出最小的,记录下标
这就是第2个数字
另外两个数类似
我给题目标出重点:
技术分享图片
这到题题目看着短,
打起代码来却着实费力
我的代码如下:

#include<stdio.h>

//定义字符数字转换
int fun(char c){
    int a=c-‘0‘;
    return a;
}

int main(){
    //用字符串输入这个12位数字
    int a[12],i,j,m,n=0;
    char s[80];
    printf("输入一个12位整数");
    scanf("%s",&s);

    //把字符串转换为整型数组
    for(i=0;i<12;i++)
        a[i]=fun(s[i]);

    for(j=1;j<=4;j++){//在这个循环下可把4位数求出
        m=a[j+7];//m用于求最小的数字
        for(i=n;i<j+7;i++){
            if(j==1){//第1个数字不能是0
                if((a[i]!=0&&a[i]<m)||m==0){
                    m=a[i];
                    n=i;//n记录最小的数字在数组中的下标
                }
            }else{
                if(a[i]<m){
                    m=a[i];
                    n=i;//n记录最小的数字在数组中的下标
                }
            }           
        }
        if(m==a[j+7])
            n=j+8;//如果遇到倒数的数字正好是最小的,需要处理一下
        else
            n++;//下一个数字从上一个数字的下标下一位开始
        printf("%d",m);
    }
        
    printf("\n");
    return 0;
}

运行测试:
技术分享图片

c:处理数字

原文:https://www.cnblogs.com/danl/p/13510119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!