[英]my C program to find factorial is not giving me my desired result
這是我的代碼:
#include <stdio.h>
void main() {
int n, f = 1;
printf("enter any number: ");
scanf("%d", &n);
while (n > 0) {
f = f * n;
n = n - 1;
}
printf("factorial of %d is %d", n, f);
}
它給了我一個結果:
enter any number: 5 factorial of 0 is 120
只需保存原始輸入:
#include<stdio.h>
void main()
{
int n,n1,f=1;
printf("enter any number: ");
scanf("%d",&n1);
n = n1;
while(n>0)
{
f=f*n;
n=n-1;
}
printf("factorial of %d is %d",n1,f);
}
我更願意為此使用 for 循環。 它允許您為循環聲明一個局部變量,您可以將其初始化為n
而不會影響n
的值:
#include <stdio.h>
int main(int argc, char *argv[]) {
int n, f=1;
printf("enter any number: ");
scanf("%d",&n);
for (int i=n; i>0; i--)
f *= i;
printf("factorial of %d is %d\n", n, f);
}
C 的語法允許您為循環定義一個新變量,該變量將在循環完成后消失。 這使您可以在不更改循環內用戶輸入的情況下運行循環。
scanf("%d",&n);
for (int i = n; i > 0; i--)
{
f=f*i;
}
有些人更喜歡for
循環而不是while
循環,因為它們有更多的“結構”——所有與循環組織相關的代碼都在一行代碼中。
你正在做的是“n=n-1;” 由於這一行,n 值在最后變為零,因此將 n 值保存在某個變量中,然后在最后打印
#include<stdio.h>
void main()
{
int n,f=1, k;
printf("enter any number: ");
scanf("%d",&n);
k=n;// do this
while(n>0)
{
f=f*n;
n=n-1;
}
printf("factorial of %d is %d",k,f);
}
由於循環后需要n
的值,所以在while
循環中不要修改n
,而是用一個臨時變量i
來枚舉因子。
另請注意, main()
的返回類型為int
並在成功退出時返回0
。
這是修改后的版本:
#include <stdio.h>
int main() {
int n, f = 1;
printf("enter any number: ");
if (scanf("%d", &n) == 1) {
int i = n;
while (i > 1) {
f = f * i;
i = i - 1;
}
printf("factorial of %d is %d", n, f);
}
return 0;
}
n 在 while 循環結束時始終為 0。 如果將 n 用作計數器,則無法打印舊值。 創建一個單獨的變量並將其用作 while 循環中的計數器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.