实验三蕉 C语言函数应用编程蕉

news/2024/10/23 23:28:28/文章来源:https://www.cnblogs.com/cuo-ren/p/18498441

实验三蕉 C语言函数应用编程蕉

可恶,是原始博士!什么时候!?😖😫

额啊,我,我是,呃,香蕉?🤔

对,我是香蕉🍌😃

香🐵香🐵香🐵香🐵香🐵香🐵

🍌蕉🍌蕉🍌蕉🍌蕉🍌蕉🍌蕉

香🐵香🐵香🐵香🐵香🐵香🐵

🍌蕉🍌蕉🍌蕉🍌蕉🍌蕉🍌蕉

🐵🐵🐵🐵🐵🐵🐵🐵🐵🐵🐵

🐵🐵🐵🐵🐵🐵🐵🐵🐵🐵🐵

🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌

🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌

🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌

🍌🍌🐒🐒🐒🐒🐒🐒🐒🐒🐒🍌🍌

🍌🐒🐒🐒🐒🐒🐒🐒🐒🐒🐒🐒🍌

🐒🐒🐒🐒🐒🐒🐒🐒🐒🐒🐒🐒🐒

🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌

🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌

🍌🍌🍌🍌摆满香蕉的小岛🍌🍌🍌🍌

🍌🍌🍌🍌睡蕉小猴的爱巢🍌🍌🍌🍌

🍌🍌🍌🍌吃完香蕉就睡觉🍌🍌🍌🍌

🍌🍌🍌🍌快快乐乐没烦恼🍌🍌🍌🍌

🍌🍌🍌🍌睡蕉小猴真是好🍌🍌🍌🍌

🍌🍌🍌🍌幸福美满没烦恼🍌🍌🍌🍌

🍌摆🍌满🍌香🍌蕉🍌的🍌小🍌岛🍌

🙈睡🙉蕉🐵小🙊猴🙉的🐒爱🐵巢🙊

🍌吃🍌完🍌香🍌蕉🍌就🍌睡🍌觉🍌

🐒快🙉快🐵乐🐵乐🐵没🙉烦🙊恼🐒

🍌睡🍌蕉🍌小🍌猴🍌真🍌是🍌好🍌

🙊幸🐒福🐵美🐵满🐵没🙉烦🐵恼🐒

monkeymonkey

monkeymonkey

monkeymonkey

实验任务1——分数等级

