当前位置:   article > 正文

C语言必背经典程序代码_c语言代码

c语言代码

1、水仙花数

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

  1. 方法一:
  2. #include <stdio.h>
  3. int main(int argc, const char *argv[])
  4. {
  5. for(int i=1;i<10;i++){
  6. for (int j=0;j<10;j++){
  7. for (int k=0;k<10;k++){
  8. if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
  9. printf("%d\n",i*100+j*10+k);
  10. }
  11. }
  12. }
  13. return 0;
  14. }
  15. 方法二:
  16. #include <stdio.h>
  17. int main()
  18. {
  19. int i,j,k,n;
  20. printf("'water flower'number is:");
  21.  for(n=100;n<1000;n++)
  22.  {
  23.   i=n/100;/*分解出百位*/
  24.   j=n/10%10;/*分解出十位*/
  25.   k=n%10;/*分解出个位*/
  26.   if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
  27.    {
  28.    printf("%-5d",n);
  29.    }
  30.  }
  31. printf("\n");
  32. }

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

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

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

3、斐波那契数列

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

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[])
  3. {
  4. int arr[15];
  5. arr[0]=1;
  6. arr[1]=1;
  7. for(int i=2;i<15;i++)
  8. {
  9. arr[i]=arr[i-2]+arr[i-1];
  10. }
  11. for(int i=0;i<15;i++){
  12. printf("%d、",arr[i]);
  13. }
  14. printf("\n");
  15. return 0;
  16. }

4、杨辉三角

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

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[])
  3. {
  4. int a[15][15]={{0}};
  5. int i,j;
  6. for(i=0;i<15;i++)
  7. {
  8. a[i][0]=1;
  9. for(j=1;j<=i;j++)
  10. a[i][j]=a[i-1][j-1]+a[i-1][j];
  11. }
  12. for(i=0;i<15;i++){
  13. for(j=0;j<=i;j++)
  14. printf("%8d",a[i][j]);
  15. printf("\n");
  16. }
  17. return 0;
  18. }

5、猴子吃桃子


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

  1. #include <stdio.h>
  2. int tao(int n);
  3. int main(int argc, const char *argv[])
  4. {
  5. printf("%d\n",tao(10));
  6. return 0;
  7. }
  8. int tao(int n){
  9. if(n==1){
  10. return 1;
  11. }
  12. return (tao(n-1)+1)*2;
  13. }

6、编写一个时钟

  1. #include <unistd.h>
  2. int main(int argc, const char *argv[])
  3. {
  4. int year,month,day, hour,min,sec;
  5. scanf("%d %d %d %d %d %d",&year,&month,&day,&hour,&min,&sec);
  6. while(1){
  7. sleep(1);
  8. if(sec<59){
  9. sec++;}
  10. else if(min<59){
  11. min++;
  12. sec=00;}
  13. else if(hour<23){
  14. hour++;
  15. min=0;
  16. sec=0;
  17. }else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<31){
  18. day++;
  19. hour=00;
  20. min=00;
  21. sec=00;
  22. }
  23. else if(month==02&&day<28){
  24. day++;
  25. hour=00;
  26. min=00;
  27. sec=00;
  28. }
  29. else if((month==4||month==6||month==9||month==11)&&day<30){
  30. day++;
  31. hour=00;
  32. min=00;
  33. sec=00;
  34. }
  35. else if(month<12){
  36. month++;
  37. day=01;
  38. hour=00;
  39. min=00;
  40. sec=00;
  41. }else {
  42. year++;
  43. month=01;
  44. day=01;
  45. hour=00;
  46. min=00;
  47. sec=00;
  48. }
  49. printf("%02d:%02d:%02d:%02d:%02d:%02d\r",year,month,day,hour,min,sec);
  50. fflush(stdout);
  51. }
  52. return 0;
  53. }

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


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

  1. #include <stdio.h>
  2. int func(char a,char *b);
  3. int main(int argc, const char *argv[])
  4. {
  5. char c;
  6. char s[30]={0};
  7. printf("Please input char:\n");
  8. scanf("%c",&c);
  9. getchar();
  10. printf("Please input string:\n");
  11. gets(s);
  12. func(c,s);
  13. return 0;
  14. }
  15. int func(char a,char *b){
  16. int i=0;
  17. while(*b){
  18. if(a==*b){
  19. i++;
  20. }
  21. *b++;
  22. }
  23. printf("%d\n",i);
  24. }

