嘗試撰寫一段代碼,以獲得所輸入數字的階乘。
int factorial(int number, int i)。
{
int endval;
for(i = number - 1; i>0; i-){
endval = number * i;
}
if (endval == 0){
printf("1"/span>)。
}
return endval;
}
int main()
{
int endvalue, numA, numB;
char userchoice[1] 。
printf("輸入一個要做的選擇(f代表階乘)。
")。)
scanf("%s", userchoice)。
if(strcmp(userchoice, "f")== 0) {
printf("輸入一個值以獲得它的階乘:")。
scanf("%d"/span>, &numA)。
endvalue = 階乘(numA,numB)。
printf("%d", endvalue) 。
return 0; }
getch()。
return 0。
}
由于某些原因,當我設定答案(number*i)= endval時,整個for回圈在函式中沒有任何作用。它只是列印出我輸入的相同數字,并給我一個荒謬的答案0!。
int factorial(int number, int i)。
{
int endval;
for(i = number - 1; i>0; i-){
endval = number * i;
}
if (endval == 0){
printf("1"/span>)。
}
return endval;
}
然而,當我完全洗掉endval變數時,代碼作業得非常好(例外的是,它得到0!=10)
int factorial(int number, int i)。
{
for(i = number - 1; i>0; i-){
number = number * i;
}
if (number == 0) {printf("1"); }
return number;
}
我在代碼中是否遺漏了什么,導致了這些錯誤?
uj5u.com熱心網友回復:
#include <stdio.h>/span>
#include <string.h>
int factorial(int number)
{
int endval=1;
for(int i = number ; i>0; i-){
endval *= i;
}
return endval。
}
int main()
{
int endvalue=0;
int numA=0;
char userchoice[1] 。
printf("輸入要做的選擇(f代表階乘)。")。)
int ret=scanf("%s", userchoice)。
if (!ret){
printf("Error in scanf: %d"/span>, ret)。
}
if(strcmp(userchoice, "f"/span>)== 0){
printf("輸入一個值以獲得它的階乘:")。
scanf("%d"/span>, &numA)。
endvalue = 階乘(numA)。
printf("%d", endvalue) 。
return 0;
}
getchar()。
return 0;
}
做了一些改動的代碼就可以作業了
factorial()函式可以只得到一個引數。
strcmp(),我們必須包括string.hgetchar()而不是getch()scanf()的回傳值,以確保讀取正確與否。gcc -Wall code.cprintf()來查看函式呼叫中發生的情況。
uj5u.com熱心網友回復:
階乘的定義是:
階乘(0) = 1
階乘(n) = n * 階乘(n-1)
注意:階乘只對數字>=0合法
在C語言中,這個定義是:
int factorial(int number)
{
if (number < 0)
return 1;
if (number == 0)
return (1)。
/*else*/
return (number * factorial(number-1) )。
}
uj5u.com熱心網友回復:
可能有一些事情需要糾正。請看所附代碼。
。
int factorial(int number)。
{
if (number == 0){ return 1; }
int endval=1, i。
for(i = 1; i<=number; i ) { endval *= i; }
return endval。
}
int main() {
int endvalue, numA;
char userchoice[1] 。
printf("輸入一個要做的選擇(f代表階乘)。
")。)
scanf("%s", userchoice)。
if(strcmp(userchoice, "f")== 0) {
printf("輸入一個值來獲得它的階乘:")。
scanf("%d"/span>, &numA)。
endvalue = 階乘(numA)。
printf("%d", endvalue) 。
return 0;
}
getch()。
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322482.html
標籤:
下一篇:“從不”型別上不存在
