(POJ 2888:字符串中的数字)
问题:输入一个字符串,长度不超过20,字符串中包含数字和非数字字符,将其中是数字的字符提取出来,对它们进行从小到大排序,非数字字符则忽略不计。
输入:若干行字符串
输出:每一个字符串中所有数字的升序排序。每个数字占四个字符位置,处理完一行字符串换行一次。
样例输入:
样例输出:
思路:用字符数组讲输入的字符串进行存储,找出数字0~9的字符,用int类型的数组进行存储数字,下面用的是冒泡排序讲数字从小到大排序,使用printf()函数 printf("%4c",a2[i]+'0');输出题目要求的格式(使用cout<< setw(4)<< num)
#include<stdio.h>
int main()
{
int i,n,l,t,m,a2[25];
char a[25],a1[25],j[10];
while(gets(a)) //用a来存储读入的字符
{
for(i=0;i<10;i++)
j[i]=0;
l=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>=48&&a[i]<=57) //只对字符串中数字0~9讨论
a1[l++]=a[i];
}
a1[l]='\0';
for(i=0;i<l;i++)
a2[i]=int(a1[i]-'0');
for(i=0;i<l-1;i++) //用冒泡排序对字符进行从小到大排序
for(m=0;m<l-1-i;m++)
if(a2[m]>a2[m+1])
{uowe
t=a2[m];
a2[m]=a2[m+1];
a2[m+1]=t;
}
for(i=0;i<l;i++) //将出现的数字从小到大打印
printf("%4c",a2[i]+'0');
printf("\n");
}
return 0;
}
百练/练习对应链接http://bailian.openjudge.cn/practice/2888/