程序设计基础中可能出现的简单编程题2(以郑大为主体)

我们在学习编程过程中往往不仅有C语言实验报告,还有程序设计实验报告。程序设计这一科目主要是为了培养我们写代码时的计算思维,养成从问题到代码实现逐步分析,逐步深入的好习惯。前面有一篇文章介绍了部分程序设计实验报告中的编程题,今天再补充一些含新知识点的编程题,希望对大家有所帮助!

目录

1.构建一个函数int max(int xint y)求两个数的最大值,并通过该函数求任意三个整数的最大值。

2.通过函数调用,计算两个数的最小公倍数。

3.用递推法实现 cos(x)

4.用递归算法求:1+2+3+......+n。

5.用递归算法求数组元素的和。

6.用递归语句,计算x^n。其中,n是正整数。

7.用递归的方法实现十进制到八进制的转换。

8.将两个无序的一维数组排序,然后将其合并到一个一维数组中,仍保持数组有序。

9.输入一个分数,将其划为最简。例如:12/24 化简为 1/2。为了把分数约分为最简分式,首先计算分子和分母的最大公约数,然后分子和分母都除以最大公约数。求最大公约数的经典算法是Euclid算法方法如下:分别让变量m和n存储两个数的值。如果n为0,那么停止操作m中的值是最大公约数 (GCD) :否则计算m除以n的余数,把n保存到m并把余数保存到n中。然后重复上述过程,每次都先判定n是否为0。

10.有100个人围坐在一张圆桌边,座次为1~100,开始时第13座次的人先退席,以后每次数到第13个人退席,编写程序,给出退席顺序。


1.构建一个函数int max(int xint y)求两个数的最大值,并通过该函数求任意三个整数的最大值。
#include<stdio.h>
int max(int x,int y)
{if(x>y)return x;elsereturn y;
}
int main()
{int a,b,c,A,B,Max;scanf("%d%d%d",&a,&b,&c);A=max(a,b);B=max(b,c);Max=max(A,B);printf("最大值为:%d",Max);return 0;
}

这题没啥讲的,不过大家在建立变量的时候可以用max1,max2,这样意思更明确。

2.通过函数调用,计算两个数的最小公倍数。
#include<stdio.h>
int Lcm(int x,int y) 
{int ret=0,i=0;for(i=1;;i++){if((x*i)%y==0)//最好还是比较大小,用大的成i,这样运算更便捷 {ret=x*i;break;}}return ret;
}
int main()
{int a,b;scanf("%d%d",&a,&b);int min=Lcm(a,b);printf("最小公倍数是:%d",min);return 0;
}

这里唯一的知识点就是最小公倍数的求法。我这里是硬找出来,而注释中也说了可以先比较大小,用大的更快,大家可以想想为什么?(其实最小公倍数求法挺多的,大家可以多去了解几种)。

3.用递推法实现 cos(x)

#include <stdio.h>
#include <math.h>
int main()
{double sum=1;double item;int i=0;double x=0;printf("请输入所求x: ");scanf("%lf",&x);item=1;do{i++;item = -item*x*x/((2*i-1)*(2*i));sum+=item;}while(fabs(item)>=1e-5);printf("自定义余弦函数cos(%lf)=%.6lf,经循环次数i=%d\n",x,sum,i);return 0;
}

其实和第8题大差不差了,主要是公式不一样,然后这边用了一个fabs函数去求绝对值。大家可以多去了解了解C语言的库函数。😀

4.用递归算法求:1+2+3+......+n。
#include<stdio.h>
int Njie(int n)
{if(n<0){printf("输入错误,无法的到正确结果\n");return 0;}if(n==1)return 1; if(n>1){return n*Njie(n-1);	}
}
int main()
{int ret=0;int n=0;scanf("%d",&n);ret=Njie(n);printf("%d的阶乘为:%d",n,ret);return 0;
}

这题主要是多了递归算法的使用,而递归主要是要有一个结束条件,也可以叫做出口——要让程序能够从递归过程中出来,不然程序会一直运行,永远不会结束。当然,像阶乘这种一般是没有必要用递归,太占用资源,效率也不高。(具体原因和用法后面会细讲)

5.用递归算法求数组元素的和。
#include<stdio.h>
int Qiuhe(int arr[],int n)
{if(n==0)return arr[0];if(n!=0)return arr[n]+Qiuhe(arr,n-1);} 
int main()
{int arr[100000]={0};int n,i;printf("请确定数组元素个数:"); scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&arr[i]);}int ret=Qiuhe(arr,n);printf("%d",ret);return 0;
}

