一道练手小题,来源XDOJ,写的不咋的
问题描述
对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出。
例如字符串“abc123d5e7f22k9”中共有5个数字123,5,7,22,9,因此应输出123 22 9 7 5。
输入说明
输入为一个字符串,字符串长度不超过100,其中最长的连续数字不超过10个,字符串中至少包含1个数字。
输出说明
对于输入的字符串,在一行上输出排序结果,整数间以一个空格间隔。
输入样例
abc123d5e7f22k9
输出样例
123 22 9 7 5
题解
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char input[101];
int i,j=0,count=0;
scanf("%s",input);
int length=strlen(input);
char num1[50][10];
for(i=0;i<length;i++)
{
if(isdigit(input[i])!=0)
{
num1[count][j]={input[i]};
j++;
}
if(isdigit(input[i])!=0 && isdigit(input[i+1])==0)
{
j=0;
count++;
}
}
int k;
int num2[count];
for(k=0;k<=count;k++)
{
num2[k]=atoi(num1[k]);
}
int p,q,temp;
for(p=0;p<count;p++)
{
for(q=0;q<count-p;q++)
{
if(num2[q]<num2[q+1])
{
temp=num2[q];
num2[q]=num2[q+1];
num2[q+1]=temp;
}
}
}
int r;
for(r=0;r<count;r++)
{
printf("%d ",num2[r]);
}
return 0;
}
Comments 2 条评论
完了,大佬刚开始上大学就开始学我看不懂的东西了(
@CLAM 啊这,这题还算基础吧……