当前位置:首页 » 《随便一记》 » 正文

C语言必背经典程序代码

29 人参与  2023年04月27日 08:01  分类 : 《随便一记》  评论

点击全文阅读


1、水仙花数

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

方法一:#include <stdio.h>int main(int argc, const char *argv[]){     for(int i=1;i<10;i++){        for (int j=0;j<10;j++){            for (int k=0;k<10;k++){                if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)                            printf("%d\n",i*100+j*10+k);                                                    }        }}    return 0;} 方法二:#include <stdio.h>int main(){int i,j,k,n;printf("'water flower'number is:"); for(n=100;n<1000;n++) {  i=n/100;/*分解出百位*/  j=n/10%10;/*分解出十位*/  k=n%10;/*分解出个位*/  if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)   {   printf("%-5d",n);   } }printf("\n");}

2、整型数组内函数求和。

使用函数封装,实现一个整型数组内数据的求和。

 #include <stdio.h>  int array_sum(int *data,int n);  int main(int argc, const char *argv[]) { int a[]={1,2,3,4,5,6,7,8}; int sum=0; sum=array_sum(a,sizeof(a)/sizeof(int)); printf("sum=%d\n",sum); return 0; }                                           int array_sum(int *data,int n){ int ret=0; int i; for(i=0;i<n;i++){  ret+=data[i];  }

3、斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

#include <stdio.h>                                          int main(int argc, const char *argv[]){    int arr[15];    arr[0]=1;    arr[1]=1;    for(int i=2;i<15;i++)    {arr[i]=arr[i-2]+arr[i-1];    }    for(int i=0;i<15;i++){printf("%d、",arr[i]);    }    printf("\n");    return 0;}                                          

4、杨辉三角

杨辉三角的每行行首与每行结尾的数都为1.而且,每个数等于其左上及其正上二数的和

#include <stdio.h>int main(int argc, const char *argv[]){    int a[15][15]={{0}};    int i,j;    for(i=0;i<15;i++)    {        a[i][0]=1;        for(j=1;j<=i;j++)            a[i][j]=a[i-1][j-1]+a[i-1][j];                                                            }    for(i=0;i<15;i++){        for(j=0;j<=i;j++)            printf("%8d",a[i][j]);            printf("\n");    }    return 0;}

5、猴子吃桃子


一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住多吃了一个。第二天又吃了一半,再加上一个;后面每天都是这样吃.到第10天的时候,小猴子发现只有一个桃子了。
问小猴子第一天共摘了多少个桃子?
用递归函数求得小猴子第一天共摘了多少个桃子。

#include <stdio.h>int tao(int n);                                               int main(int argc, const char *argv[]){printf("%d\n",tao(10));    return 0;}int tao(int n){    if(n==1){return 1;}return (tao(n-1)+1)*2;}

6、编写一个时钟

#include <unistd.h>int main(int argc, const char *argv[]){int year,month,day, hour,min,sec;scanf("%d %d %d %d %d %d",&year,&month,&day,&hour,&min,&sec);while(1){sleep(1);if(sec<59){    sec++;}else if(min<59){min++;sec=00;}else if(hour<23){hour++;min=0;sec=0;}else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<31){    day++;hour=00;min=00;sec=00;}                                                                                                 else if(month==02&&day<28){    day++;hour=00;min=00;sec=00;}else if((month==4||month==6||month==9||month==11)&&day<30){         day++;hour=00;min=00;sec=00;}else if(month<12){month++;day=01;hour=00;min=00;sec=00;}else {year++;month=01;day=01;hour=00;min=00;sec=00;}printf("%02d:%02d:%02d:%02d:%02d:%02d\r",year,month,day,hour,min,sec);fflush(stdout);}    return 0;}

7、字符串中计算某字符出现的次数


写一个函数有两个参数,第一个参数是个字符,第二个参数是个char *,
函数功能为返回这个字符串中该字符的个数。

