输入一行数字:123 423 5645 875 186523
在输入第二行:23
将第一行中含有第二行中“23”的数输出并排序
结果即:123 423 186523
NOTE:思路是,在输入的一行中使用strtok函数进行截取,分开后。对照输入的要匹配的子字符串如“23”,使用strstr()函数,如果返回的指针
不为空,则将这个分离出的子串存入数组中使用的函数就是atoi()函数。
看代码::
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void bubble_sort(int *a,int n)
{
int i,j,flag=0;
int tmp;
for(i=0;i<n;i++)
{
flag = 0;
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
flag=1;
}
}
if(flag==0)
break;
}
}
int main()
{
char str[1000]={0};
char sub_str[100];
int a[100]={0};
int i=0;
int len=0;
gets(str);
gets(sub_str);
char *except=" ";
char *p;
char ch[100][100]={0};
p=strtok(str,except);
while(p != NULL)
{
if(strstr(p,sub_str))
a[i++]=atoi(p);
p=strtok(NULL,except);
}
len=i;
bubble_sort(a,len);
for(i=0;i<len-1;i++)
{
printf("%d ",a[i]);
}
printf("%d",a[i]);
//printf("%s",str);
return 0;
}