【C語言】算法合集

#include<stdio.h>
#include<string.h>
//—判斷迴文字符串
int fun1(char *str)
{
	int n=0,i;
	char *p=str;
	while(*p)n++,p++;
	for(i=0;i<n/2;i++)
	{
		if(str[i]==str[n-1-i]);
		else return -1;
	}
	return 1;
}
//—實現字符串逆置
void fun2(char *str)
{
	int i=0,m,n;
	char ch;
	m=n=strlen(str)-1;
	while(i<=n/2)
	{
		ch=str[i];
		str[i]=str[m];
		str[m]=ch;
		m--;
		i++;
	}	
}
//—輸出較長的字符串
char *fun3(char *str1,char *str2)
{
	int i,j;
	for(i=0;str1[i]!='\0';i++);
		for(j=0;str2[j]!='\0';j++);
		if(i>j)return str1;
		else return str2;
}
//—將字符型數字轉換爲整型(帶正負)
long fun4(char *str)
{
	long sum;
	int  flag=1;
	if(*str=='-')flag=-1,str++;
	while(*str)
	{
		sum=sum*10+*str-'0';
		str++;
	}
	return flag*sum;
}

//—實現複製字符串
void fun5(char *str,char *b)
{
	while(*str)
	{
		*b=*str;
		b++;
		str++;
	}
}

//—找出ASCII碼爲偶數的字符
void fun6(char *str,char *b)
{
	while(*str)
	{
		if(*str%2==0){
		*b=*str;
		b++;
		}
		str++;
	}
}

//—統計字符串中單詞的個數
void fun7(char *str,int *b,int n)
{
	int i;
	for(i=0;i<n;i++)b[i]=0;
	for(i=0;str[i]!='\0';i++)
	if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
	b[str[i]-'a']++;
}
//8-1去掉字符串前面的"*" 
void fun8_1(char *str,char *b)
{
	int k=0;
	char *h,*t;
	h=t=str;
	while(*h=='*')h++;
	while(*t)t++;
	t--;
	while(*t=='*')t--;
	printf("%c %c\n",*h,*t);
	
	while(*h)b[k++]=*h,h++;
	b[k]='\0';
}
//8-2去掉字符串後面的"*" 
void fun8_2(char *str,char *b)
{
	int k=0;
	char *h,*t;
	h=t=str;
	while(*h=='*')h++;
	while(*t)t++;
	t--;
	while(*t=='*')t--;
	printf("%c %c\n",*h,*t);
	while(str<t){
		b[k++]=*str;
		str++;
	}
	b[k]='\0';
	
}
//8-3去掉字符串中間的"*" 
void fun8_3(char *str,char *b)
{
	int k=0;
	char *h,*t;
	h=t=str;
	while(*h=='*')h++;
	while(*t)t++;
	t--;
	while(*t=='*')t--;
	printf("%c %c\n",*h,*t);
	while(h<=t){
		if(*h!='*')b[k++]=*h;
		h++;
	}
	b[k]='\0';
	
	
}
//8-4去掉字符串中間和前面的"*" 
void fun8_4(char *str,char *b)
{
	int k=0;
	char *h,*t;
	h=t=str;
	while(*h=='*')h++;
	while(*t)t++;
	t--;
	while(*t=='*')t--;
	printf("%c %c\n",*h,*t);
	while(str<=t){
		if(*str!='*')b[k++]=*str;
		str++;
	}
	while(*str)b[k++]=*str,str++;
	b[k]='\0';
	
}
//8-5保留字符串前面的指定位數的"*" 
void fun8_5(char *str,char *b,int n)
{
	int k=0,m=0;
	char *h,*t;
	h=t=str;
	while(*h=='*')h++,m++;
	while(*t)t++;
	t--;
	while(*t=='*')t--;
	printf("%c %c\n",*h,*t);
	if(m>n)
	while(str<h){
		b[k++]=*(str+m-n);
		str++;
	} 
	while(*str){
		b[k++]=*str;
		str++;
	}
	b[k]='\0';
}
//—實現刪除字符串中的指定字符
void fun9(char *str,char *b,char ch)
{
	int k=0;
	while(*str)
	{
		if(*str!=ch)b[k++]=*str;
		str++;
	}
	b[k]='\0';	
}
//—對字符串按ASCII碼降序排列
void fun10(char *str)
{
	int i,j;
	char ch;
	
	for(i=1;i<6;i++)
	for(j=i+1;j<6;j++)
	{
		if(str[i]<str[j]){
			ch=str[i];
			str[i]=str[j];
			str[j]=ch; 
		}
	}	
}
//—字符串逐個前移
void fun11(char *str,int m)
{
	char ch;
	int i,j;
	for(i=1;i<=m;i++)
	{
		ch=str[0];
		for(j=1;str[j]!='\0';j++)
		str[j-1]=str[j];
		str[j-1]=ch;	
	}
}
//—統計字符串單詞個數
int fun12(char *str)
{
	int i,ch=0;
	for(i=0;str[i]!='\0';i++)
	{
		if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')ch++;
	}
	return ch;
}
//—找出二維數組中的最長字符串
char *fun13(char (*s)[20])
{
	int i,j;
	char *max;
	max=s[0];
	for(i=0;i<3;i++)
	if(strlen(s[i])>strlen(max))max=s[i];
	return max;
	
}
/***數組類算法***/ 

//—統計數組周圍的元素值之和 
#define M 3
#define N 3
int fun14(int a[M][N])
{
	int i,j;
	int sum=0;
	for(i=0;i<M;i++)
	for(j=0;j<N;j++)
	if(i==0||i==M-1||j==0||j==N-1)sum+=a[i][j];
	return sum;
	
	
}


/***算術類算法***/ 
//—找出1~m間的能被11或者是7整除的數 
void  fun15 ( int  m, int *a , int *n )
{
	int i,k=0;
	for(i=1;i<=m;i++)
	if(i%7==0||i%11==0)a[k++]=i,*n=k;
	
}

//- 求1~m間的素數 
int fun16(int lim,int a[100])
{
	int k=0;
	int i,j;
	for(i=2;i<lim;i++)
	{
	for(j=2;j<i;j++)
	if(i%j==0)break;
	if(i==j)a[k++]=i;
	}
	return k;
}
//- 排序算法 
void fun17(int a[10])
{
	int i,j,n;
	for(i=0;i<10;i++)
	for(j=i+1;j<10;j++)
	if(a[i]<a[j]){
		n=a[i];
		a[i]=a[j];
		a[j]=n;
	}
 } 

//- 找出最大值或者最小值算法1
int fun18(int a[10])
{
	int max,i;
	max=a[0];
	for(i=1;i<10;i++)
	if(max<a[i])max=a[i];
	return max;
 } 
//- 找出最大值或者最小值算法2
int fun19(int a[10])
{
	int max,i,n;
	n=0;
	for(i=1;i<10;i++)
	if(a[n]>a[i])n=i;
	return a[n];
}


int main()
{
	int i;
	int n;
	char a[]="dawfawgaga";
	int  b[100];
	char str[]="****ABC*EDF**GHIJ*******";
	char str1[]="ABCDEFGHIJK";
	char s[3][20]={"dafa","dwafagrg","fagagrgrgrgr"};
	int s1[M][N]={1,2,3,4,5,6,7,8,9};
	int s2[10]={0,1,2,3,4,5,6,7,8,9};
	printf("%d",fun19(s2));
	

	

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章