8、逆序输出

  1. 一、逆序输出字符串
  2. #include <stdio.h>
  3. int main(int argc, const char *argv[])
  4. {
  5. int arr[10];
  6. for(int i=0;i<10;i++){
  7. scanf("%d",&arr[i]);
  8. }
  9. printf("逆序输出为");
  10. int n, i;
  11. n=sizeof(arr)/sizeof(int);
  12. for(i=n-1;i>=0;i--)
  13. printf("%d\t",arr[i]);
  14. putchar('\n');
  15. return 0;
  16. }
  17. 二、逆序输出数组中的数据
  18. #include <stdio.h>
  19. int main(int argc, const char *argv[])
  20. {
  21. int a[]={1,2,3,4,5,6};
  22. int *p,*q,n,i,temp;
  23. n=sizeof(a)/sizeof(int);
  24. p=a;
  25. q=&a[n-1];
  26. while(p<q){
  27. temp=*p;
  28. *p=*q;
  29. *q=temp;
  30. p++;
  31. q--;
  32. }
  33. for (i=0;i<n;i++){
  34. printf("%d\n",a[i]);
  35. }
  36. return 0;
  37. }

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

  1. #include <stdio.h>
  2. #include<string.h>
  3. int main(int argc, const char *argv[])
  4. {
  5. char s[100];
  6. printf("input:");
  7. gets(s);
  8. int n=strlen(s);
  9. for(int i=0;i<n;i++){
  10. int k=i+1;
  11. for(int j=i+1;j<n;j++){
  12. if (s[j]!=s[i])
  13. s[k++]=s[j];
  14. }
  15. s[k]='\0';
  16. }
  17. puts(s);
  18. return 0;
  19. }

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

  1. #include <stdio.h>
  2. char *strcat(char *a,char *b);
  3. int main(int argc, const char *argv[])
  4. {
  5. char a[50]="hello";
  6. char b[]="word";
  7. puts(strcat(a,b));
  8. return 0;
  9. }
  10. char *strcat(char *a,char *b){
  11. char *c=a;
  12. while(*a){
  13. a++;
  14. }
  15. while(*b){
  16. *a=*b;
  17. a++;
  18. b++;
  19. }
  20. *a='\0';
  21. return c;
  22. }

11、删除字符串中的空格

  1. #include <stdio.h>
  2. #include <string.h>
  3. void del_space(char *s1);
  4. int main(int argc, const char *argv[])
  5. {
  6. char s[]="a d gg sd ";
  7. puts(s);
  8. del_space(s);
  9. puts(s);
  10. return 0;
  11. }
  12. void del_space(char *s1)
  13. {
  14. char *s2;
  15. s2=s1;
  16. while(*s1){
  17. if(*s1==' ')
  18. {
  19. s1++;
  20. }else{
  21. *s2=*s1;
  22. s1++;
  23. s2++;
  24. }
  25. }
  26. *s2='\0';
  27. }

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

 

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[]){
  3. char s[100];
  4. int i=0;
  5. int j=0;
  6. int sum=0;
  7. gets(s);
  8. //puts(s);
  9. while(s[i]!='\0'){
  10. if('0'<=s[i]&&s[i]<='9'){
  11. j++;
  12. sum+=(s[i]-'0');
  13. }
  14. i++;
  15. }
  16. printf("字符串中数字字符的个数为:%d\n",j);
  17. printf("字符串中数字字符求和为:%d\n",sum);
  18. return 0;
  19. }

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

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

14、冒泡排序

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[])
  3. {
  4. int i,j,temp;
  5. int arr[5]={0};
  6. printf("input:");
  7. for(i=0;i<5;i++){
  8. scanf("%d",&arr[i]);
  9. }
  10. for(i=0;i<4;i++){
  11. for (j=0;j<4-i;j++){
  12. if(arr[j]>arr[j+1]){
  13. temp=arr[j];
  14. arr[j]=arr[j+1];
  15. arr[j+1]=temp;
  16. }
  17. }
  18. }
  19. printf("排序后为:");
  20. for(i=0;i<5;i++){
  21. printf("%d ",arr[i]);
  22. }
  23. putchar(10);
  24. return 0;
  25. }

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

  1. #include <stdio.h>
  2. void swap(int *x, int *y);
  3. int main(int argc, const char *argv[])
  4. {
  5. int a;
  6. int b;
  7. scanf("%d",&a);
  8. scanf("%d",&b);
  9. swap(&a,&b);
  10. printf("%d\n",a);
  11. printf("%d\n",b);
  12. return 0;
  13. }
  14. void swap(int *x, int *y){
  15. int temp;
  16. temp=*x;
  17. *x=*y;
  18. *y=temp;
  19. }

