A. 哪位大神看一下這個小程序哪錯了啊(C語言求n的階乘)
你的循環計算部分先於n的讀入了,應該在讀入n之後再開始計算。
修改一下順序,改成
#include<stdio.h>
void main()
{int a,b,n;
printf("please put the value of n\n");
scanf("%d",&n);
for(a=1,b=1;a<=n;a++)
b*=a;
printf("n!=%d",b);
}
即可。
希望有用。
B. c語言,這個算n!階乘的程序那裡錯了呢求解 謝謝
樓主的演算法是求1!+2!+……n!的累加和
測試結果:
n=5
1!=1
2!=2
3!=6
4!=24
5!=120
1!+2!+……+n!=153
測試代碼:
#include<stdio.h>
#include "conio.h"
main()
{
long fact,sum;
int i,j,n;
printf("n=");
scanf("%d",&n);
for(j=1,sum=0;j<=n;j++)
{
for(i=1,fact=1;i<=j;i++)
fact=fact*i;
printf("%d!=%d\n",j,fact);
sum=fact+sum;
}
printf("1!+2!+¡¡+n!=%.0ld\n",sum);
getch();
}
你的代碼沒有問題。只是求的階乘的累加和。中間的for是求j的階乘的。外層for是用來算累加和的。
C. 關於C語言求階乘問題。這個程序為什麼錯了
#include<stdio.h>
void main()
{
int i,j;
int s=0,k=1;
for(i=2;i<=8;i=i+2)
{
/*
* 每一輪循環需要把K重新賦為1
*/
k = 1;
for(j=1;j<=i;j++)
k=k*j;
s=s+k;
}
printf("the result is %d\n",s);
}
D. 誰幫我看看這個C語言程序哪裡有錯誤題目:用遞歸調用編寫計算階乘n!的函數fact()。 求n!
return是函數返回值語句,作用是返回調用該函數地方。在函數體內應該只有一個return對應函數調用的位置,而且reutrn語句後面那()里應該是要返回的表達式而不是常量,你這有兩個return都是返回數值常量1從而導致錯誤
#include <stdio.h>
void main()
{ int m;
printf(「Enter a number: 」 );
scanf(「%d」, &m);
printf(「%d! = %d\n」, m, fact(m));
}
fact(int n)
{
int result; /*定義result*/
if(n==1||n==0) result=1;
else result = fact(n-1)*n; /* 遞歸調用 */
return (result); /*返回值為result*/
}
E. C語言求n的階乘,哪裡出錯了,求大佬指點
把F函數中的fact=fact*1;改為fact=fact*i;。
把主函數中的result=F(n)/F(m)*F(n-m);改為result=F(n)/F(m)/F(n-m);。
建議在主函數中的scanf("%d%d",&m,&n);後加一句if(m<0 || n<0 || m<n) return 0;,以便輸入錯誤時退出。
int F(int m);和int F(int n);沒有必要這樣寫,寫一行int F(int);就可以了。
F. 請C語言大神來看看我錯哪了 很簡單的程序 求n的階乘
for語句修改為:
for (b=2;b<a;b++)
for循環{}裡面的語句修改為:
a*=b;
這樣就正確了。
G. c語言程序問題,幫我看下這個任意數的階乘程序那裡有錯。我運行,輸入數後沒有結果,這是為啥
你好,原因是你在while語句後面多打了一個分號,使while進入了死循環,所以才沒有結果,如圖
H. c語言 計算n的階乘 這個程序錯在哪
額,容我敲敲代碼,你的錯誤在於n的重定義吧
#include<stdio.h>
int f(int n){
int answer=1;
for(int i=0;i<n;i++)
answer=(i+1)*answer;
return answer;
}
int main(){
int n=0;
printf("input a number!\n");
scanf("%d",&n);
printf("%d!=%d",n,f(n));
getchar();
getchar();
return 0;
}
I. 用C語言編寫程序,求n的階乘n!,並將 結果存放到f。哪裡寫錯了
代碼沒什麼問題
但是 由於int的范圍
你這個 最多隻能算到12!
再多 就會出錯了
如果要算更多
那麼 可以使用double來存儲 當然 列印的是近似值
J. C語言寫n的階乘出錯
越界了!將f的數據類型改為double可以計算更大的數字(但也不是無限的)
修改如下:
//---------------------------------------------------------------------------
#include <stdio.h>
double fac(int n)
{
double f;
if(n < 0)
printf("n < 0, error!");
else
if(n == 0 || n == 1)
f = 1;
else
f = fac(n - 1) * n;
return f;
}
void main()
{
int n;
double f;
printf("input a integer:");
scanf("%d", &n);
f = fac(n);
printf("%d!=%lf\n", n, f);
}
//---------------------------------------------------------------------------