輸入一行數字: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;
}