//4.15增加方法4
1.整形数组去重
2.字符型数组去重
3.数组排序
4.字符串数组种的字符串的交换
1.整形数组去重
#include <stdio.h>
int main()
{
//先进行排序在去重
int a[10] = {1,1,2,2,1,2,3,4,1,2};
int len = 10;
int m = len;
for(int i=0; i<9; i++)
{
for(int j=i+1; j<10; j++)
{
if(a[i] >= a[j])
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(int i=0; i<m; i++) printf("%d ",*(a+i));
printf("\n");
for(int i=0; i<m-1; i++)
{
if(a[i] == a[i+1])
{
for(int k=i; k<m-1; k++)
{
a[k] = a[k+1];
}
m--;
i--;//选区上面a[i+1]那个元素为起始判断点
}
}
for(int i=0; i<m; i++)
{
printf("%d ",*(a+i));
}
}
运行结果:
2.字符型数组去重
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
//先排序,后去重
//也可以不排序直接去重
char *s;
s = (char*)malloc(sizeof(char)*20);
gets(s);
for(int i=0; i<strlen(s)-1; i++)
{
for(int j=i+1; j<strlen(s); j++)
{
if(*(s+i) > *(s+j))
{
char c = *(s+i);
*(s+i) = *(s+j);
*(s+j) = c;
}
}
}
printf("%s\n",s);
for(int i=0; i<strlen(s)-1; i++)
{
for(int j=i+1; j<strlen(s); j++)
{
if(*(s+i) == *(s+j))
{
for(int k=i; k<strlen(s)-1; k++)
{
s[k] = s[k+1];
if(k == strlen(s)-2)
{
s[k+1] = '\0';
}
}
i--;
}
}
}
printf("%s",s);
}
输出结果:
3.数组排序
法一:
#include <stdio.h>
int main()
{ //法1:将每个元素依次和它后面的元素进行比较
//将数组从小到大进行排序
int a[10] = {10,9,8,7,6,5,4,3,2,1};
for(int i=0; i<9; i++)
{
for(int j=i+1; j<10; j++)
{
if(a[i] > a[j])
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(int i=0; i<10; i++) printf("%d ",*(a+i));
}
运行结果:
法二:
#include <stdio.h>
int main()
{
//冒泡排序
int a[10] = {10,9,8,7,6,5,4,3,2,1};
for(int i=0; i<10; i++)//进行次数==元素个数
{
for(int j=0; j<10-i-1; j++)//每次都从开头与它后一名的元素比较,因为有j+1所以范围要减小1,
{ //每次比较完后都能选中比较时的最大元素,因此i次比较确定了i个元素,就不要在比较了
if(a[j] > a[j+1])
{
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for(int i=0; i<10; i++)
{
printf("%d ",*(a+i));
}
}
4.字符串数组种的字符串的交换
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void change_str(char *a,char *b)
{
int len_a = strlen(a);
int len_b = strlen(b);
char str[len_a];
for(int i=0; i<len_a; i++)
{
str[i] = *(a+i);
}
for(int i=0; i<len_b; i++)
{
*(a+i) = *(b+i);
}
*(a+len_b) = '\0';
for(int i=0; i<len_a; i++)
{
*(b+i) = str[i];
}
*(b+len_a) = '\0';
}
int main()
{
char name[][20] = {"dj","ddjj"};
change_str(name[0],name[1]);
for(int i=0; i<2; i++)
{
printf("name[%d] = %s\n",i,name[i]);
}
return 0;
}