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");}}}