#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));
}
【C语言】算法合集
最新推荐文章于 2022-03-27 17:48:24 发布