0416
1.删除字符串中的子串
#include <stdio.h>
#include <malloc.h>
int delete(char *ptr1,char *ptr2,char *result)
{
int count = 0;
int flag = 0;
int i = 0;
char *main = ptr1;
char *sub = ptr2;
if( ptr1 == NULL || ptr2 == NULL )
{
return -1;
}
while( *main != '\0' && *sub != '\0' )
{
count = 0;
flag = 0;
while( *main == *sub )
{
flag = 1;
main ++;
sub++;
count++;
}
if( flag == 1 )
{
if( *sub != '\0')
{
main = main - count;
for( i = 0; i < count; i++ )
{
*result = *main;
main++;
result++;
}
sub = ptr2;
continue;
}
else
{
sub = ptr2;
continue;
}
}
*result = *main;
main++;
result++;
}
*result = '\0';
}
int main()
{
char *ptr1 = (char *)malloc(sizeof(char)*100);
char *ptr2 = (char *)malloc(sizeof(char)*100);
char *result = (char *)malloc(sizeof(char)*100);
printf("please input ptr1 : \n");
scanf("%s",ptr1);
printf("please input ptr2 : \n");
scanf("%s",ptr2);
delete(ptr1,ptr2,result);
printf("%s\n",result);
free(ptr1);
free(ptr2);
free(result);
return 0;
}
2.选择排序和冒泡排序
#include <stdio.h>
#include <string.h>
swap(int *num1,int *num2)
{
char temp;
temp = *num1;
*num1 = *num2;
*num2 = temp;
}
sort1(int *arr,int len) //冒泡排序
{
int i = 0;
int j = 0;
for( i = 0; i < len - 1; i++ )
{
for( j = 0; j < len - i - 1; j++ )
{
if( arr[j] > arr[j + 1] )
{
swap(&arr[j],&arr[j + 1]);
}
}
}
}
sort2(int *arr,int len) //选择排序
{
int i = 0;
int j = 0;
int min = 0;
for( i = 0; i < len; i++ )
{
min = i;
for( j = i + 1; j < len; j++ )
{
if( arr[min] > arr[j] )
{
min = j;
}
}
if( min != i )
{
swap(&arr[i],&arr[min]);
}
}
}
int main()
{
int arr[6] = {1,3,5,6,2,4};
int i = 0;
int num = 0;
printf("排序之前:");
for( i = 0; i< 6; i++ )
{
printf("%d\t",arr[i]);
}
printf("\n");
printf("please select: 1:冒泡排 序 2:选择\n");
scanf("%d",&num);
switch(num)
{
case 1:
sort1(arr,6);
break;
case 2:
sort2(arr,6);
break;
default:
printf("error!\n");
}
printf("排序之后:");
for( i = 0; i < 6; i++ )
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}