永发信息网

c语言 帮忙看下这个程序

答案:5  悬赏:80  手机版
解决时间 2021-07-21 10:41
  • 提问者网友:回忆在搜索
  • 2021-07-20 10:30

题目

求n!再求n!从n-1到10的和

我的程序如下:
#include "stdio.h"
void main()
{
int n,m,s;
scanf("%d",&n);
while(n>=1)
{
m=m*n;
n--;
}
while(n<=10)
{s=s+m;
n++;}

printf("s=%d\n",s);
}

最佳答案
  • 五星知识达人网友:长青诗
  • 2021-07-20 11:29
引用头文件应该用尖括号,不是引号, 还有 m 没有初始化
全部回答
  • 1楼网友:猎心人
  • 2021-07-20 13:58


#include "stdio.h" void main() { int n,m,s,i=1;

m=1,s=0; scanf("%d",&n);

whiile(n-1<=10)

{

while(i<=n-1)

{

m=m*i;i++;}

s=s+m;n++;

}

printf(“%d”,s); return 0;

}

  • 2楼网友:从此江山别
  • 2021-07-20 13:48

#include "stdio.h" void main() { int n,m,s; scanf("%d",&n);

m=1;

s=0; while(n>=1) { m=m*n; n--; if(n>=10)

s=s+n; } printf("m=%d\n",m);

printf("s=%d\n",s); }

你的程序有几个问题,首先求阶乘时,m应先初始化为1,否则不能正确求得阶乘的值。

第二,你10到n的和,和s没有初始化为零,而且你的循环条件也有问题。像你上面和程序,执行完

while(n>=1) { m=m*n; n--; } 时,n为0了,下面的循环不会执行,所以应该把循环放在上一个循环中,就OK了。

  • 3楼网友:春色三分
  • 2021-07-20 13:01
m要初始化为1 还有 while(n<=10) {s=s+m; n++;} 这个的时候 n已经变成1了 所以要用一个值记录最原始的n值 不过要注意了 这样的话 你输入的值必须是大于10的
  • 4楼网友:低血压的长颈鹿
  • 2021-07-20 12:23
#include "stdio.h" void main() { int n,m,s; scanf("%d",&n); m = 1; while(n>=1) { m=m*n; n--; } s = 0; while(--m >= 10) {s=s+m;} printf("s=%d\n",s); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