也是运用了递归思想,总之,这种只有多练才能比较敏锐发现结束条件和“套娃”模式。

6.用递归语句,计算x^n。其中,n是正整数。
#include<stdio.h>
int Pow(int x,int n)
{if(x==0)return 0;else{int result=1;if(n==0)return result;elsereturn result=x*Pow(x,n-1);}
}
int main()
{printf("这是一个计算数字n次方的程序,请输入你要计算的数字及其次方:");int x=0;int n=0;scanf("%d%d",&x,&n);int ret=Pow(x,n);printf("ret=%d",ret); return 0;
} 

没啥可说。

7.用递归的方法实现十进制到八进制的转换。
#include<stdio.h>
int SHIBA(int x,int y)
{int result;if(x==0){return 0;}else{return result=(x%8)*y+SHIBA(x/8,y*10);}
}
int main()
{int x=0;int y=1;printf("请输入你要转化为八进制数的十进制数:\n");scanf("%d",&x);int ret=SHIBA(x,y);printf("你所输入的数字对应八进制数为:%d",ret);return 0;
} 

这个函数递归就特别了一点——它有两个参数,而且同时发生变化。这就需要先对于十进制转八进制充分了解,然后观察变化的点,这样就能更容易写出。

8.将两个无序的一维数组排序,然后将其合并到一个一维数组中,仍保持数组有序。
#include<stdio.h>
void Bubble_Sort(int*arr,int sz)
{int i=0;for(i=0;i<sz;i++){int j=0;for(j=0;j<sz-i;j++){if(*(arr+i)>*(arr+i+j)){int tmp=*(arr+i);*(arr+i)=*(arr+i+j);*(arr+i+j)=tmp;}}}
}
int main()
{int arr1[5]={1,7,5,3,9};int arr2[5]={2,4,8,10,6};int arr3[10]={0};int sz1=sizeof(arr1)/sizeof(arr1[0]);Bubble_Sort(arr1,sz1);int sz2=sizeof(arr2)/sizeof(arr2[0]);Bubble_Sort(arr2,sz2);int i=0;for(i=0;i<sz1;i++){printf("%d ",arr1[i]);}printf("\n");for(i=0;i<sz2;i++){printf("%d ",arr2[i]);}printf("\n");int sz=sz1+sz2;for(i=0;i<sz1;i++){arr3[i]=arr1[i];}for(i=sz1;i<sz;i++){arr3[i]=arr2[i-sz1];	}Bubble_Sort(arr3,sz);for(i=0;i<sz;i++){printf("%d ",arr3[i]);}return 0;
}

这题第一次提出了对于整个数组进行排序的要求,于是就引入了冒泡排序的算法,大家可以参照代码仔细品品。然后对于两个数组合为一个,我这里采用的是物理合并——建立新的数组,直接把一个个数据放进去,最后用冒泡排序再排一遍。当然大家也可以用指针再第一个数组后面续第二个数组,总之,还是那句话,多多思考,反复实验。

9.输入一个分数,将其划为最简。例如:12/24 化简为 1/2。为了把分数约分为最简分式,首先计算分子和分母的最大公约数,然后分子和分母都除以最大公约数。求最大公约数的经典算法是Euclid算法方法如下:分别让变量m和n存储两个数的值。如果n为0,那么停止操作m中的值是最大公约数 (GCD) :否则计算m除以n的余数,把n保存到m并把余数保存到n中。然后重复上述过程,每次都先判定n是否为0。
#include<stdio.h>
void FenZiMuJian(int*pa,int*pb)
{int m=*pa;int n=*pb;int ret=0;m=(m>n?m:n);n=(m<n?m:n);while(n!=0){ret=m%n;m=n;n=ret;	}*pa/=m;*pb/=m;
}
int main()
{int a,b;printf("请输入分母的值a:");scanf("%d",&a);printf("请输入分子的值b:");scanf("%d",&b);FenZiMuJian(&a,&b);printf("化简后为:%d %d",a,b);return 0;
} 

这里求最大公约数的方法其实就是辗转相除法,大家可以去了解下这个算法,理解算法的本质。然后这里也是传递地址,从而直接在函数内部完成化简,算是和函数名相吻合吧。(ps:这个函数名倒是没有水准了,各位引以为戒😅)

