实验作业3

news/2025/3/17 23:09:02/文章来源:https://www.cnblogs.com/lichangxu/p/18503439

任务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

功能是统计学生分数等级,60及以下为E,60-70为D,70-80为C,80-90为B,90-100为A。形参及返回值均为整型。

问题2

有,第一个问题是用双引号,而不是用单引号标识字符。第二个问题是没有用break结束switch语句。

任务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;
}

运行截图

问题1

计算每一位数加起来的和

问题2

可以

第一种是用了迭代的方法,第二种是用了递归的方法。

任务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;
}
}

运行截图

问题1

计算x的n次方

问题2

是,递归模式为,当n=0时返回1,否则重复x×x,n-1直到n为0。结束数学模型为Y=x^n

任务4

源代码

#include<stdio.h>
int is_prime(int i);
int main()
{   int m,n,z;printf("100以内的孪生素数:\n");for(n=3;n<=100;n++){if(is_prime(n)&&is_prime(n+2)){printf("%d %d\n",n,n+2);m++;}}printf("100以内的孪生素数共有%d个",m);return 0;}
int is_prime(int i)
{int m;for(m=2;m<=i/2;m++){if(i%m==0)return 0;}return 1;
}

运行截图

任务5

源代码

#include<stdio.h>
int hanoi(unsigned int n,char from,char temp,char to);
int moveplate(unsigned int n,char from,char to );
int times(int n); 
int main(){unsigned int n; int m=1,i,q;while(scanf("%u",&n)!=EOF){hanoi(n,'A','B','C');q= times( n);printf("\n一共移动了%d次\n\n",q);}return 0;
}
int hanoi(unsigned n,char from,char temp,char to)
{    int m;if(n==1)moveplate(n,from,to);else{hanoi(n-1,from,to,temp);moveplate(n,from,to);hanoi(n-1,temp,from,to);}
}
int moveplate(unsigned int n,char from,char to ){printf("%u:%c-->%c\n",n,from,to);
}
int times(int n)
{int i,s=1,j;
for (i=1;i<=n;i++){s=s*2;}j=s-1;return j;
}

运行效果

 

任务6

源代码(迭代)

#include<stdio.h>
int func(int n,int m);
int main()
{     int n,m;int ans;while(scanf("%d%d",&n,&m)!=EOF){ans =func(n,m);printf("n = %d, m = %d, ans = %d\n\n",n,m,ans);}return 0;
}
int func(int n,int m){int s,q=1,g,h,a=1;int ans;g=m; h=n;for(s=1;s<=m;s++){q=q*g;g--;}for(m=m;m>0;m--){ a=a*h;h--;}ans=a/q;return ans;
}

运行效果

源代码(递归)

#include<stdio.h>
int func(int n,int m);
int main()
{     int n,m;int ans;while(scanf("%d%d",&n,&m)!=EOF){ans =func(n,m);printf("n = %d, m = %d, ans = %d\n\n",n,m,ans);}return 0;
}
int func(int n,int m){int ans;if(n==m||m==0)return 1 ;else if(n<m)return 0;elseans = func(n-1,m)+func(n-1,m-1);return ans;}

运行截图

任务7

源代码

#include<stdio.h>
#include<stdlib.h>
int print_charman(int n);
int main(){int n;printf("Enter n:");scanf("%d",&n);print_charman(n);return 0;
}
int print_charman(int n){int q,a,b,c=1,g,d,i=0;for(q=n;q>0;q--){for(a=0;a<i;a++)printf("\t");for(g=2*q-1;g>0;g--){printf(" o");printf("\t");}printf("\n");for(a=0;a<i;a++)printf("\t");for(g=2*q-1;g>0;g--){printf("<H>");printf("\t");}printf("\n");for(a=0;a<i;a++)printf("\t");for(g=2*q-1;g>0;g--){printf("I I");printf("\t");}printf("\n\n");i++;}
}

 

运行效果

 

 

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

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

相关文章

PHP和Elixir在Web开发中的比较

开篇直接回答问题: 在Web开发中,PHP和Elixir 两者都是具有特定优势的编程语言,但它们的设计哲学、性能、并发处理和生态系统各有不同。PHP 以其易于学习和广泛的使用基础而广受欢迎,特别擅长于快速开发和部署传统的Web应用。而Elixir,作为一种较新的语言,提供了出色的并发…

BLOG-1

