永发信息网

用C语言写一下这个程序试下

答案:2  悬赏:70  手机版
解决时间 2021-01-30 02:55
  • 提问者网友:却不属于对方
  • 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
假定你的c程序名字叫test.c 第一步:编辑,用linux最广泛使用的vi编辑器为例,shell下运行vi test.c进入vi编辑器环境,默认为命令模式,按i或I 或A进入插入模式,这样你可以输入c源程序。输入完毕,检查后按Esc键返回命令模式,再按 shift +
全部回答
  • 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;  } }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