实验3 c语言函数应用编程

news/2025/1/24 11:04:59/文章来源:https://www.cnblogs.com/sunhope/p/18496609

task1:

 

 1 #include<stdio.h>
 2 
 3 char score_to_grade(int score);
 4 
 5 int main() {
 6     int score;
 7     char grade;
 8 
 9     while (scanf_s("%d",&score) != EOF) {
10         grade = score_to_grade(score);
11         printf("分数:%d,等级:%c\n\n", score, grade);
12 
13     }
14 
15     return 0;
16 
17 }
18 
19 char score_to_grade(int score) {
20     char ans;
21 
22     switch (score / 10) {
23     case 10:
24     case 9:   ans = 'A';break;
25     case 8:   ans = 'B';break;
26     case 7:   ans = 'C';break;
27     case 6:   ans = 'D';break;
28     default:  ans = 'E';
29 
30     }
31     return ans;
32      
33 }

 

 

 问题1:功能是将键盘输入的分数转化成对应的等级  形参类型是整型  返回值类型是字符型

问题2:1 改成双引号后无法输出对应的等级    2 语句后不加break,程序执行到对应语句后无法终止,还会输出后面语句的结果

task2:

 

 1 #include<stdio.h>
 2 
 3 int sum_digits(int n);
 4 
 5 int main() {
 6     int n;
 7     int ans;
 8 
 9     while (printf("Enter n:"), scanf_s("%d", &n) != EOF) {
10         ans = sum_digits(n);
11         printf("n=%d,ans%d\n\n", n, ans);
12 
13     }
14 
15     return 0;
16 }
17 
18 
19 int sum_digits(int n) {
20     int ans = 0;
21     while (n != 0) {
22         ans += n % 10;
23         n /= 10;
24 
25     }
26     return ans;
27 }

问题1:功能是得出输入数各位的加和

问题2:可以实现同等效果  原算法将数字的各位取出依次加和,改后通过递归实现

task3:

 

 1 #include<stdio.h>
 2 
 3 int power(int x, int n);
 4 
 5 int main() {
 6     int x, n;
 7     int ans;
 8 
 9     while (printf("Enter x and n :"), scanf_s("%d%d", &x, &n) != EOF) {
10         ans = power(x, n);
11         printf("n=%d,ans=%d\n\n", n, ans);
12 
13     }
14     return 0;
15 }
16 
17     int power(int x, int n){
18         int t;
19 
20         if (n == 0)
21             return 1;
22         else if (n % 2)
23             return x * power(x, n - 1);
24         else {
25             t = power(x, n / 2);
26             return t * t;
27 
28         }
29 
30     }

问题1:功能是计算x的n次方

问题2:是递归函数

 

 

 

 

task4:

 1 #include<stdio.h>
 2 #include<math.h>
 3 int is_prime(int n);
 4 
 5 
 6 int main() {
 7     int n,sum;
 8     n = 1;
 9     sum = 0;
10     printf("100以内的孪生素数:\n");
11     for (n = 1;n <= 98;++n) {
12         if (is_prime(n)&& is_prime(n + 2)) {
13             printf("%d %d\n", n, n + 2);
14             sum = sum + 1;
15         }
16     }
17     printf("100以内的孪生素数共有%d个", sum);
18 
19     return 0;
20         
21     
22     }
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 int is_prime(int n) {
33     int i, m;
34     m = sqrt(n);
35 
36     for (i = 2;i<=m;++i)
37         if (n % i == 0)
38             break;
39     if (i > m&&n>1)
40         return 1;
41     else
42         return 0;
43 }
44     

 

 

 

