C语言经典案例实现

数组转置(12345-->54321)

#include<stdio.h>
int main(){
  int a[5]={1,2,3,4,5},i,j,t;
  for(i=0,j=4;i<j;i++,j--){
    t =a[i];
    a[i]=a[j];
    a[j]=t; }
  for(i=0;i<5;i++)printf("%d \t",a[i]);  }

数组的循环左移(12345 ---> 23451)

#include<stdio.h>
int main(){
   int a[5]={1,2,3,4,5},i,t;
   t = a[0];
   for(i=1;i<5;i++){
     a[i-1]=a[i];}
   a[4]=t;
   for(i=0;i<5;i++)printf("%d \t",a[i]); }

数组的循环右移(12345-->51234)

#include<stdio.h>
int main(){
   int a[5]={1,2,3,4,5},i,t;
   t = a[4];
   for(i=4;i>=0;i--){
     a[i]=a[i-1]; }
   a[0]=t;
   for(i=0;i<5;i++)printf("%d \t",a[i]);  }

数组循环右移三次:

#include<stdio.h>
int main(){
   int a[5]={1,2,3,4,5},i,j,t;
   for(j=1;j<=3;j++){
     t = a[4];
   for(i=3;i>=0;i--){
     a[i+1]=a[i]; }
   a[0]=t;}
   for(i=0;i<5;i++)printf("%d \t",a[i]);  }

编写程序实现输入十进制,输出对应的二进制数

#include<stdio.h>
int main(){
  int a[100],n,i=0,j;
  scanf("%d",&n);
  while(n!=0){
    a[i++]= n%2;
    n /=2; }
  for(i=i-1;i>=0;i--)printf("%d",a[i]);
  printf("\n");  }

冒泡排序法(重点)核心代码

