6-1 sdut-c语言实验- n!
时间: 2023-06-05 16:47:54 浏览: 248
题目描述:
输入一个正整数n,输出n的阶乘n!的值。
输入格式:
一个正整数n。
输出格式:
n!的值。
输入样例:
5
输出样例:
120
解题思路:
本题可以使用递归或循环两种方法来实现。
递归方法:
当n=1时,n!=1;当n>1时,n!=n*(n-1)!。
循环方法:
使用for循环,从1到n依次乘积。
参考代码:
递归方法:
#include <stdio.h>
int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", factorial(n));
return 0;
}
循环方法:
#include <stdio.h>
int main() {
int n, i, result = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++) {
result *= i;
}
printf("%d\n", result);
return 0;
}
相关问题
7-27 sdut - C语言实验—圆周率
"sdut - C语言实验—圆周率"这个主题通常是指在东南大学(Southeast University, 简称SDUT)的计算机科学课程中,学生们可能会被要求通过编程实践来计算圆周率π的一个近似值。这通常是作为C语言基础教学的一部分,因为涉及到数学算法和程序设计。
常见的做法可能是利用Leibniz公式或者Bailey–Borwein–Plouffe (BBP) 公式来计算π,这些公式可以生成无限级数,然后通过截断到一定位数的方式来得到估算值。在C语言中,编写这样的程序会涉及循环、变量初始化和浮点数处理等知识。
以下是一个简单的示例,展示了如何使用Chudnovsky算法(一种计算圆周率的算法)在C语言中计算π:
```c
#include <stdio.h>
#include <math.h>
void calculatePi(int n_terms) {
double pi = 0;
double denominator = 1;
int k;
for (k = 0; k <= n_terms; ++k) {
pi += 4 * ((-(1 / 16))^k) * (1 / (2*k + 1)) * (1 / (2*k + 3));
}
pi *= 16 * n_terms / denominator;
printf("Calculated Pi with %d terms is approximately %.15f\n", n_terms, pi);
}
int main() {
int num_terms = 100000; // 可以调整计算精度
calculatePi(num_terms);
return 0;
}
```
7-19 sdut-c语言实验-回文串的判断
回文串是指正着读和倒着读都一样的字符串。例如,"level"、"racecar"、"madam" 都是回文串。
判断一个字符串是否为回文串,可以使用双指针法。定义两个指针,一个指向字符串的开头,一个指向字符串的结尾,然后分别向中间移动,比较两个指针所指向的字符是否相同。如果相同,继续移动;如果不同,说明不是回文串。
具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str) {
int len = strlen(str);
int left = , right = len - 1;
while (left < right) {
if (str[left] != str[right]) {
return ;
}
left++;
right--;
}
return 1;
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("%s 是回文串\n", str);
} else {
printf("%s 不是回文串\n", str);
}
return ;
}
```
在上面的代码中,isPalindrome 函数用于判断一个字符串是否为回文串。该函数首先获取字符串的长度 len,然后定义两个指针 left 和 right,分别指向字符串的开头和结尾。接着,使用 while 循环,当 left 小于 right 时,比较 str[left] 和 str[right] 是否相同,如果不同,说明不是回文串,返回 ;如果相同,继续移动指针。当 left 大于等于 right 时,说明已经比较完了整个字符串,返回 1,表示是回文串。
在 main 函数中,首先使用 scanf 函数获取用户输入的字符串,然后调用 isPalindrome 函数判断该字符串是否为回文串,并输出结果。
希望对你有帮助!
阅读全文