#include <stdio.h>int func(char a,char *b);int main(int argc, const char *argv[]){char c;char s[30]={0};printf("Please input char:\n");scanf("%c",&c);getchar();                                  printf("Please input string:\n");gets(s);func(c,s);    return 0;}int func(char a,char *b){int i=0;while(*b){    if(a==*b){i++;}*b++;}printf("%d\n",i);}

8、逆序输出

一、逆序输出字符串#include <stdio.h>int main(int argc, const char *argv[]){int arr[10];for(int i=0;i<10;i++){    scanf("%d",&arr[i]);}printf("逆序输出为");int n, i;n=sizeof(arr)/sizeof(int);               for(i=n-1;i>=0;i--)    printf("%d\t",arr[i]);putchar('\n');    return 0;}二、逆序输出数组中的数据 #include <stdio.h>  int main(int argc, const char *argv[]) {     int a[]={1,2,3,4,5,6};     int *p,*q,n,i,temp;     n=sizeof(a)/sizeof(int);     p=a;     q=&a[n-1];     while(p<q){         temp=*p;         *p=*q;         *q=temp;         p++;         q--;     }      for (i=0;i<n;i++){         printf("%d\n",a[i]);     }     return 0; }                                         

9、字符串中删除重复字符

#include <stdio.h>#include<string.h>int main(int argc, const char *argv[]){    char s[100];    printf("input:");    gets(s);    int n=strlen(s);    for(int i=0;i<n;i++){        int k=i+1;        for(int j=i+1;j<n;j++){if (s[j]!=s[i])        s[k++]=s[j];        }                                        s[k]='\0';    }    puts(s);    return 0;}                                         

10、用函数封装实现字符串拼接

#include <stdio.h>char *strcat(char *a,char *b);int main(int argc, const char *argv[]){    char a[50]="hello";    char b[]="word";    puts(strcat(a,b));                          return 0;}char *strcat(char *a,char *b){char *c=a;while(*a){a++;}while(*b){*a=*b;a++;b++;}*a='\0';return c;}

11、删除字符串中的空格

#include <stdio.h>#include <string.h>void del_space(char *s1);int main(int argc, const char *argv[]){    char s[]="a d  gg sd ";    puts(s);    del_space(s);    puts(s);    return 0;}void del_space(char *s1){    char *s2;    s2=s1;    while(*s1){                                       if(*s1==' ')        {            s1++;        }else{            *s2=*s1;            s1++;            s2++;        }    }    *s2='\0';}                                                                                            

12、求字符串中数字字符个数及把数字字符转换成数字求和。

 

#include <stdio.h>int main(int argc, const char *argv[]){    char s[100];    int i=0;    int j=0;    int sum=0;    gets(s);    //puts(s);    while(s[i]!='\0'){        if('0'<=s[i]&&s[i]<='9'){            j++;        sum+=(s[i]-'0');        }                                                                     i++;    }    printf("字符串中数字字符的个数为:%d\n",j);    printf("字符串中数字字符求和为:%d\n",sum);    return 0;}

13、二维数组中求出最大值及最大值所在的行数和列数。

#include <stdio.h>int main(int argc, const char *argv[]){int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};int i,j,row,cloumn;row=cloumn=0;for(i=0;i<3;i++){for (j=0;j<3; j++){    if(a[row][cloumn]<a[i][j]){        row=i;        cloumn=j;}}                                                                        }printf("max=%d 最大值所在行为%d行 %d列\n",a[row][cloumn],row,cloumn);    return 0;}

14、冒泡排序

#include <stdio.h>int main(int argc, const char *argv[]){    int i,j,temp;    int arr[5]={0};    printf("input:");                                for(i=0;i<5;i++){        scanf("%d",&arr[i]);    }    for(i=0;i<4;i++){        for (j=0;j<4-i;j++){            if(arr[j]>arr[j+1]){                temp=arr[j];                arr[j]=arr[j+1];                arr[j+1]=temp;            }        }    }    printf("排序后为:");    for(i=0;i<5;i++){        printf("%d ",arr[i]);    }    putchar(10);    return 0;}                                                 

15、实现两个数的交换(函数封装)