10.有100个人围坐在一张圆桌边,座次为1~100,开始时第13座次的人先退席,以后每次数到第13个人退席,编写程序,给出退席顺序。
#include<stdio.h>
void Exit_Sum(int sum[],int n,int num)
{int i=0;int count=0;int exit=0;for(i=0;i<num;i++){sum[i]=i;}i=0;do{if(sum[i]=i){count++;if(count==n){sum[i]=-1;exit++;count=0;printf("退席%3d: %0d\n",exit,i);}}i=(i+1)%num;}while(exit<num);
}
int main()
{int sum[100]={0};int sz=sizeof(sum)/sizeof(sum[0]);int n=13;Exit_Sum(sum,n,sz);return 0;
}

这个是比较有名的圆桌问题,也是比较有趣味性。这里唯一强调的是i=(i+1)%100,它是因为圆桌问题一直在转,但是i是不能超过100的。当然这里的代码还是有瑕疵的,希望大家能够认真思考,有什么想法可以发在评论区,我们可以一同探讨。(当然,关于这一题,之后会有详细介绍)

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

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

相关文章

第二十章 -----多线程

20.1 线程简介 计算机完全可以将多种活动同时进行&#xff0c;这种思想在java中称为并发&#xff0c;将并发完成的每一件事情称为线程 线程的特点&#xff1a; 极小的单位 一个进程有很多个线程 线程共享进程的资源 20.2 创建线程 20.2.1 继承Thread类 Thread类是Java.l…

Python实现视频人脸检测识别功能

目录 一、引言 二、人脸检测识别技术概述 三、Python实现视频人脸检测识别功能的步骤 1、安装相关库和工具 2、加载视频文件 3、人脸检测和识别 4、保存视频结果 四、实验结果和讨论 五、结论 一、引言 在当今社会&#xff0c;人脸检测识别技术在安全监控、人机交互、…

全网日志智能聚合及问题根因分析

1 日志关联分析的挑战 随着各行各业数字化转型的不断深入&#xff0c;网络承载了人们日常生活所需的政务、金融、娱乐等多方面的业务系统&#xff0c;已经成为影响社会稳定运行、关系国计民生的重要基础设施资源。哪怕网络发生及其微小的故障&#xff0c;也可能带来难以估量的…

Java基础之原码,反码,补码,位运算符

文章目录 前言一、二进制在运算中介绍二、原码&#xff0c;反码&#xff0c;补码&#xff08;针对有符号的&#xff09;三、位运算符按位与&按位或 |按位异或 ^按位取反 ~算术右移>>算术左移<<逻辑右移>>> 总结 前言 原码&#xff0c;反码&#xff0…

【shell】文本三剑客之sed详解

目录 一、sed简介&#xff08;行编辑器&#xff09; 二、基本用法 三、sed脚本格式&#xff08;匹配地址 脚本命令&#xff09; 1、不给地址&#xff0c;那么就是针对全文处理 2、单地址&#xff0c;表示#&#xff0c;指定的行&#xff0c;$表示最后一行&#xff0c;/pattt…

牛客算法题 HJ100 等差数列 golang语言实现

算法题目 HJ100 等差数列 描述 等差数列 2&#xff0c;5&#xff0c;8&#xff0c;11&#xff0c;14。。。。 &#xff08;从 2 开始的 3 为公差的等差数列&#xff09; 输出求等差数列前n项和数据范围&#xff1a; 1 ≤ &#xfffd; ≤ 10001≤n≤1000 输入描述&#xff…

python与机器学习1,机器学习的一些基础知识概述(完善ing)

目录 1 AI ,ML,DL,NN 等等概念分类 1.1 人工智能、机器学习、深度学习、神经网络之间的关系&#xff1a; 1.2 人工智能的发展 2 ML机器学习的分类&#xff1a;SL, USL,RL 2.1 机器学习的分类 2.2 具体的应用举例 2.3 数据分类 3 关于阈值θ和偏移量b的由来 4 不同的激…

网站定制开发对企业的好处|软件app小程序搭建

网站定制开发对企业的好处|软件app小程序搭建 在当今数字化的时代&#xff0c;拥有一个专属于自己企业的网站已经成为了一种趋势。而与此同时&#xff0c;网站定制开发作为一种针对企业需求量身定制的解决方案&#xff0c;也越来越受到企业的关注和青睐。那么&#xff0c;网站定…

SSL证书实惠品牌——JoySSL

