zoukankan      html  css  js  c++  java
  • C语言算法入门

    1、变量交换

     1 #include<stdio.h>
     2 int main()
     3 {
     4   void swap(int *a,int *b);  //声明swap函数
     5   int x=3,y=4;
     6   swap(&x,&y);
     7   printf("%d,%d
    ",x,y);
     8   getch();
     9 }
    10 void swap(int *a,int *b)
    11 {
    12   int c;
    13   c=*a;
    14   *a=*b;
    15   *b=c;  
    16 }

      

    2、实现1+2+3+4+...+n

    法一:
    1
    #include<stdio.h> 2 int main() 3 { 4 int add(int n); //声明加函数 5 int n,s; 6 scanf("%d",&n); 7 s=add(n); 8 printf("%d",s); 9 getchar(); 10 } 11 int add(int n) 12 { 13 int sum=0; 14 for(int i=0;i<=n;i++) 15 { 16 sum+=i; 17 } 18 return sum; 19 }
    法二:
    1
    #include<stdio.h> 2 int main() 3 { 4 int add(int a); //声明函数 5 int n; 6 scanf("%d",&n); 7 printf("%d",add(n)); 8 getchar(); 9 } 10 int add(int a) 11 { 12 int i=0; 13 int sum=0; 14 while(i<=a) 15 { 16 sum+=i; 17 i++; 18 } 19 return sum; 20 }
    法三: 
    1
    #include<stdio.h> 2 int main() 3 { 4 int add(int a); //声明函数 5 int n; 6 scanf("%d",&n); 7 printf("1+2+3+...+%d的值为:%d ",n,add(n)); 8 getchar(); 9 } 10 int add(int a) 11 { 12 int i=0; 13 int sum=0; 14 do 15 { 16 sum+=i; 17 i++; 18 }while(i<=a); 19 return sum; 20 }

     3、实现阶乘!n=1*2*...*n

     1 #include<stdio.h>
     2 int main()
     3 {
     4   long multi(long a);  //声明函数
     5   long n;
     6   scanf("%d",&n);
     7   long s=multi(n);
     8   printf("%d
    ",s);
     9   getchar();
    10 }
    11 long multi(long a)
    12 {
    13   long sum=1;
    14   if(a==0)
    15   {
    16     sum=0;
    17   }
    18   else
    19   {
    20     for(long i=1;i<=a;i++)
    21     {
    22       sum*=i;
    23     }
    24   }
    25   return sum;
    26 }

     4、查找一维数组中的最大值。

     1 #include <stdio.h> //查找一维数组中的最大值 
     2 int main(int argc, char *argv[]) 
     3 {
     4     int Max(int a[],int n);
     5     int x[5]={3,54,5,2,6};
     6     int m=Max(x,5);
     7     printf("%d",m);
     8     getch();
     9 }
    10 int Max(int a[],int n) //n为数组的大小 
    11 {
    12     int i,max=a[0];
    13     for(i=1;i<n;i++)
    14     {
    15         if(a[i]>a[0])
    16         {
    17             return a[i];
    18         }
    19     }
    20

     5、求数组的和以及平均值。

     1 #include <stdio.h> //求数组的和以及平均值 
     2 float ave(int a[],int n);
     3 int main(int argc, char *argv[]) 
     4 {
     5     int x[5]={1,3,4,5,8};
     6     printf("%f",ave(x,5));
     7     getch();
     8 }
     9 float ave(int a[],int n)
    10 {
    11     int i,sum=0;
    12     for(i=0;i<n;i++)
    13     {
    14         sum+=a[i];
    15     }
    16     return sum/n;
    17 }

    6、计数,求数组中不及格人数。

     1 #include <stdio.h> //计数,求不及格人数 
     2 int num(int a[],int n);
     3 int main(int argc, char *argv[]) 
     4 {
     5     int x[4]={56,23,90,78};
     6     printf("%d",num(x,4));
     7     getch();
     8 }
     9 int num(int a[],int n)
    10 {
    11     int i,j=0;
    12     for(i=0;i<n;i++)
    13     {
    14         if(a[i]<60)
    15         {
    16             j++;
    17         }
    18     }
    19     return j;
    20 }

     7、数组元素逆序排列

    法一:
    1
    #include <stdio.h> //数组元素逆序排列 2 void unlist(int a[],int n); 3 int main(int argc, char *argv[]) 4 { 5 int k,x[4]={3,5,9,43}; 6 unlist(x,4); 7 for(k=0;k<4;k++) 8 { 9 printf("%d ",x[k]); 10 } 11 } 12 void unlist(int a[],int n) 13 { 14 int i,j,t; 15 for(i=0,j=n-1;i<j;i++,j--) 16 { 17 t=a[i]; 18 a[i]=a[j]; 19 a[j]=t; 20 } 21 }
    法二:
    1
    #include <stdio.h> //数组元素逆序排列指针法 2 void unlist(int *a,int n); 3 int main(int argc, char *argv[]) 4 { 5 int k; 6 int x[4]={3,5,9,43}; 7 unlist(x,4); 8 for(k=0;k<4;k++) 9 { 10 printf("%d ",x[k]); 11 } 12 } 13 void unlist(int *a,int n) 14 { 15 int i,j,t; 16 for(i=0,j=n-1;i<j;i++,j--) 17 { 18 t=*(a+i); 19 *(a+i)=*(a+j); 20 *(a+j)=t; 21 } 22 }

     8、数组中插入元素。

     1 #include <stdio.h> //数组中插入元素 
     2 void insert1(int a[],int n,int l,int key); //在指定的位置插入一个数:在a[l] 后面插入一个数key 
     3 void insert2(int a[],int n,int key); //在有序数组中插入一个数
     4 int main(int argc, char *argv[]) 
     5 {
     6     int k;
     7     int x[5]={3,5,9,43};
     8     insert1(x,5,1,45);
     9     for(k=0;k<5;k++)
    10     {
    11         printf("%d ",x[k]);
    12     }
    13     printf("
    ");
    14     //数组指定位置插入 
    15     int y[5]={3,5,9,43};
    16     insert2(y,5,7);
    17     for(k=0;k<5;k++)
    18     {
    19         printf("%d ",y[k]);
    20     }
    21     printf("
    ");
    22     //有序数组插入
    23     getch();
    24 }
    25 
    26 void insert1(int a[],int n,int l,int key)
    27 {
    28     int i;
    29     for(i=n-1;i>l;i--)
    30     {
    31         a[i]=a[i-1];
    32     }
    33     a[l]=key;
    34 }
    35 void insert2(int a[],int n,int key)
    36 {
    37     int i,j;
    38     for(i=0;i<n;i++)
    39     {
    40         if(key>a[i]&&key<a[i+1])
    41         {
    42             for(j=n-1;j>i+1;j--)
    43             {
    44                 a[j]=a[j-1];
    45             }
    46             a[i+1]=key;
    47         }
    48     }
    49 }

     9、删除字符串中的所有'*'号

     1 //给定AA***AA*,设计程序删除所有* 
     2 #include<stdio.h>
     3 int main()
     4 {
     5     void del(char *a);
     6     char x[]={'A','A','*','*','*','A','A','*'};
     7     del(x); 
     8         printf("%s",x);
     9     getch();
    10 }
    11 void del(char *a)
    12 {
    13     int j,i=0;
    14     for(j=0;a[j]!='';j++)
    15     {
    16         if(a[j]!='*')
    17         {
    18             a[i++]=a[j];
    19         }
    20     }
    21     a[i]='';        
    22 }
  • 相关阅读:
    Linux合并iso
    Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义
    hash算法-time33算法
    理解JMS规范中消息的传输模式和消息持久化
    Oracle启动
    Weblogic缓存
    shell
    Hibernate 延迟载入
    Android获取cpu使用率,剩余内存和硬盘容量
    TestNG的组測试和组中组測试
  • 原文地址:https://www.cnblogs.com/joeshine/p/4345250.html
Copyright © 2011-2022 走看看