输入一个字符串,长度不超过20,字符串中包含数字和非数字字符,将其中是数字的字符提取出来,对它们进行从小到大排序,非数字字符则忽略不计。Input若干行字符串Output每一个字符串中所有数字的升序排序。每个数字占四个字符位置。使用cout<< setw(4)<< num; 处理完一行字符串换行一次。使用cout<< endl;
Sample Input
31W 7Q9 2D2 4d t51 X9PSample Output
1 2 2 3 7 9 1 4 5 9Hint1.由于有多组测试数据,要求使用while循环读取输入。如下:
while(cin.getline(str,21))
{
//你的代码
}
2.setw(4)函数需要#include < iomanip >
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define N 20
char s[N+1];
int count[10];
int main(void){
int i;
while(gets(s)){ //循环输入字符串
memset(count,0,sizeof(count));
for(i=0;s[i];i++){
if(isdigit(s[i]))
count[s[i]-'0']++; //注意s[i]-'0' 因为读入的一行是字符,对应其ascll码,需要s[i]-‘0’;
}
for(i=0;i<=9;i++){
while(count[i]!=0){
printf("%4d",i);
count[i]--; //i出现一次就要输出一次,所以
if(count[i]==0)
continue;
}
}
printf("\n");
}
return 0;
}