16、简易超市结账系统

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[])
  3. { int n;
  4. double m;
  5. printf("***********************************************\n");
  6. printf("欢迎你来给我送钱,请按以下步骤进行送钱程序\n");
  7. printf("1、是尊贵会员请输入1以及消费金额\n");
  8. printf("2、不是尊贵会员请输入2以及消费金额\n");
  9. printf("***********************************************\n");
  10. scanf("%d %lf",&n,&m);
  11. if(n=1){
  12. if(m<100){
  13. printf("money is %lf\n",m*0.99);
  14. }else if(m<200){
  15. printf("money is %lf\n",m*0.95);
  16. }else if(m<300){
  17. printf("money is %lf\n",m*0.92);
  18. }else if(m<500){
  19. printf("money is %lf\n",m*0.88);
  20. }else{
  21. printf("money is %lf\n",m*0.8);
  22. }
  23. }else{
  24. if(m<100){
  25. printf("money is %lf\n",m);
  26. }else if(m<200){
  27. printf("money is %lf\n",m*0.98);
  28. }else if(m<300){
  29. printf("money is %lf\n",m*0.95);
  30. }else if(m<500){
  31. printf("money is %lf\n",m*0.9);
  32. }else{
  33. printf("money is %lf\n",m*0.88);
  34. }
  35. }
  36. return 0;
  37. }

17、完数

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

 

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[])
  3. {
  4. int i,j,sum;
  5. for (i=3;i<=1000;i++){
  6. sum=1;
  7. for (j=2;j<i;j++){
  8. if((i%j)==0)
  9. sum+=j;
  10. }
  11. if(sum==i)
  12. printf("%d\n",i);
  13. }
  14. return 0;
  15. }

18、简单选择排序

  1. #include <stdio.h>
  2. #define N 5
  3. int main(int argc, const char *argv[])
  4. {
  5. int i,j,k,temp;
  6. int num[N];
  7. printf("input num:",N);
  8. for(i=0;i<N;i++){
  9. scanf("%d",&num[i]);
  10. }
  11. for (i=0;i<N-1;i++){
  12. k=i;
  13. for(j=i+1;j<N;j++){
  14. if (num[j]<num[k]){
  15. k=j;
  16. }
  17. }
  18. if(k!=i){
  19. temp=num[i];
  20. num[i]=num[k];
  21. num[k]=temp;
  22. }
  23. }
  24. printf("output:\n");
  25. for(i=0;i<N;i++){
  26. printf("%d",num[i]);
  27. }
  28. putchar(10);
  29. return 0;
  30. }

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

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[])
  3. {printf("please input two string and n:\n");
  4. char a[100];
  5. gets(a);
  6. char b[100];
  7. gets(b);
  8. int n;
  9. scanf("%d",&n);
  10. char *p=a;
  11. char *q=b;
  12. int i=0;
  13. while(*q&&i<n){
  14. *p=*q;
  15. i++;
  16. p++;
  17. q++;
  18. }
  19. printf("strncpy:\n");
  20. puts(a);
  21. return 0;
  22. }