for(i=0;i<n-1;i++)
	for(j=0;j<n-1-i;j++)
		if(a[j]>a[j+1]) 交换a[j]和a[j+1];
		\\当 a[j]<a[j+1时为降序排序

编写程序:输入十个学生的成绩(整型数据),输出低于平均分的学生个数

#include<stdio.h>
int main(){
  int a[10],i,num=0;
  double avg,sum=0;
  for(i=0;i<10;i++){
    scanf("%d",&a[i]);
    sum +=a[i]; }
  avg=sum/10;
  printf("%d\n",sum);
  printf("%f\n",avg);
  for(i=0;i<10;i++){
    printf("%d\n",a[i]);
    if(a[i]<avg)num++;
  }
  printf("%d",num); 
  }

遍历二维数组

#include<stdio.h>
int main(){
  int a[3][3]={1,2,3,4,5,6,7,8,9},i,j;
  for(i=0;i<3;i++)
    for(j=0;j<3;j++)
    printf("%d",a[i][j]);  }

二维数组求最大值

#include<stdio.h>
int main(){
  int a[4][3]={1,2,0,8,3,-1,9,-5,7,6,10,-2},i,j,max;
  max=a[0][0];
  for(i=0;i<4;i++)
    for(j=0;j<3;j++)
      if(a[i][j]>max)max=a[i][j];
  printf("%d",max); }

用函数打印

*
**
***
****
*****
#include<stdio.h>
void fun(int n)
    {int i;
    for(i=1;i<=n;i++)
    {    printf("*"); }
    }
void main(){
    int j;
    for(j=1;j<=5;j++){
        fun(j);
        printf("\n");
    }
}

用函数实现求一维数组的最大值

#include<stdio.h>
void fun(int b[],int n)
  {int i,max;
  max =b[0];
  for(i=0;i<n;i++) 
     if(b[i]>max) max=b[i]; 
  printf("%d",max);      
  }
void main(){
  int a[5]={1,5,8,6,2};
  fun(a,5);
  }
将字符串中大写字母转换为小写字母

#include<stdio.h>
  void fun(char s[])
  {
  for(int i;s[i]!='\0';i++){
    if(s[i]>='A'&&s[i]<='Z'){
      s[i]+=32;  }
  }
  }
  int main(){
    char a[]="AvdBDf";
    fun(a);
    puts(a);
    }

​ 编写函数求字符串的长度

#include<stdio.h>
  int fun(char s[])
  {
  int k=0;
  char *p=s;
  while (*p!='\0')
  {
    k++;
    p++;
  }
  return k;
  }
  int main(){
    char s[]="ATET";
    int a;
    a =fun(s);
    printf("%d",a);
    return 0;
    }   

打印1000以内的完数

int main(){
    int n,sum,i;
    for(n=1;n<=1000;n++) {
        sum=0;
        for(i=1;i<n;i++){
            if(n%i==0)sum+=i;//找n的真因子    
        }
        if(n==sum)printf("%d\t",n);    
    }    
}

打印杨辉三角

#define MAX 10
int main(){
    //打印杨辉三角前10行
    int i,j;
    int a[MAX][MAX]={0};
    for(i=0;i<MAX;i++){
        for(j=0;j<=i;j++){
            if(j==0||i==j)a[i][j]=1;
            else a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }
    for(i=0;i<MAX;i++){
        for(j=0;j<=i;j++){
            printf("%d\t",a[i][j]);
        }
        printf("\n");
}}

//判断一个数是否为质数

#include <stdio.h>
#include <string.h>
int main(){
     int n,i,k=1;
     scanf("%d",&n);
     for(i=2;i<n;i++){
         if(n%i==0){
             k=0;
             break;
         }else continue;
     }
     if(k==1)printf("%d是一个质数1",n);
     else printf("%d不是一个质数",n);
}

打印水仙花数

int main(){
    int i,a,b,c;
    for(i=100;i<=1000;i++){
        a = i%10;
        b = i/10%10;
        c = i/100;
        if((a*a*a+b*b*b+c*c*c)==i)printf("%d\n",i);
    }
}
    

打印斐波那契数列前20项

#include <stdio.h>
#include <string.h>
//打印斐波那契数列前20项
#define MAX 20
int main(){
    int i,a[MAX]={0};
    for(i=0;i<MAX;i++){
        if(i<2)a[i]=1;
        else a[i]=a[i-1]+a[i-2];
    }
    for(i=0;i<MAX;i++){
        printf("%d\t",a[i]);
    }
    }

打印九九乘法表

int main(){
    int i,j;
    for(i=1;i<=9;i++){
        for(j=1;j<=i;j++){
            printf("%d*%d=%d\t",j,i,j*i);
        }
        printf("\n");
    }
    }

冒泡排序法

//冒泡排序法
int main(){
    int a[]={5,8,2,3,6,9,4,7,2,1,4};
    int i,j,n,t;
    n=sizeof(a)/sizeof(int);
    printf("%d",n);
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1-i;j++){
            if(a[j]<a[j+1]){
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for(i=0;i<11;i++){
        printf("%2d",a[i]);
    }
    }

将字符串中大写字母改为小写字母

void fun(char a[],int n){
    for(int i=0;a[i]!='\0';i++){
        if(a[i]>='A'&&a[i]<='Z'){
            a[i]+=32;
        }
    }
}
int main(){
   char a[]="abCdEfG";
   fun(a,8);
    for(int i=0;i<=8;i++){
        printf("%c",a[i]);
    }

    }

判断A是否为B的子集

//判断A集合是否为B集合的子集
int main(){
   int a[]={1,2,3};
   int b[]={1,2,3,4,5,6};
   int i,j,k=0;
   for(i=0;i<3;i++){
       for(j=0;j<6;j++){
           if(a[i]==b[j])k++;
       }
   }
   if(k==3)printf("%d",1);
   else printf("%d",0);
    }

判断字符串是否为回文字符串

//判断回文字符串
int main(){
   char s[]="abcba";
   char *p,*q,flag=1;
   p=s;
   q=s+4;
   while (p<q)
   {
       if(*p!=*q){
           flag=0;
           break;
       }
       p++;
       q--;
   }
   if(flag==1)printf("是回文字符串");
   else printf("不是回文字符串");
   
    }

计算x的n次方

//x的n次方
int fun(int x,int n){
    int i,p=1;
    for(i=1;i<=n;i++){
        p=p*x;
    }
    return p;
}
int main(){
   int a=fun(2,2);
   printf("%d",a);

    }
//求出字符串中出现次数最多的英文字母(小写)
int main(){
    char s[]="aabbccddffrrrddsssdsd";
    int a[26]={0};
    for(int i;s[i]!='\0';i++){
        a[s[i]-'a']++;
    }
    int max=0;
    for(int i=0;i<26;i++){
        if(a[i]>a[max])max=i;
    
    }
    printf("字符串出现次数最多的英文字母是:%c",max+'a');
    }
//二维数组转换为一维数组
int main(){
    int a[3][4]={1,2,3,4,5,6,7,8,9,7,5,8};
    int b[12];
    int i,j;
    for(i=0;i<3;i++){
        for(j=0;j<4;j++){
            b[i*4+j]=a[i][j];
        }
    }
    for(i=0;i<12;i++)printf("%d",b[i]);
}
//统计一个长度为2的字符串as在另一个字符串中出现的次数
int main(){
   char a[]="aaggccddasasokas";
   int i,count=0;
   for(i=0;a[i+1]!='\0';i++){
       if(a[i]=='a'&&a[i+1]=='s')count++;
   }
   printf("%d",count);
}
//将后面的字符串连接到前面的字符串的末尾处
void fun(char p[],char q[]){
    while(*p!='\0')p++;
    while (*q!='\0')
    {
        *p=*q;
        p++;
        q++;
    }
    *p='\0';
    
}
int main(){
   char s[10]="abc";
   fun(s,"123");
   puts(s);

}
//将指定的字符串删除
void fun(char s[],char ch){
    int i,j=0;
    for(i=0;s[i]!='\0';i++)
        if(s[i]!=ch){
            s[j]=s[i];
            j++;
        }
    s[j]='\0';
    
}
int main(){
   char s[10]="abcabc";
   fun(s,'a');
   puts(s);

}

为 1 到 5 号选手投票,输入 1 即代表为 1 号选手投票,其它同理,当输入#时候投票结束;输入 1 到 5 以外的数字,该投票无效;统计各个选手的票数并且输出

int main(){
    int a[5]={0};
    char ch;
    ch=getchar();
    while(ch!='#'){
        if(ch>='1'&&ch<='5'){
            a[ch-'1']++;
        }
        ch = getchar();
    }
    for(int i=0 ;i<5;i++){printf("%d",a[i]);}
}

以下程序的功能是输出 1000 内所有的完数,完数:它所有的真因子(即除了自身以外的约数)的和恰好等于它本身。例如第 一个完数为 6,6 除自身以外的约数有 3 个,分别是 1、2、3,而 1+2+3=6,所以 6

int main(){
    int n,i,sum=0;
    for(n=1;n<1000;n++){
        sum=0;
        for(i=1;i<n;i++){
            if(n%i==0){sum+=i;}
        }

        if(sum==n){printf("%d\n",n);}
    }
}
posted on 2021-08-11 09:41  clinch  阅读(386)  评论(0编辑  收藏  举报