一、将一组从小到大排列好的数中相同的数去除
/*----------------------------------将一组从小到大排列好的数中相同的数去除-------------------*/
#include <stdio.h>
int unique1(int *pa,int len)
{
int i,j;
int k;
for(i = 0; i < len-1; i++) //从数组第一个数开始遍历直到最后第二个数
{
for(j = i+1; j < len;) //在上面便利的前提下去看下一个数
{
if(pa[i] == pa[j]) //如果相同
{
for(k = j; k < len-1; k++) //用k记下相同数的位置,从这个位置开始将后面的值往前覆盖
{
pa[k]=pa[k+1];
}
len--; //覆盖掉后总长度减1 ,由于是向前覆盖的。因此不需要将j++,这时j的位置就是下一个数的位置
}
else //没有相同的数就往下继续遍历
{
j++;
}
}
}
for(i = 0; i < len; i++)
{
printf("%d ",pa[i]);
}
printf("\n");
}
int main()
{
int a[13] = {1,3,4,5,5,5,6,6,7,8,9,9,20};
int len = sizeof(a)/sizeof(int);
unique1(a,len);
return 0;
}
二、求复数和
/*---------------------------------------求复数和---------------------------------------------------*/
#include <stdio.h>
#include <string.h>
typedef struct //定义复数的实部和虚部
{
float real;
float imaginary;
}Complex;
Complex add(Complex p1,Complex p2) //分别求实部和虚部
{
Complex sum;
sum.real = p1.real+p2.real;
sum.imaginary = p1.imaginary+p2.imaginary;
return (sum);
}
int main()
{
Complex p1;
Complex p2;
printf("please input the ONE number's realpart:\n"); //输入第一个复数
scanf("%f",&p1.real);
printf("please input the ONE number's:imagpart\n");
scanf("%f",&p1.imaginary);
printf("please input the TWO number's realpart:\n"); //输入第二个复数
scanf("%f",&p2.real);
printf("please input the TWO number's imagpart:\n");
scanf("%f",&p2.imaginary);
printf("realpart=%g,imagpart=%g\n",add(p1,p2).real,add(p1,p2).imaginary); //打印和
return 0;
}
本来想用结构体传地址的,但发现结构体比较小可以直接传结构体。
三、计算一句话中的单词个数
/*----------------------------------------计算一句话中的单词个数--------------------------------------------*/
#include <stdio.h>
#define N 50
int Statis1(char *pa,int len)
{
int i;
int word;
int num = 0;
for(i = 0; i < len; i++)
{
if((pa[i] < 'A' || pa[i] > 'Z') && (pa[i] < 'a' || pa[i] > 'z')) //判断是否是字母
{
word=0; //不是字母说明不是单词将标记符word置0
}
else if(word == 0) //首先至少是英文,看标记符是否是0说明单词的开始,将标记符置1,说明在记这个单词
{
word = 1;
num++; //满足上面条件说明是一个单词
}
}
return num;
}
int main()
{
char a[N] = " 12 32 I am a 43 good boy !";
int len = sizeof(a)/sizeof(char);
printf("英语单词的个数是%d\n", Statis1(a,len));
return 0;
}