20、实现strcmp的功能

  1. #include <stdio.h>
  2. int main(int argc, const char *argv[])
  3. {
  4. printf("please input two string :\n");
  5. char a[100];
  6. gets(a);
  7. char b[100];
  8. gets(b);
  9. char *p=a;
  10. char *q=b;
  11. while (*p&&*q){
  12. if(*p<*q){
  13. printf("-1\n");
  14. return 0;
  15. }else if(*p>*q){
  16. printf("1\n");
  17. return 0;
  18. }else{
  19. p++;
  20. q++;
  21. if((*p=='\0')&&(*q=='\0')){
  22. printf("0\n");
  23. return 0;
  24. }
  25. }
  26. }
  27. if(*p){
  28. printf("1");
  29. }else{
  30. printf("-1");
  31. }
  32. return 0;
  33. }

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

  1. 方式一(最后添加'\0'):
  2. #include <stdio.h>
  3. #include<string.h>
  4. void mystrcat(char *x,char *y);
  5. int main(int argc, const char *argv[])
  6. {
  7. char a[100];
  8. char b[100];
  9. gets(a);
  10. gets(b);
  11. mystrcat(a,b);
  12. puts(a);
  13. return 0;
  14. }
  15. void mystrcat(char *x,char *y){
  16. x=x+strlen(x);
  17. while(*y){
  18. *x=*y;
  19. x++;
  20. y++;
  21. }
  22. *x='\0';
  23. }
  24. 方式二(初始化数组'\0'):
  25. #include <stdio.h>
  26. #include<string.h>
  27. void mystrcat(char *x,char *y);
  28. int main(int argc, const char *argv[])
  29. {
  30. char a[100]={0};
  31. char b[100]={0};
  32. gets(a);
  33. gets(b);
  34. mystrcat(a,b);
  35. puts(a);
  36. return 0;
  37. }
  38. void mystrcat(char *x,char *y){
  39. x=x+strlen(x);
  40. while(*y){
  41. *x=*y;
  42. x++;
  43. y++;
  44. }
  45. //*x='\0';
  46. }
  47. 方式二(定义全局变量'\0'):
  48. #include <stdio.h>
  49. #include<string.h>
  50. void mystrcat(char *x,char *y);
  51. char a[100];
  52. char b[100];
  53. int main(int argc, const char *argv[])
  54. {
  55. gets(a);
  56. gets(b);
  57. mystrcat(a,b);
  58. puts(a);
  59. return 0;
  60. }
  61. void mystrcat(char *x,char *y){
  62. x=x+strlen(x);
  63. while(*y){
  64. *x=*y;
  65. x++;
  66. y++;
  67. }
  68. //*x='\0';
  69. }

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

  1. #include <stdio.h> //编译时加-lm
  2. #include <math.h>
  3. int main(int argc, const char *argv[])
  4. {
  5. double area;
  6. double a,b,c,s,n;
  7. printf("请输入三角形的三边长\n");
  8. scanf("%lf",&a);
  9. scanf("%lf",&b);
  10. scanf("%lf",&c);
  11. if((a+b)>c&&(a+c)>b&&(b+c)>a){
  12. s=1.0/2*(a+b+c);
  13. area=sqrt(s*(s-a)*b*c);
  14. printf("%lf",area);
  15. putchar('\n');
  16. } else{
  17. printf("erro");
  18. putchar('\n');
  19. }
  20. return 0;
  21. }

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

  1. #include <stdio.h>
  2. char *zhuan(char *p,int n);
  3. int main(int argc, const char *argv[])
  4. {char s[50],*r;
  5. int n;
  6. printf("请输入要转换为字符串的整数\n");
  7. scanf("%d",&n);
  8. r=zhuan(s,n);
  9. puts(r);
  10. puts(s);
  11. return 0;
  12. }
  13. char *zhuan(char *p,int n){
  14. int r,i=0,j;
  15. while(n){
  16. r=n%10;
  17. n=n/10;
  18. p[i]=r+'0';
  19. i++;
  20. }
  21. p[i]='\0';
  22. j=i-1;
  23. i=0;
  24. while(i<j){
  25. r=p[i];
  26. p[i]=p[j];
  27. p[j]=r;
  28. i++;
  29. j--;
  30. }
  31. return p;
  32. }

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

  1. #include <stdio.h>
  2. typedef struct
  3. {
  4. int ID;
  5. char Brand[10];
  6. char Model[20];
  7. char CPU[20];
  8. float Price;
  9. }PH;
  10. void ui();
  11. void input(PH ph[],int a);
  12. void output(PH ph[],int a);
  13. void selec(PH *p);
  14. int num;
  15. int main(int argc, const char *argv[])
  16. {
  17. while(1){
  18. sleep(1);
  19. ui();
  20. int s;
  21. PH ph[10];
  22. PH *p=ph;
  23. printf("please selec:\n");
  24. scanf("%d",&s);
  25. switch(s)
  26. {
  27. case 1: input(ph,s);break;
  28. case 2: output(ph,s);break;
  29. case 3: return 0;
  30. case 4:selec(p);break;
  31. default:
  32. puts("xia hu shu");
  33. }
  34. while(getchar()!='\n');
  35. }
  36. return 0;
  37. }
  38. void input(PH ph[],int a){
  39. int n=0;
  40. printf("please input iphone num:\n");
  41. scanf("%d",&n);
  42. printf("ID\tBrand\tModel\tCPU\tPrice\n");
  43. for(int i=num;i<num+n;i++){
  44. scanf("%d %s %s %s %f",&ph[i].ID,ph[i].Brand,ph[i].Model,ph[i].CPU,&ph[i].Price);
  45. }
  46. puts("input success");
  47. num=num+n;
  48. }
  49. void output(PH ph[],int a){
  50. printf("ID\tBrand\tModel\tCPU\tPrice\n");
  51. for(int i=0;i<num;i++){
  52. 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);
  53. }
  54. }
  55. void ui(){
  56. puts("*************************************");
  57. puts("****iphone management systerm********");
  58. puts("*************1、input****************");
  59. puts("*************2、output***************");
  60. puts("*************3、exit*****************");
  61. puts("*************4、selec*****************");
  62. puts("*************************************");
  63. }
  64. void selec(PH *p){
  65. float min,max;
  66. printf("please input max:\n");
  67. scanf("%f",&max);
  68. printf("please input min:\n");
  69. scanf("%f",&min);
  70. puts("the iphone in this rage have:i\n");
  71. for (int i=0;i<num;i++){
  72. if((p+i)->Price>=min&&(p+i)->Price<=max){
  73. printf("%d\n",(p+i)->ID);
  74. }else{
  75. printf("sorry,no phone");
  76. }
  77. }
  78. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/756927
推荐阅读
相关标签
  

闽ICP备14008679号