
maintainer:小支
一、数位分离 1、水仙花数(153):水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身#include2、同构数:正整数n若是它平方数的尾部,则称n为同构数。例如:5的平方数是25int main() { int i=0,g=0,s=0,b=0; for(i=100;i<1000;i++) { g=i%10; s=i/10%10; b=i/100; if(g*g*g+s*s*s+b*b*b==i) printf("%dn",i); } return 0; }
#include3、各位数加起来和为7int main() { int i=0,g=0; for(i=1;i<100;i++) { g=i%10; if(g*g==i) printf("%dn",i); } return 0; }
#include4、输出能被3整除且个位数为6的数int main() { int i=0,g=0,s=0,b=0; for(i=100;i<1000;i++) { g=i%10; s=i/10%10; b=i/100; if(g+s+b==7) printf("%dn",i); } return 0; }
#include5、完数:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数int main() { int i=0,t=0; for(i=0;i<10;i++) { t=i*10+6; if(t%3==0) printf("%dn",t); } return 0; }
#includeint main() { int i=0,j=0,s=0; for(i=1;i<=1000;i++) { s=0; for(j=1;j 6、设计一个程序可以实现以下功能:寻找以下特征的四位正整数,其百位数为0,去掉百位数0可得到一个三位正整数,而该三位正整数乘以9等于原四位正整数。如6075=675*9。 #include7、回文数int main() { int i=0,t=0; for(i=1000;i<10000;i++) { if(i/100%10!=0) continue; t=i/1000*100+i%100; if(t*9==i) printf("%dn",i); } return 0; } #include8、"-1234"到数字-1234int main() { int i=0,t=0,n=0; scanf("%d",&i); t=i; do { n=n*10+t%10; t/=10; }while(t); if(n==i) printf("是回文"); return 0; } #include二、求和 1、1+1+2+1+2+3+1+2+3+4…+1+2+3+4+…+100int main() { char s[]="-1234",*p=s; int flag=0,num=0; if(*p=='-') { p++;flag=1; } while(*p!=' ') { num=num*10+*p-'0'; p++; } if(flag) num=-num; printf("%d",num); return 0; } #include2、1+12+123+…+123456789int main() { int i=0,j=0,sum=0; for(i=1;i<=100;i++) { for(j=1;j<=i;j++) sum+=j; } printf("%d",sum); return 0; } #include3、1+22+33+…+999999999int main() { int i=0; long j=1,sum=0; for(i=1;i<=9;i++) { sum+=j; j=j*10+(i+1); } printf("%ld",sum); return 0; } #include4、6+66+666+…+666666666int main() { long i=0,j=0,t=0,sum=0; for(i=1;i<=9;i++) { t=0; for(j=1;j<=i;j++) t=t*10+i; sum+=t; } printf("%ld",sum); return 0; } #include5、1*2+2*3+3*4+…+20*21int main() { long i=0,t=0,sum=0; for(i=1;i<=9;i++) { t=t*10+6; sum+=t; } printf("%ld",sum); return 0; } #include6、1/2+2/3+3/4…9/10int main() { int i=0,sum=0; for(i=1;i<=20;i++) sum+=i*(i+1); printf("%d",sum); return 0; } #include7、1-100的和int main() { float i=0.0,sum=0.0; for(i=1.0;i<=9;i++) sum+=i/(i+1); printf("%f",sum); return 0; } #include三、统计 1、统计’a’-'z’出现的次数int main() { printf("%d",100*(1+100)/2); //5050 return 0; } #include2、统计年龄在16-31岁的人数int main() { char s[100]; int i=0,count=0; gets(s); while(s[i]!=' ') { if(s[i]>='a'&&s[i]<='z') count++; i++; } printf("%d",count); return 0; } #include3、统计分数在80-90分的人数int main() { int a[16]={0},n=0,i=0,t=0; printf("请输入要输入的学生的个数:"); scanf("%d",&n); for(i=0;i scanf("%d",&t); if(t>=16&&t<=31) a[t-16]++; } for(i=0;i<16;i++) printf("%d岁的人数:%dn",i+16,a[i]); return 0; } #include四、数组 1、逆序存放int main() { int a[11]={0},n=0,i=0,t=0; printf("请输入要输入的学生的个数:"); scanf("%d",&n); for(i=0;i scanf("%d",&t); if(t>=80&&t<=90) a[t-80]++; } for(i=0;i<11;i++) printf("%d分的人数:%dn",i+80,a[i]); return 0; } #include2、简单排序int main() { char s[]="hello",t=0,*p=s,*q=s+sizeof(s)-2; while(p t=*p; *p++=*q; *q--=t; } puts(s); return 0; }#include3、选择排序int main() { int a[10]={8,5,9,2,3,4,6,8,4,0},i=0,j=0,t=0; for(i=0;i<10-1;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } #include4、冒泡排序int main() { int a[10]={8,5,9,2,3,4,6,8,4,0},i=0,j=0,t=0,flag=0; for(i=0;i<10-1;i++) { flag=i; for(j=i+1;j<10;j++) if(a[flag]>a[j]) flag=j; if(flag!=i) { t=a[i]; a[i]=a[flag]; a[flag]=t; } } for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } #include5、行列元素互换int main() { int a[10]={8,5,9,2,3,4,6,8,4,0},i=0,j=0,t=0; for(i=0;i<10-1;i++) for(j=0;j<10-i-1;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } #include6、标记(例:将字符串的数字标记为T,字母标记为F)int main() { int a[3][3]={8,5,9,2,9,0,4,6,7},i=0,j=0,t=0; for(i=0;i<3;i++) for(j=i;j<3;j++) { t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("n"); } return 0; } #includeint main() { char s[]="12 xiaopeng yyds",a[100]; int i=0; for(i=0;i if(s[i]>='0'&&s[i]<='9') a[i]='T'; else if(s[i]>='a'&&s[i]<='z'&&s[i]>='A'&&s[i]<='Z') a[i]='F'; } for(i=0;i 7、数组左移、右移 #include8、n 个学生的信息(包括学生的姓名、m门的成绩、住址)存储在一个结构体 数组 s 中,现需设计一个函数,统计学生各科成绩平均分的总和,并通过函数返回。int main() { char s[]="123456",*p=s,*q=s+sizeof(s)-2,t=0; t=*p; while(p *p=*(p+1); p++; } *q=t; puts(s); //234561 return 0; }#include9、判断二维数组是否为对称数组struct STU{ char name[20]; float score[10]; char address[20]; }; double avg_fun(struct STU s[],int n,int m) //n名学生 m科成绩 { int i=0,j=0; double avg=0.0,sum=0.0; for(i=0;i for(j=0;j scanf("%f",&s[i].score[j]); avg+= s[i].score[j]/n; } sum+=avg;avg=0.0; } return sum; } int main() { struct STU s[100]; double avg=0.0; avg=avg_fun(s,3,3); printf("%lf",avg); return 0; } #include10、二维数组最大值及下标int main() { int a[3][3]={8,5,9,2,9,0,4,6,7},i=0,j=0,flag=1; for(i=0;i<3;i++) for(j=i;j<3;j++) if(a[i][j]!=a[j][i]) { flag=0; break; } if(flag) printf("是对称数组"); else printf("不是对称数组"); return 0; } #include11、杨辉三角int main() { int a[3][3]={59,100,9,5,4,3,600,11,15}; int i=0,j=0,imax=0,jmax=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(a[i][j]>a[imax][jmax]) { imax=i; jmax=j; } printf("max=%d,行下标:%d,列下标:%d",a[imax][jmax],imax,jmax); return 0; } #include12、二维数组存放在一维数组里int main() { int a[10][10]={0},i=0,j=0; for(i=0;i<10;i++) a[i][0]=a[i][i]=1; for(i=2;i<10;i++) for(j=1;j for(j=0;j<=i;j++) { printf("%d ",a[i][j]); } putchar('n'); } return 0; } #include五、字符数组 1、基本:输入输出int main() { int a[3][3]={59,100,9,5,4,3,600,11,15}; int b[9],i=0,j=0,k=0; for(i=0;i<3;i++) for(j=0;j<3;j++) b[k++]=a[i][j]; for(k=0;k<9;k++) printf("%d ",b[k]); return 0; } #include2、字符串连接int main() { char s1[10],s2[10]; scanf("%s",s1); printf("%sn",s1); return 0; } #include int main() { char s1[10],s2[10]; gets(s2); puts(s2); return 0; } #include3、字符串复制void my_strcat(char *s1,char *s2) { while(*s1!=' ') s1++; while(*s2!=' ') *s1++=*s2++; *s1=' '; } int main() { char str1[50]="xiaopeng",str2[10]="yyds"; my_strcat(str1,str2); puts(str1); //xiaopengyyds return 0; } #include4、字符串比较void my_strcpy(char *s1,char *s2) { while(*s2!=' ') *s1++=*s2++; *s1=' '; } int main() { char str1[50]="xiaopeng",str2[10]="yyds"; my_strcpy(str1,str2); puts(str1); //yyds return 0; } #include5、字符串有效长度int my_strcmp(char *s1,char *s2) { while(*s1!=' '&&*s2!=' ') if(*s1++!=*s2++) return *(s1-1)-*(s2-1); return 0; } int main() { char str1[50]="xiaopeng",str2[10]="yyds",result=0; result=my_strcmp(str1,str2); printf("%d",result); //-1 return 0; } #include6、统计某类字符、删除某类字符(删除数字)int my_strlen(char *s1) { int count=0; while(*s1++!=' ') count++; return count; } int main() { char str1[50]="xiaopeng",result=0; result=my_strlen(str1); printf("%d",result); //8 return 0; } #include7、回文字符串int main() { char str1[50]="xia4345openg564365 yyds",*p,*q; for(p=q=str1;*p!=' ';p++) if(*p<'0'||*p>'9') *q++=*p; *q=' '; puts(str1); //xiaopeng yyds return 0; } #include8、重点:子串在主串中出现的次数int main() { char str1[50]="xia4345openg564365 yyds",*p=str1,*q=str1; int flag=1; while(*q!=' ') q++; q--; while(p flag=0;break; } if(flag) printf("是回文字符串"); else printf("不是回文字符串"); return 0; }#include9、请设计一个程序,其功能为:自左至右取出非空字符串a中的所有数字字符,将这些数字字符组成一个十进制整数并输出,并输出取出所有数字字符后的其他字符。例如:字符串a为"ch20an4gch12un 2ro3ad",程序输出:“2041223"和"changchun road”int main() { char str1[50]="abnbcababaabaab",str2[]="ab"; char *p,*t1,*t2; int count=0; for(p=str1;*p!=' ';p++) { for(t1=p,t2=str2;*t2!=' ';t1++,t2++) if(*t1!=*t2) break; if(*t2==' ') count++; } printf("%d",count); //5 return 0; } #include六、函数 1、编写自定义函数 (1)编写函数让三个数从大到小输出(关键:地址传递)int main() { char str1[50]="xia4345openg565 yyds",*p,*q; int a=0; for(p=str1,q=str1;*p!=' ';p++) if(*p>='0'&&*p<='9') a=a*10+*p-'0'; else *q++=*p; *q=' '; //xiaopeng yyds puts(str1); printf("%d",a); //4345565 return 0; } #include(2)编写函数对数组进行排序(关键:实参:数组名和长度)void my_sort(int *a,int *b,int *c) { int t=0; if(*a<*b) {t=*a;*a=*b;*b=t;} if(*a<*c) {t=*a;*a=*c;*c=t;} if(*b<*c) {t=*b;*b=*c;*c=t;} } int main() { int a=10,b=30,c=20; my_sort(&a,&b,&c); printf("%d %d %d",a,b,c); return 0; } #includevoid my_sort(int a[],int n) { int i=0,j=0,t=0; for(i=0;i a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t; } } int main() { int a[50],n=0,i=0; scanf("%d",&n); for(i=0;i (3)编写一个函数判断对称数组 #includeint dc(int n) { int i=0,j=0,flag=1; for(i=0;i (4)编写一个函数求主串中子串的个数 #include2、递归函数 (1)递归求阶乘和int Fun(char *s1,char *s2) { int count=0; char *t1,*t2; while(*s1) { for(t1=s1,t2=s2;*t2!=' ';t1++,t2++) if(*t1!=*t2) break; if(*t2==' ') count++; s1++; } return count; } int main() { printf("%d",Fun("abababbbab","bab")); //3 return 0; } #include(2)递归求平方和long Fun(int n) { return n==1?1:n*Fun(n-1); } int main() { int a=0; long sum=0; scanf("%d",&a); for(int i=1;i<=a;i++) sum+=Fun(i); printf("%ld",sum); return 0; } #include(3)递归求x的n次方double Fun(int n) { return n==1?1:n*n+Fun(n-1); } int main() { printf("%.2lf",Fun(2)); return 0; } #include(4)递归求斐波那契数列前n项double Fun(int x,int n) { return n==0?1:x*Fun(x,n-1); } int main() { printf("%.2lf",Fun(2,2)); return 0; } #include(5)递归求杨辉三角前n行int Fun(int n) { return n==1||n==2?1:Fun(n-1)+Fun(n-2); } int main() { int n=0; scanf("%d",&n); for(int i=1;i<=n;i++) printf("%d ",Fun(i)); return 0; } #include(6)递归求最大公约数int Fun(int i,int j) { return i==j||j==1?1:Fun(i-1,j-1)+Fun(i-1,j); } int main() { int n=0; scanf("%d",&n); for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) printf("%d ",Fun(i,j)); putchar('n'); } return 0; } #include七、结构体 1、结构体求平均成绩int Fun(int a,int b) { int t=0; if(a t=a;a=b;b=t; } return a%b?Fun(b,a%b):b; } int main() { int a=0,b=0; scanf("%d %d",&a,&b); printf("%d",Fun(a,b)); return 0; } #include2、结构体按某成员进行排序struct stu{ char name[20]; double score; }; int main() { struct stu a[30]; int n=0,i=0; double avg=0.0; scanf("%d",&n); for(i=0;i gets(a[i].name); scanf("%lf",&a[i].score); avg+=a[i].score/n; } printf("%lf",avg); return 0; } #includestruct stu{ char name[20]; int id; double score; }; int main() { struct stu a[30],t=0; int n=0,i=0,j=0; scanf("%d",&n); for(i=0;i gets(a[i].name); scanf("%d%lf",&a[i].id,&a[i].score); } for(i=0;i a[j].id) { t=a[i];a[i]=a[j];a[j]=t; } for(i=0;i 3、结构体求最高分并输出该学生的所有信息 #include八、其他 1、可逆素数struct stu{ char name[20]; int id; double score; }; int main() { struct stu a[30],t; int n=0,i=0,imax=0; double max=0.0; scanf("%d",&n); for(i=0;i gets(a[i].name); scanf("%d%lf",&a[i].id,&a[i].score); if(a[i].score>max) { max=a[i].score; imax=i; } } printf("%st%dt%lfn",a[imax].name,a[imax].id,a[imax].score); return 0; } #include2、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列int convert(int a) { int t=0; do{ t=t*10+a%10; a/=10; }while(a); return t; } int issushu(int b) { for(int i=2;i int j=0; for(int i=m;i<=n;i++) if(issushu(i)&&issushu(convert(i))) c[j++]=i; return j; } int main() { int m=0,n=0,a[100],w=0; scanf("%d%d",&m,&n); w=Fun(m,n,a); for(int i=0;i printf("%d ",a[i]); if((i+1)%5==0) putchar('n'); } return 0; } #include3、分段函数(if语句)int main() { int a[10],b=0,i=0,*p=a; for(i=0;i<9;i++) scanf("%d",p++); scanf("%d",&b); p--; while(b<*p) *(p+1)=*p--; *(p+1)=b; for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } #include4、求e的近似值int main() { double y=0.0,x=0.0; scanf("%lf",&x); if(x<1) y=x; else if(x>=10) y=3*x-11; else y=2*x-1; printf("%.2lf",y); return 0; } #include5、九九乘法表double jc(int i) { return i==1?1:i*jc(i-1); } int main() { double e=1.0; int i=0,n=0; scanf("%d",&n); for(i=1;i<=n;i++) e+=1/jc(i); printf("%lf",e); return 0; } #include6、输出倒三角int main() { int i=0,j=0; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%d*%d=%dt",j,i,i*j); putchar('n'); } return 0; } #includeint main() { int i=0,j=0,t=0; for(i=0;i<4;i++) { for(t=0;t 7、猴子吃桃 #include8、温度转换int fun(int n) { return n==1?1:(fun(n-1)+1)*2; } int main() { printf("%d",fun(3)); //10 return 0; } #include9、计算物体自由下落的距离int main() { double hs=150; int c=0; c=5*(hs-32)/9; printf("%d",c); return 0; } #includeint main() { double h=0.0; h=10*3*3/2; printf("%lf",h); return 0; }