用C语言写一下这个程序试下
- 提问者网友:却不属于对方
- 2021-01-29 14:34
一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。
例如,145=1!+4!+5!,则145是一个三位阶乘和数。
请问:共有多少个阶乘和数?
输入
输出
所有的阶乘和数(按字典序,即1打头的在前,2打头的次之,..., 空格分隔,含末尾空格)
1 145 2 ?????
样例输入
样例输出
提示
提示:8*9!=8*362880<10000000
- 五星知识达人网友:酒安江南
- 2021-01-29 16:02
- 1楼网友:西风乍起
- 2021-01-29 16:27
下面是修改的程序,有些地方输出格式稍作修改。
#include<stdio.h>
void selection(double*p) ;
int main() { int i,j ; double a[10],max,min,sum=0,ave=0; //赋初值 double *p=a ; printf("请输入你想要输入的10个数\n"); for(i=0;i<10;i++) { scanf("%lf",&a[i]); //用&a[i] } for(i=0;i<10;i++) { printf("地址:%x 值:%lf\n",p,*p); //不用*p+1 p++; } p=a; max=min=*p; for(i=1;i<10;i++) { if(*(p+i)>max) max=*(p+i); if(*(p+i)<min) min=*(p+i); } printf("最大的数是: %lf\n最小的数是: %lf\n",max,min); for(i=0;i<10;i++) sum+=a[i]; ave=sum*1.0/10; //要输出浮点型的要乘以1.0 printf("平均数是: %lf\n",ave); selection(a); printf("\n降序排列后,数组为:\n"); for (i=0;i<10;i++) //这个应该是排序输出吧,我对输出做了修改 { printf("%.5lf ",a[i]); //输出5为位小数用 .5lf } return 0; } void selection(double*p) { double temp,noswap; int i,j; for( i=0;i<9;i++) { noswap=1; for( j=9;j>i;j--) { if(p[j]>p[j-1]) { temp=p[j-1]; p[j-1]=p[j]; p[j]=temp; noswap=0; } } if(noswap==1) return; } }