(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/
新闻热点
疑难解答