task5:

 

 1 #include<stdio.h>
 2 void hanoi(int n, char from, char temp, char to);
 3 void moveplate(int n, char from, char to);
 4 auto sum = 0;
 5 int main() {
 6     int n;
 7     while (scanf_s("%d", &n)!=EOF) {
 8         hanoi(n, 'A', 'B', 'C');
 9         printf("一共移动了%d次\n\n", sum);
10         sum = 0;
11     }
12     return 0;
13 }
14 
15 void hanoi(int n, char from, char temp, char to) {
16     if (n == 1) {
17         moveplate(n, from, to);
18     }
19 
20     else {
21         hanoi(n - 1, from, to,temp);
22         moveplate(n, from, to);
23         hanoi(n - 1, temp, from, to);
24     }
25 }
26 void moveplate(int n, char from, char to){
27     printf("%d:%c-->%c\n", n, from, to);
28     sum += 1;
29 }

 

 

 

task6:

 1 #include<stdio.h>
 2 int func(int n, int m);
 3 
 4     int main(){
 5         int n, m;
 6         int ans;
 7 
 8         while (scanf_s("%d%d", &n, &m) != EOF) {
 9             ans = func(n, m);
10             printf("n=%d,m=%d,ans=%d\n\n", n, m, ans);
11 
12         }
13         return 0;
14 }
15 
16     int func(int n, int m) {
17         int x=1, y=1;
18         int i, j;
19         for (i = n;i >= (n - m + 1);--i)
20             x = x * i;
21         for (j = 1;j <= m;++j)
22             y = y * j;
23         return x / y;
24         
25 
26 
27 
28 
29     }

 1 #include<stdio.h>
 2 int func(int n, int m);
 3 
 4     int main(){
 5         int n, m;
 6         int ans;
 7 
 8         while (scanf_s("%d%d", &n, &m) != EOF) {
 9             ans = func(n, m);
10             printf("n=%d,m=%d,ans=%d\n\n", n, m, ans);
11 
12         }
13         return 0;
14 }
15 
16     int func(int n, int m) {
17         if (m == 0 || n == m )
18             return 1;
19         else if(m>n)
20             return 0;
21         else {
22             return func(n - 1, m) + func(n - 1, m - 1);
23         }
24             

 

 

 

 

 

task7:

 1 #include<stdio.h>
 2 
 3 int main() {
 4     int n;
 5     printf("Enter n:");
 6     scanf_s("%d", &n);
 7     print_charman(n);
 8 
 9     return 0;
10 }
11 
12 
13 int print_charman(int n) {
14     int i,j;
15     for (i = n;i > 0;--i) {
16         for (int m = 0;m < n - i;m++)
17             printf("\t");
18         for (j = 1;j <=(2*i-1);j++) {
19             printf(" o \t");
20         }
21         printf("\n");
22 
23         for (int m = 0;m < n - i;m++)
24             printf("\t");
25         for (j = 1;j <= (2 * i - 1);j++) {
26             printf("<H>\t");
27         }
28         printf("\n");
29 
30         for (int m = 0;m < n - i;m++)
31             printf("\t");
32         for (j = 1;j <= (2 * i - 1);j++) {
33             printf("I I\t");
34         }
35         printf("\n");
36         
37     
38         
39     
40         
41 
42     }

 

 

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

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

相关文章

JMeter JMeter-pugin-rabbitMQ消息发布插件

开发环境 RabbitMQ 3.9.16 Erlang 23.3.4.11 Apache-jmeter-5.3 Apache Maven 3.5.4 JDK 1.8.0_121 插件下载地址 https://gitee.com/ishouke/jmeter-plugin-rabbitmq/tree/master 插件使用方法 插件配置 将插件及依赖类库目录下的所有.jar 文件放到 %JMETER_HOME\lib\ext目录…

读数据工程之道:设计和构建健壮的数据系统22获取阶段考虑因素

获取阶段考虑因素1. 有边界与无边界数据 1.1. 无边界数据是现实中存在的数据,是事件发生时的数据,要么是间断的,要么是连续的、持续的和流动的 1.2. 有边界数据是跨越某种边界(如时间)对数据进行归类的一种便捷方式1.2.1. 所有的数据在有边界之前都是无边界的1.3. 长期以来…

mobian trixie 安装 docker

手机刷了 mobian 想安装 docker,记录安装过程中的一些问题 1. 更新软件包列表 sudo apt-get update2. 安装依赖包 sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release3. 添加 Docker 的官方GPG密钥 curl -fsSL https://download.docker.com/linux/…

龙哥盟-PMP-课程笔记-三-

龙哥盟 PMP 课程笔记(三) 2024PMP认证考试课程(第六版+敏捷+第七版) - P6:2.1-2.3 组织过程资产 - 慧翔天地PMP课堂 - BV1By411b7qM 运行环境阶段的课程吧。轻松加愉快,基本上听一听,没什么需要去背的东西,就这么三大块,事业环境因素和组织过程资产,然后呢说了一个组…

龙哥盟-PMP-课程笔记-十九-

龙哥盟 PMP 课程笔记(十九) 【2023敏捷认证】全新PMP考试ACP敏捷知识点精讲视频教程! - P8:06敏捷实施:在敏捷环境中交付 - PMP项目管理那些事 - BV1oP411S7xp 好,那么下面呢我们来讲一下啊,这个在敏捷环境当中的如何去交付啊。呃,那么先前的话我们也是呃讲到呢,在实施…

龙哥盟-PMP-课程笔记-四-

龙哥盟 PMP 课程笔记(四) 2024年PMP认证考试课程针对PMP新考纲最新免费零基础也能轻松听懂 - P4:PMP第4章:项目整合管理(上) - 乐凯咨询 - BV1Rj411G7gs 好各位同学晚上好,今天晚上我们一起来开始学习第四章,项目整合管理好吧,那么我们今天晚上呢,就讲项目整合管理的…

FAST-DDS源码阅读笔记(二)-DDS层

eProsima Fast DDS 提供了两种不同的API,以在不同层面上与通信服务进行交互。 主要的API是数据分发服务(DDS)数据中心化发布/订阅(DCPS)平台无关模型(PIM)API,或者简称为DDS DCPS PIM,它是由DDS 1.4规范定义的,Fast DDS 遵循该规范,由Core,Domain,Publisher,Subs…

【CodeForces训练记录】Codeforces Global Round 27

训练情况赛后反思 guessforces?结论全靠猜?逆天C题构造+大力分类讨论,这谁想得到啊? A题 我们看 \((r,c)\) 所在的行,其右边的球左移,对答案的贡献为 \(m-c\),接下来再看下面的 \(n-r\) 行的最左边的球,每个球移动到右上角对答案的贡献为 \(m\),接下来就是剩下的球往左…

蚂蚁图团队GraphRAG支持社区摘要——Token相比微软直降50%

蚂蚁图团队在DB-GPT v0.6.0版本中改进了GraphRAG框架,引入图社区摘要和混合检索,大幅降低了图索引构建成本,相比微软方案token开销降低50%。今年5月份,我们在DB-GPT v0.5.6版本发布了蚂蚁首个开源GraphRAG框架,支持了多种知识库索引底座,并在文章《Vector | Graph:蚂蚁首…

通过终端控制屏幕亮度

Ubuntu通过终端控制音量和屏幕亮度 安装DWM界面后,无法通过快捷键和任务栏来控制音量、屏幕亮度以及wifi连接,因此,我们可以通过终端来完成这些任务。 连接Wifi netui会图形化wifi界面,连接后输入密码即可 调整音量 控制亮度 转载自:https://cn.linux-console.net/?p=296…

第六章课后习题6.1、6.3、6.4、6.5和6.7

习题6.1 a图点击查看代码 import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() nodes = [v1, v2, v3, v4, v5, v6] G.add_nodes_from(nodes) edges = [ (v1, v2), (v1, v3), (v1, v4), (v2, v3), (v2, v6), (v3, v4), (v4, v5), (v5, v6) ] …

使用element ui 组件的时候,如果使用两个或多个按钮在同一个单元格内,按钮会竖着排列,但是不能够对齐怎么解决?

打开浏览器的开发者模式(f12打开) 我们发现这个按钮有一个自带的左边距10px<el-table-column width="100" label="操作"> <template #default="scope"> <el-button type="primary" plain style="width: 50…