请编写一个完整出程序,实现如下功能:从键盘输入数字 n,程序自动计算 n!,并输出。(注 1:n!=1*2*3*……*n,注 2:请使用递归实现)(可以使用任何开发语言,最好使用 Python)
时间: 2024-05-01 14:17:00 浏览: 87
Python代码如下:
```python
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
n = int(input("请输入一个数字:"))
print(n, "的阶乘为:", factorial(n))
```
解释:这段代码定义了一个递归函数 `factorial(n)`,用来计算 n 的阶乘。首先判断 n 是否为 1,若是,则返回 1;否则,返回 n 乘以 `factorial(n-1)` 的结果。在主程序中,读取用户输入的数字 n,然后调用 `factorial(n)` 函数计算 n 的阶乘,并输出结果。
相关问题
用c语言编写程序:从键盘上任给一个郑州大学学生的学号,输出该学号相关的信息。(例如:输入202201011150,输出:2022级,机械与动力工程学院,11班,50号),上载拍照图片、视频:0分。 要求: (1)有输入,对输入的学号判断,不是12位的数字符号重新输入学号(当输入0,结束程序运行),如果是12位数字符号,分别输出:级,学院,班级,班内序号. (2)通过提示信息“是否继续输入学生的学号(y/n)”,回答“y”,继续输入;回答“n”,结束程序运行。 说明: (1)级,限定在'2022','2021','2020','2019','2018'当中,否则重新输入学号 (2)匹配不上给定的学院代码,给出相应提示信息。学院代码如下(可以自行添加)
```c
#include <stdio.h>
#include <string.h>
int main() {
char student_id[13]; // 声明一个长度为13的字符数组,用来存储学号
char *level; // 声明一个指针变量,用来存储年级
char *college; // 声明一个指针变量,用来存储学院
char *class; // 声明一个指针变量,用来存储班级
char *number; // 声明一个指针变量,用来存储班内序号
int is_valid = 0; // 判断学号是否合法的标志变量
// 学院代码表
char college_codes[5][20] = {
{ "电气与自动化工程学院" },
{ "能源与环境学院" },
{ "计算机学院" },
{ "机械与动力工程学院" },
{ "信息工程学院" }
};
while (1) {
printf("请输入一个12位的郑州大学学生学号(输入0结束程序):");
scanf("%s", student_id);
if (strcmp(student_id, "0") == 0) { // 输入0结束程序
break;
}
if (strlen(student_id) != 12) { // 判断学号是否合法
printf("您输入的学号不是12位数字符号,请重新输入!\n");
continue;
}
// 判断年级
switch (student_id[0]) {
case '2':
if (student_id[1] == '0') {
level = "2020级";
} else if (student_id[1] == '1') {
level = "2021级";
} else if (student_id[1] == '2') {
level = "2022级";
} else {
printf("您输入的学号年级不正确,请重新输入!\n");
continue;
}
break;
case '1':
if (student_id[1] == '9') {
level = "2019级";
} else if (student_id[1] == '8') {
level = "2018级";
} else {
printf("您输入的学号年级不正确,请重新输入!\n");
continue;
}
break;
default:
printf("您输入的学号年级不正确,请重新输入!\n");
continue;
}
// 判断学院
switch (student_id[2]) {
case '1':
college = college_codes[3];
break;
case '2':
college = college_codes[2];
break;
case '3':
college = college_codes[4];
break;
case '4':
college = college_codes[1];
break;
case '5':
college = college_codes[0];
break;
default:
printf("对不起,没有找到您输入的学院代码所对应的学院,请重新输入!\n");
continue;
}
// 判断班级
switch (student_id[9]) {
case '1':
class = "1班";
break;
case '2':
class = "2班";
break;
default:
printf("您输入的班级不正确,请重新输入!\n");
continue;
}
// 判断班内序号
switch (student_id[10]) {
case '0':
number = "10号";
break;
case '1':
number = "11号";
break;
case '2':
number = "12号";
break;
case '3':
number = "13号";
break;
case '4':
number = "14号";
break;
case '5':
number = "15号";
break;
case '6':
number = "16号";
break;
case '7':
number = "17号";
break;
case '8':
number = "18号";
break;
case '9':
number = "19号";
break;
default:
printf("您输入的班内序号不正确,请重新输入!\n");
continue;
}
// 输出学生信息
printf("%s,%s,%s,%s\n", level, college, class, number);
// 询问是否继续输入
char choice;
while (1) {
printf("是否继续输入学生的学号(y/n):");
scanf(" %c", &choice); // 注意要在前面加一个空格,避免与上一个输入的回车符冲突
if (choice == 'y' || choice == 'n') {
break;
}
}
if (choice == 'n') {
break;
}
}
return 0;
}
```
常熟理工学院电气与自动化工程学院《控制器编程基础》实验指导书实验二程序分支及循环结构项目1:数字反转给定一个整数n(键盘输入),将该数字各个位上的数字反转得到一个新的数字。输出的新数最高位不能有0。输入一个(-10000000,10000000)之间的数
实验目的:掌握程序分支及循环结构的控制语句。
实验设备:计算机、编程软件。
实验要求:
1. 能运用程序分支及循环结构的控制语句实现数字反转。
2. 能设计程序实现输入数字后得到反转后的数字。
实验原理:
在程序中,需要使用循环结构来完成数字反转的操作。
具体操作步骤如下:
1. 读入输入的整数n。
2. 对n进行判断,若n<0,则将其转换为正数再进行操作。
3. 利用循环结构,通过对n取模和整除10的操作,逐位取出n的数字,并将其倒序存储到一个新的整数变量中。
4. 对于存储反转后数字的变量,需要进行一次除以10的操作,去掉高位的0。
5. 最后输出结果。
实验步骤:
Step1. 新建工程。
Step2. 在代码中编写如下程序:
```c
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n, rev = 0;//初始化输入数及反转数变量
printf("请输入一个整数:\n");
scanf("%d", &n);//读入输入的整数n
if (n < 0)//如果n<0,则将其转换为正数
{
n = -n;
}
while (n > 0)//利用循环结构,通过对n取模和整除10的操作,逐位取出n的数字,并将其倒序存储到一个新的整数变量中
{
rev = rev * 10 + n % 10;//将n个位上的数字逐个反转存储到rev中
n /= 10;//每次将n除以10,以便继续取n的下一个数字
}
/* 对于存储反转后数字的变量,需要进行一次除以10的操作,去掉高位的0 */
while (rev % 10 == 0)//去除反转后数字的前导0
{
rev /= 10;
}
printf("反转后的数字为:%d\n", rev);//最后输出结果
system("pause");//暂停程序运行,以便查看输出结果
return 0;
}
```
Step3. 调试运行程序。
Step4. 在程序中输入一个整数,回车后程序反转该数字并输出结果。
Step5. 分别测试正数、负数、0、10、100等不同输入情况,观察输出结果。
阅读全文