#include <stdio.h>
char score_to_grade(int score); // 函数声明
int main() {int score;char grade;while (scanf("%d", &score) != EOF) {grade = score_to_grade(score); // 函数调用printf("分数: %d, 等级: %c\n\n", score, grade);}return 0;
}
// 函数定义
char score_to_grade(int score) {char ans;switch (score / 10) {case 10:case 9: ans = 'A'; break;case 8: ans = 'B'; break;case 7: ans = 'C'; break;case 6: ans = 'D'; break;default: ans = 'E';}return ans;
}
1-1


问题1 函数 score_to_grade 的功能是什么?形参类型、返回值类型是什么?

根据分数划定等级。90~100分A级,80~90分B级,70~80分C级,60~70分D级,60分以下E级。
形式参数score类型为int
返回值类型为char

问题2 如果line21-28以下形式,有问题吗?如果有,指出有哪些问题?

switch(score/10) {
case 10:
case 9: ans = "A";
case 8: ans = "B";
case 7: ans = "C";
case 6: ans = "D";
default: ans = 'E';
}

没有加入break语句,执行case语句后会继续往下执行。

实验任务2——各位数的和

#include <stdio.h>
int sum_digits(int n); // 函数声明
int main() {int n;int ans;while (printf("Enter n: "), scanf("%d", &n) != EOF) {ans = sum_digits(n); // 函数调用printf("n = %d, ans = %d\n\n", n, ans);}return 0;
}
// 函数定义
int sum_digits(int n) {int ans = 0;while (n != 0) {ans += n % 10;n /= 10;}return ans;
}
2-1


问题1 函数 sum_digits 的功能是什么?

计算各位数字的和。

问题2 如果保持 main 代码和函数 sum_digits 声明不变,把函数 sum_digits 定义成如下实现方式,能实现同等的效果吗?如果不能实现同等效果,分析原因。如果能实现同等效果,说明两种实现方式背后的算法思维区别。

int sum_digits(int n) {
if(n < 10)return n;
return sum_digits(n/10) + n%10;
}

能实现。原方法为迭代,一直循环直到n0。每次取出n的最后一位加到ans中。
替换方法为递归。若n为个位数,则直接返回n,若n不为个位数,则将n去除最后一位再次调用sum_digits,并加上个位数。

实验任务3——指数运算

#include <stdio.h>
int power(int x, int n); // 函数声明
int main() {int x, n;int ans;while (printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF) {ans = power(x, n); // 函数调用printf("n = %d, ans = %d\n\n", n, ans);}return 0;
}
// 函数定义
int power(int x, int n) {int t;if (n == 0)return 1;else if (n % 2)return x * power(x, n - 1);else {t = power(x, n / 2);return t * t;}
}
3-1


问题1 函数 power 的功能是什么?

xn次方。

问题2 函数 power 是递归函数吗?如果是,找出递归模式。写出这个递归模式对应的数学公式模型。

是。
n0时,返回1
n为奇数时,调用power(x,n-1)并乘上x
n为偶数时,调用power(x,n/2)并乘方。
$power(x,n)=\begin{cases} x·power(x,n-1), & n \in {2k + 1 \mid k \in \mathbb{Z}} \power(x,n/2)^2, & n \in {2k \mid k \in \mathbb{Z}} \1, & n=0 \end{cases}$

实验任务4——打印100以内的孪生素数

#include <stdio.h>
#include <math.h>int is_prime(int n) {if (n == 1) {return 0;}if (n == 2 || n == 3) {return 1;}if (n % 2 == 0 || n % 3 == 0) {return 0;}for (int i = 5; i <= sqrt(n); i += 6) {if (n % i == 0 || (n % (i + 2) == 0)) {return 0;}}return 1;
}int main() {int sum=0;for (int i = 1; i <= 98; i++) {if (is_prime(i) && is_prime(i + 2)) {printf("%d %d\n", i, i + 2);sum ++;}}printf("100以内的孪生素数有%d个", sum);
}
4-1


实验任务5——汉诺塔

#include <stdio.h>t = 1;void hanoi(int n, char a, char b, char c) {if (n == 1) {printf("%d:将第%d个盘子从%c移动到%c\n", t, n, a, c);t++;return;}else if (n > 1) {hanoi(n - 1, a, c, b);printf("%d:将第%d个盘子从%c移动到%c\n", t, n, a, c);t++;hanoi(n - 1, b, a, c);}
}int main() {int n;while (scanf("%d", &n) != EOF) {hanoi(n, 'A', 'B', 'C');printf("\n一共移动了%d次\n\n", t - 1);t = 1;}
}
5-1


实验任务6——计算组合数

#include <stdio.h>
int func(int n, int m); // 函数声明
int func2(int n, int m);int main() {int n, m;int ans;while (scanf("%d%d", &n, &m) != EOF) {ans = func2(n, m); // 函数调用printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);}return 0;
}
// 函数定义
// 待补足。。。(分别用迭代和递归实现)int func(int n, int m) {int ans = 1;for (int i = n; i >= (n - m + 1); i--) {ans *= i;}for (int i = m; i >= 1; i--) {ans /= i;}return ans;
}int func2(int n, int m) {if (n == 0 && m != 0) {return 0;}if (m == 0) {return 1;}else {return func2(n - 1, m) + func2(n - 1, m - 1);}}
6-1 6-2


实验任务7——打印小人

#include <stdio.h>
#include <stdlib.h>
// 函数声明
// 待补足
// xxxvoid  print_charman(int n);int main() {int n;printf("Enter n: ");scanf("%d", &n);print_charman(n); // 函数调用return 0;
}
// 函数print_charman定义
// 待补足
// xxxvoid print_charman(int n) {for (int i = 1; i <= n; i++) {for (int i2 = 1; i2 <= i - 1; i2++) {printf("\t");}for (int i2 = 1; i2 <= ((2 * n - 1) - 2 * (i - 1)); i2++) {printf(" O \t");}for (int i2 = 1; i2 <= i - 1; i2++) {printf("\t");}printf("\n");for (int i2 = 1; i2 <= i - 1; i2++) {printf("\t");}for (int i2 = 1; i2 <= ((2 * n - 1) - 2 * (i - 1)); i2++) {printf("<H>\t");}for (int i2 = 1; i2 <= i - 1; i2++) {printf("\t");}printf("\n");for (int i2 = 1; i2 <= i - 1; i2++) {printf("\t");}for (int i2 = 1; i2 <= ((2 * n - 1) - 2 * (i - 1)); i2++) {printf("I I\t");}for (int i2 = 1; i2 <= i - 1; i2++) {printf("\t");}printf("\n");}
}
7-1 7-2


