天天看點

機試---将第一行中含有第二行中“23”的數輸出并排序

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

繼續閱讀