#include <stdio.h>void  swap(int *x, int *y);int main(int argc, const char *argv[]){    int a;                                      int b;    scanf("%d",&a);    scanf("%d",&b);swap(&a,&b);printf("%d\n",a);printf("%d\n",b);    return 0;}void  swap(int *x, int *y){int temp;temp=*x;*x=*y;*y=temp;}

16、简易超市结账系统

#include <stdio.h>int main(int argc, const char *argv[]){   int n;    double m;    printf("***********************************************\n");    printf("欢迎你来给我送钱,请按以下步骤进行送钱程序\n");    printf("1、是尊贵会员请输入1以及消费金额\n");    printf("2、不是尊贵会员请输入2以及消费金额\n");    printf("***********************************************\n");    scanf("%d %lf",&n,&m);    if(n=1){if(m<100){printf("money is %lf\n",m*0.99);}else if(m<200){printf("money is %lf\n",m*0.95);}else if(m<300){printf("money is %lf\n",m*0.92);}else if(m<500){printf("money is %lf\n",m*0.88);}else{                                                                                                   printf("money is %lf\n",m*0.8);}    }else{if(m<100){printf("money is %lf\n",m);}else if(m<200){printf("money is %lf\n",m*0.98);}else if(m<300){printf("money is %lf\n",m*0.95);}else if(m<500){printf("money is %lf\n",m*0.9);}else{printf("money is %lf\n",m*0.88);}    }    return 0;}                                                                                                                                                                                                                                                                                                         

17、完数

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数。

 

#include <stdio.h>int main(int argc, const char *argv[]){    int i,j,sum;for (i=3;i<=1000;i++){    sum=1;for (j=2;j<i;j++){                                              if((i%j)==0)        sum+=j;}if(sum==i)printf("%d\n",i);}    return 0;}                                                                                    

18、简单选择排序

#include <stdio.h>#define N 5int main(int argc, const char *argv[]){    int i,j,k,temp;    int num[N];    printf("input num:",N);    for(i=0;i<N;i++){        scanf("%d",&num[i]);    }    for (i=0;i<N-1;i++){        k=i;        for(j=i+1;j<N;j++){                        if (num[j]<num[k]){                k=j;            }        }        if(k!=i){            temp=num[i];            num[i]=num[k];            num[k]=temp;        }    }    printf("output:\n");    for(i=0;i<N;i++){        printf("%d",num[i]);    }    putchar(10);    return 0;}                                       

19、用函数封装思想实现strncpy

#include <stdio.h>int main(int argc, const char *argv[]){printf("please input two string and n:\n");    char a[100];    gets(a);    char b[100];    gets(b);    int n;    scanf("%d",&n);char *p=a;char *q=b;int i=0;                                            while(*q&&i<n){*p=*q;i++;p++;q++;}printf("strncpy:\n");puts(a);return 0;}                                                    

20、实现strcmp的功能

 #include <stdio.h>  int main(int argc, const char *argv[]) {     printf("please input two string :\n");     char a[100];     gets(a);     char b[100];     gets(b);     char *p=a;     char *q=b;      while (*p&&*q){         if(*p<*q){             printf("-1\n");             return 0;         }else if(*p>*q){              printf("1\n");             return 0;         }else{             p++;             q++;             if((*p=='\0')&&(*q=='\0')){                 printf("0\n");                 return 0;             }         }     }     if(*p){         printf("1");     }else{         printf("-1");     }      return 0; }                                                                                                                                                       

21、用函数封装实现strcat的功能