1 2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/820914.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cookie、Session、Token三者的区别

在数字世界的茫茫人海中,每一次点击、每一次登录,都伴随着身份认证与数据安全的较量。今天咱要来一场惊心动魄的技术探秘之旅,今天我要带你深入探索Web开发中那三个绕不开的名字——Cookie、Session、Token,它们不仅仅是技术名词,更是构建安全、高效用户交互的基石,看看它…

20222417 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实践内容 1.1实验目的 (1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件 veil,加壳工具 使用C + shellcode编程 (2)通过组合应用各种技术实现恶意代码免杀 如果成功实现了免杀的,简单语…

人生路manman,Man游常相伴——软工实践第一次团队作业

作业所属课程 班级的链接作业要求 作业要求的链接作业目标 你理解的作业目标具体内容团队名称 iman团队成员 102202146 - 蓝敏龙, 102201225 - 陈碧煌, 102202105 - 王梓铭, 102202124 - 阿依娜孜, 102202135 - 施宇翔, 102202134 - 承宇豪, 102202117 - 杨邑豪, 102202122 - 张…

java学习10.23

继续写这个javaweb项目,实现增删和之间的页面跳转

2024秋软工实践 福气满满团队展示与选题报告

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281作业的目标 运用LMM大语言模型接口创建一款基于场景的AI对话软件,为传统软件赋予全新功能团队名称 福气满满团队成员学号-名字 052203132童…

《操作系统真象还原》内核内存分布与加载

操作系统内核加载流程图 %%{init:{theme:default, themeVariables:{fontSize:1px}}}%% graph TBA(mbr.s 0xc700开始) --> rd_disk_m_16(mbr.s <br /> rd_disk_m_16) A --> C(loader.s <br> jmp LOADER_BASE_ADDR + 0x300) --> loader_start(loader.s…

20222318 2024-2025-1 《网络与系统攻防技术》实验二实验报告

1.实验内容 (一)本周课程内容 (1)深入理解后门概念及其实际案例,明晰后门对系统安全构成的潜在威胁。 (2)普及后门技术知识,涵盖各类进程隐藏技巧,并熟悉netcat、meterpreter、veil等常见工具的应用。 (3)进一步学习了shellcode注入的逻辑原理及其在不同场景下的应用…

IDEA 类和方法的注释

IDEA 类和方法的注释 一、设置方法的注释 (1) 打开file->setting->Editor->LiveTemplates点击右上面那个+号,选择Template Group双击,然后弹出一个窗口,添加命名为KeyBoard点击OK完成,如下图1所示:图1 (2) file->setting->Editor->LiveTemplates这个…

实验2 类和对象

任务1 t.h1 #pragma once2 3 #include <string>4 5 // 类T: 声明6 class T {7 // 对象属性、方法8 public:9 T(int x = 0, int y = 0); // 普通构造函数 10 T(const T &t); // 复制构造函数 11 T(T &&t); // 移动构造函数 12 ~T();…

提权 | Windows系统

提权篇:Windows系统常见提权姿势。目录cmd提权meterpreter提权getsystemsteal_tokenmigrate令牌窃取(MS16-075)烂土豆提权步骤烂土豆提权原理sc命令提权抓本地密码提权其他工具pr工具内核提权WindowsVulScan cmd提权 前言:我们getshell一个用windows部署的网站后,通过蚁剑或…

for 循环()简单到高阶

for循环的初始意义是遍历一串具有相同特性的值 1、遍历数组,根据索引去求值点击查看代码 public class ForDemo1 {public static void main(String[] args) {int[] arr = {1,2,3,4,5,6,7};for (int i = 0; i < arr.length; i++) {System.out.println("arr["+i+&q…

08.Sleuth(Micrometer)+ZipKin分布式链路追逐

1.Sleuth进入维护模式替代方案 -> Micrometer Tracing 2.分布式链路追踪概述 2.1 出现背景 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协调产生最后的结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环…