解题思路:
这到题和我做的前面几题相比要短
任意给一个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;
}
运行测试:
原文:https://www.cnblogs.com/danl/p/13510119.html