随着互联网的普及和发展&#xff0c;网络安全问题日益严重。为了保护网站数据的安全&#xff0c;越来越多的网站开始使用SSL证书。JoySSL证书作为一款高性价比的SSL证书&#xff0c;受到了广泛的关注和好评。 目前市面上主流的证书基本上都是国外证书&#xff0c;也就是说你在验…

HarmonyOS 后台任务管理开发指南上线!

为什么要使用后台任务&#xff1f;开发过程中如何选择合适的后台任务&#xff1f;后台任务申请时存在哪些约束与限制&#xff1f; 针对开发者使用后台任务中的疑问&#xff0c;我们上线了概念更明确、逻辑结构更清晰的后台任务开发指南&#xff0c;包含具体的使用场景、详细的开…

js实现鼠标拖拽

目录 css代码 html代码 js代码 完整代码 效果图&#xff1a; 需求&#xff1a; 鼠标在图片内按下时 图片可以跟随盒子动 鼠标弹起图片停下来 如果图片在box的盒子里面时鼠标弹起了 就把图片展示在box里面 并且让图片回到起始位置 css代码 .div {width: 100px;height: 10…

五分钟 k8s 实战-应用探针

Probe.png 今天进入 kubernetes 的运维部分&#xff08;并不是运维 kubernetes&#xff0c;而是运维应用&#xff09;&#xff0c;其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作&#xff0c;现在云原生将运维和研发关系变得更紧密了。 今天主要讲解 Probe 探针相…

C语言——I /深入理解指针(三)

一、字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* ; ⼀般使⽤: int main() { char ch w; char *pc &ch; *pc w; return 0; } 还有⼀种使⽤⽅式如下&#xff1a; int main() { const char* pstr "hello bit.";//这⾥是把⼀个字…

jquery 地址四级联级显示 不默认选择

代码效果 <body class"bgca"><img src"./files/joinTooBg.png" style"width: 100%;object-fit: cover;" alt""><!--填写申请资料--><section><div class"zi-liao"><h3 class"zong-h…

鸿蒙应用开发之打包与上架

一、概述 当您开发、调试完HarmonyOS应用/元服务&#xff0c;就可以前往AppGallery Connect申请上架&#xff0c;华为审核通过后&#xff0c;用户即可在华为应用市场获取您的HarmonyOS应用/元服务。 HarmonyOS会通过数字证书与Profile文件等签名信息来保证应用的完整性&#…

Vue3中props传参(多种数据类型传参方式)

在Vue3中&#xff0c;props接收的type类型有以下几种&#xff1a; 1. String&#xff1a;字符串类型 2. Number&#xff1a;数字类型 3. Boolean&#xff1a;布尔类型 4. Array&#xff1a;数组类型 5. Object&#xff1a;对象类型 6. Date&#xff1a;日期类型 7. Func…

第二证券:燃料电池产业进入发展快车道 多家公司披露布局进展

据悉&#xff0c;日前太原钢铁&#xff08;集团&#xff09;有限公司初次开发出超级超纯铁素体TFC22-X连接体材料并结束了批量供货&#xff0c;填补了国内空白。 燃料电池电堆连接体材料是行业中最为要害的战略材料。研发团队打破了特别元素含量精确操控的要害技术瓶颈&#x…

【智能算法】基于黄金正弦和混沌映射思想的改进减法优化器算法

减法优化器&#xff08;Subtraction-Average-Based Optimizer&#xff0c;SABO&#xff09;是2023年刚出的智能优化算法。目前知网中文期刊基本搜不到&#xff0c;并且可以遇见未来一年文章也很少。SABO算法原理简单&#xff0c;算上初始化粒子&#xff0c;总共不超过6个公式。…

AI 学习笔记(持续更新)

What is AI PS &#xff1a;代码块里的统一是 gpt4 回复 在大模型中 1 b 10 亿参数的含义 AI 目前是什么&#xff1f; 目前的人工智能&#xff08;AI&#xff09;是指使计算机和机器能够模仿人类智能的技术&#xff0c;包括学习、推理、解决问题、知觉、语言理解等能力。A…

【论文阅读笔记】Prompt-to-Prompt Image Editing with Cross-Attention Control

【论文阅读笔记】Prompt-to-Prompt Image Editing with Cross-Attention Control 个人理解思考基本信息摘要背景挑战方法结果 引言方法论结果讨论引用 个人理解 通过将caption的注意力图注入到目标caption注意力中影响去噪过程以一种直观和便于理解的形式通过修改交叉注意力的…