pta1-3次大作业博客总结 一、前言 ​ 在前三次的PTA大作业中,我们依次完成了答题判题程序1至3。这三个程序彼此紧密相连,层层递进,每一次的完成都是在前一次基础上的持续修改、完善与优化。这三次大作业的顺利进行要求我们对类、Map、List、正则表达式等知识点有深入的理解…

基于BP译码的LDPC误码率matlab仿真,分析码长,码率,信道对译码性能的影响,对比卷积码,turbo码以及BCH码

1.算法仿真效果本程序系统是《m基于BP译码的LDPC误码率matlab仿真,分析不同码长,码率,信道对译码性能的影响,对比卷积码,turbo码》的的升级。升级前原文章链接增加了更多的不同码长,不同码率,不同信道对LDPC译码性能的影响,并增加了BCH编译码的对比。matlab2022a仿真结果如下…

从门面模式到 SLF4J 及其 getLogger 方法原理

基于以下内容总结:从门面模式到 Slf4j、10 分钟讲清楚 Java SLF4J,Java 日志框架的扛把子,从原理到实践写后端接口的时候,先写一个 Service 接口,这个 Service 接口的实现中可能会调用多个其他 Service 或 Mapper 方法来实现某个业务,对于 Controller,只需要传递参数给 …

java学习10.25企业ERP生产计划管理系统(20分)

今天成功的把这个项目写好了,就是文档中的一些具体的需求比较难写(由于之前没写过) 所以项目能完成基本的增删改查和浏览操作。 使用技术栈 mybatis+thymeleft+mysql 比较复杂,写的东西比较多,以后学了springboot会更简便一些 整体架构具体页面源代码 通过百度网盘分享的文…

vscode怎么配置C语言环境

# vscode怎么配置C语言环境 在配置Visual Studio Code(VSCode)以支持C语言环境时,主要步骤包括安装C/C++扩展、配置编译器、设置调试环境。这些步骤确保了开发者可以在VSCode中高效地编写、编译和调试C语言代码。接下来,我们将详细讨论如何完成这些配置步骤。 ## 一、安装C…

Anaconda + Vscode 和 Anaconda + Pycharm安装操作教程以及问题解决

1.anaconda安装 2.打不开Anaconda Navigation 解决办法 3.如何创建虚拟环境(2种方法) 4.Anaconda+vscode 5.Anaconda+pycharm Anaconda + Vscode 和 Anaconda + Pycharm安装操作教程以及问题解决 1.anaconda安装Anaconda下载地址 我选的是2020,11的一个版本。 还没装之前电脑…

iframe有哪些加载事件

iframe的加载事件有以下几个:1、onload事件;2、onunload事件;3、onunload事件。onload事件是iframe加载完成后触发的事件。当嵌套的页面完全加载并准备好时,这个事件会被触发。开发者可以使用这个事件来执行与加载内容相关的操作,例如修改iframe的样式、内容或与其交互。一…

基于遗传算法的智能天线最佳阵列因子计算matlab仿真

1.课题概述基于遗传算法的智能天线最佳阵列因子计算。智能天线技术利用自适应阵列处理技术改善无线通信系统的性能,尤其是提高接收信号质量、抑制干扰和增强定位能力。在智能天线的设计中,阵列因子(也称加权向量或波束形成向量)的选择至关重要,它直接影响了阵列的方向性和…

网络科技和信息科技的区别是什么

​​网络科技和信息科技的区别:1.定义与侧重点不同;2.应用领域不同;3.技术内容不同;4.专业知识和技能要求不同。网络科技更多关注于数据传输、网络通信、以及基于互联网的各种服务和应用的开发,而信息科技则包括了信息的收集、处理、存储、传递、分析和使用。1.定义与侧重…

基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)贝叶斯优化过程 贝叶斯优化后的CNN训练和识别结果 标准的CNN的识别结果 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)% 使用贝叶斯优化算法确定最优的批次大小和学习率 [MBsize,…

.obj file format limit

.obj 文件保存的内容非常有限:顶点、纹理坐标(最多一套)、法线、三角面;它不支持顶点色、多套纹理坐标(uv2, uv3)、TANGENT、BINORMAL、骨骼权重。 搜索某度,被其内容所误导,花费不少时间 搜索.obj文件支持多套纹理坐标方式,未果!后在Blender中尝试导出带有2套纹理坐标的…