1樓:
這個程式是求一組數字的階乘,對於每個數的階乘,其計算過程是這樣的:
首先,給存放結果的變數s一個初始值1,s=1
第二,給控制變數k賦初值1,準備進行n階計算
第三,判斷控制變數k<=n?是則進入下步,不是則跳至第六步
第四,讓s儲存其與控制變數k的乘積,這樣,第一次s=1,k=1,第二次k=2,s=1*2=2
第三次k=3,s=2*3,......一直到n,這樣s裡就存了從1到n有乘積。
第五,控制變數正加1,即k=k+1,轉到第三步。
第六,輸出計算階乘的結果。
可以看出,對每個數的階乘,首先要令s有一個初始值,如果按你所說,將s的賦值操作放在外迴圈,那麼就無法使每次計算一個新的數階乘時讓s有一個初始值1.
事實上下面那處程式就是錯在這裡。由於在計算第一個數的階乘之後,s即將儲存上一個數的階乘的結果,作為始值參與到下一個數的階乘計算中來。
你看,正確: 錯誤:
1!=1 1!=1
2!=2 2!=2
3!=6 3!12 (因為初值為2,所以計算成2*1*2*3=12)
4!=24 4!=288(因為初值為12,所以計算為12*1*2*3*4=288
2樓:
不行的//如果放外面的話就會把上一次結果給統計進來了,所以就不對。
intmain()
return 0;}
3樓:匿名使用者
正確答案每次都for迴圈都將s置1,而你的s保留的是上次迴圈的結果,第一次迴圈:n=1,k=1,s=1,result=1第二次迴圈:n=2,第一次子迴圈s=1=s(1)*k(1);二次子迴圈:
s=2=s(1)*k(2);
第三次迴圈:n=3,第一次子迴圈s=2=s(2)*k(1);二次:s=4=s(2)*k(2);三次:s=12=s(4)*k(3);
第四次迴圈:這次s的初始值是12哦,有興趣自己推算吧!
.....
括號裡是該變數的值。
明白了吧!
4樓:
肯定不行啊。你s移到外面之後,算下一個數的階乘的時候,s的初值是上一個數的階乘的值了。比如你輸出的3!
=12了,為什麼?就是因為s的初值這時變成2的階乘的值2了,多乘了這個。
你算某個數比如n,當然是從1開始乘1*2*3*...n。而s移到外面之後相當於從上一次算的s的結果開始乘了,相當於n!
=s*1*2**..n,這個結果怎麼會對呢。所以在進入第二重迴圈之前s都要重新賦值為1
求c++大神提供解題思路,不勝感激。
5樓:匿名使用者
不是讓你私信我了麼?
6樓:文帝寶寶
**,希望對你有幫助。
c++大神進解題思路
分享| 2015-01-03 20:01hjvbhjvgf | 瀏覽 134 次 懸賞:100
程式語言
#include
#define size 100
int main()
}}for(i=0;i0)
printf(" ");
printf("%d",a[i]);
}printf("\n");//以上是用冒泡法對輸入資料的升序排列
scanf("%d",&m);//輸入執行的次數
for(i=0;ia[mid]) s=mid+1;//比中間值大
else e=mid-1;//比中間值小
}if(s>e) mid=-1;
printf("%4d",mid+1);
}printf("\n");
}return0;
}重要行後面加註釋
scanf("%d",&t);//輸入一個值t,表示迴圈次數,即有多少組測試資料
for(int i=0;i
#define size 100
int main()
}}for(i=0;i0)
printf(" ");
printf("%d",a[i]);
}printf("\n");//以上是用冒泡法對輸入資料的升序排列
scanf("%d",&m);//輸入需要查詢的整數的個數
for(i=0;ia[mid]) s=mid+1;//比中間值大,開始下標變成中間值加1
else e=mid-1;//比中間值小,最尾下標變成中間值減1
}if(s>e) mid=-1;//如果列表裡面有這個數字的話,肯定不會s>e,走到這裡,表示那個數根本沒有,返回提示0
printf("%4d",mid+1);//mid是陣列的下標,如果要表示第幾個需要加1
}printf("\n");
}return 0;}
c語言,大神來詳細的解答,不勝感激!
7樓:
有 3 個 scanf,從上到下對應的輸入方式分別是:
整數;整數
單精度浮點數(小數形式)
x=雙精度浮點數(小數形式)
c++程式題 求助大神,謝謝 50
8樓:匿名使用者
實驗結果還用說嗎bai?輸入學號姓
du名年齡,輸出學生基zhi本資訊+學號dao姓名年齡專。。。。。
類外定義成員函式:
屬類內宣告:
void init();
void disp();
類外定義類成員函式:
void student::init()
void student::disp()
C語言問題,求大神,C語言問題,求大神解答!
include int main char str 2000 gets str gets str int i 0 while i 2000 bool bb false for int i 0 i n i if bb printf mmm n return 0 先給你改好的 吧,沒做大手術,按你的思路...
C語言問題,求解答,C語言問題,求大神解答
f函式中的a每次使用外面傳入的2,b是區域性變數,後每次都是1,c是靜態變數,函式每次執行會在上次值 1 所以最後執行三次,輸出為789 程式的輸出是 789 c語言問題,求解答 執行abc a 1 首先進行巨集代換過程,是把 a 1去替代 定義的巨集函式 x x 中的x,即得到式子 a 1 a 1...
C語言讀程式題,求大神解答,C語言程式設計題目,求大神解析!
第五行,分別p0 ch0 p1 ch1 可以把ch看成兩個字元陣列,每個屬於長度5也就是p 0 1234 p 1 5678 至於下面兩個for的i和j迴圈,回顧下語法for 初始化 條件 語句 p 0 0 1 s 0 1 0 1 p 0 2 3 s 10 3 0 13 p 1 0 5 s 130 5...