方式一(最后添加'\0'):#include <stdio.h>#include<string.h>void mystrcat(char *x,char *y);int main(int argc, const char *argv[]){char a[100];char b[100];gets(a);gets(b);mystrcat(a,b);puts(a);    return 0;}void mystrcat(char *x,char *y){x=x+strlen(x);while(*y){*x=*y;x++;y++;}*x='\0';}                                       方式二(初始化数组'\0'):#include <stdio.h>#include<string.h>void mystrcat(char *x,char *y);int main(int argc, const char *argv[]){char a[100]={0};char b[100]={0};gets(a);gets(b);mystrcat(a,b);puts(a);    return 0;}void mystrcat(char *x,char *y){x=x+strlen(x);while(*y){*x=*y;x++;y++;  }//*x='\0';                                    }                                              方式二(定义全局变量'\0'):                                             #include <stdio.h>#include<string.h>void mystrcat(char *x,char *y);char a[100];char b[100];int main(int argc, const char *argv[]){gets(a);gets(b);mystrcat(a,b);puts(a);                                                       return 0;}void mystrcat(char *x,char *y){x=x+strlen(x);while(*y){*x=*y;x++;y++;}//*x='\0';}

22、用sqrt 实现求三角形面积

 #include <stdio.h>                   //编译时加-lm #include <math.h> int main(int argc, const char *argv[]) {     double area;     double a,b,c,s,n;     printf("请输入三角形的三边长\n");     scanf("%lf",&a);     scanf("%lf",&b);     scanf("%lf",&c);                                if((a+b)>c&&(a+c)>b&&(b+c)>a){         s=1.0/2*(a+b+c);         area=sqrt(s*(s-a)*b*c);         printf("%lf",area);         putchar('\n');     } else{         printf("erro");         putchar('\n');     }     return 0; }

23、输入整数转换为字符串

#include <stdio.h>char *zhuan(char *p,int n);int main(int argc, const char *argv[]){char s[50],*r;    int n;    printf("请输入要转换为字符串的整数\n");    scanf("%d",&n);    r=zhuan(s,n);    puts(r);    puts(s);    return 0;}char *zhuan(char *p,int n){    int r,i=0,j;                                                      while(n){        r=n%10;        n=n/10;        p[i]=r+'0';        i++;    }    p[i]='\0';    j=i-1;    i=0;    while(i<j){        r=p[i];        p[i]=p[j];        p[j]=r;        i++;        j--;    }    return p;}

24、简易实现手机商城功能

#include <stdio.h>typedef struct{    int ID;    char Brand[10];    char Model[20];    char CPU[20];    float Price;}PH;void ui();void input(PH ph[],int a);void output(PH ph[],int a);void selec(PH *p);int num;int main(int argc, const char *argv[]){while(1){ sleep(1);    ui();    int s;    PH ph[10];                                                                                                               PH *p=ph;    printf("please selec:\n");    scanf("%d",&s);switch(s){case 1: input(ph,s);break;case 2: output(ph,s);break;case 3: return 0;case 4:selec(p);break;default:       puts("xia hu shu");}       while(getchar()!='\n');}return 0;}void input(PH ph[],int a){    int n=0;    printf("please input iphone num:\n");    scanf("%d",&n);    printf("ID\tBrand\tModel\tCPU\tPrice\n");    for(int i=num;i<num+n;i++){        scanf("%d %s %s %s %f",&ph[i].ID,ph[i].Brand,ph[i].Model,ph[i].CPU,&ph[i].Price);    }puts("input success");num=num+n;}void output(PH ph[],int a){    printf("ID\tBrand\tModel\tCPU\tPrice\n");    for(int i=0;i<num;i++){        printf("%d\t%s\t %s\t %s\t %f\n",ph[i].ID,ph[i].Brand,ph[i].Model,ph[i].CPU,ph[i].Price);    }}void ui(){puts("*************************************");puts("****iphone management systerm********");puts("*************1、input****************");puts("*************2、output***************");puts("*************3、exit*****************");puts("*************4、selec*****************");puts("*************************************");}void selec(PH *p){float min,max;printf("please input max:\n");scanf("%f",&max);printf("please input min:\n");scanf("%f",&min);puts("the iphone in this rage have:i\n");for (int i=0;i<num;i++){if((p+i)->Price>=min&&(p+i)->Price<=max){    printf("%d\n",(p+i)->ID);}else{printf("sorry,no phone");}}}                                                                                                                                                                                                                                                  


点击全文阅读


本文链接:http://zhangshiyu.com/post/60065.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1