用C语言分别使用while和do-while循环编程计算n的阶乘。
时间: 2024-05-13 12:20:25 浏览: 122
好的,这是一个关于编程的问题,我可以回答。以下是使用while循环和do-while循环分别计算n的阶乘的C语言代码:
使用while循环:
```
#include <stdio.h>
int main() {
int n, i = 1, fact = 1;
printf("Enter a positive integer: ");
scanf("%d", &n);
while (i <= n) {
fact *= i;
i++;
}
printf("%d! = %d\n", n, fact);
return 0;
}
```
使用do-while循环:
```
#include <stdio.h>
int main() {
int n, i = 1, fact = 1;
printf("Enter a positive integer: ");
scanf("%d", &n);
do {
fact *= i;
i++;
} while (i <= n);
printf("%d! = %d\n", n, fact);
return 0;
}
```
其中,while循环首先判断条件是否成立,如果成立则执行循环体;do-while循环先执行循环体,再判断条件是否成立。在计算阶乘时,两者的结果是一样的。
相关问题
如何使用C语言中的do-while循环结构计算一个特定数n的阶乘?
在C语言中,可以使用do-while循环结构结合递归来计算一个特定数n的阶乘。这里是一个简单的示例:
```c
#include <stdio.h>
unsigned long long factorial(int n) {
unsigned long long fact = 1; // 初始化阶乘为1
do {
if (n > 1)
fact *= n;
n--;
} while (n != 0); // 只要n大于0,就继续循环
return fact;
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (num < 0) {
printf("抱歉,阶乘只对非负整数有效。\n");
} else {
unsigned long long result = factorial(num);
printf("%d 的阶乘是 %llu\n", num, result);
}
return 0;
}
```
在这个程序中,`factorial()`函数首先初始化阶乘为1,然后在do-while循环中,如果n大于1,则将n乘到阶乘上,同时n自减。当n变为0时,退出循环。注意处理了输入为负数的情况。
C语言用while,do-while,for循环完成计算n!
在C语言中,你可以使用while、do-while和for循环来计算一个数n的阶乘(n!)。以下是三种方式的例子:
1. **while循环**:
```c
#include <stdio.h>
int factorial(int n) {
int i = 1;
while (i <= n) {
n *= i;
i++;
}
return n;
}
int main() {
int num;
printf("请输入一个正整数: ");
scanf("%d", &num);
printf("该数的阶乘是: %d\n", factorial(num));
return 0;
}
```
2. **do-while循环**:
```c
#include <stdio.h>
int factorial(int n) {
int i = 1;
do {
n *= i;
i++;
} while (i <= n);
return n;
}
// 主函数同上
```
3. **for循环**:
```c
#include <stdio.h>
int factorial(int n) {
int i = 1, fact = 1;
for (; i <= n; i++) {
fact *= i;
}
return fact;
}
// 主函数同上
```
在上述代码中,用户需要输入一个正整数,然后程序会计算并输出它的阶乘。
阅读全文