C语言:刷题日志(3)

一.猴子选大王

一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

输入格式:

输入在一行中给一个正整数N(≤1000)。

输出格式:

在一行中输出当选猴王的编号。

输入样例:

11

输出样例:

7

代码讲解: 

根据题目我们知道有n个猴子要选大王,从第一个开始报数,报到3时,去掉报3的这只猴子,之后下一个猴子重新从1开始报数,报到3的猴子再被淘汰,直到剩最后一只猴子,这只猴子就是猴王。既然这样我们以输入样例11举例,让我们来看看下面这张流程图。

我们将11只猴子设置为编号1-11号,从1号开始报数,报到3的被去掉,直到剩余最后一个猴子,最后我们发现最后的猴王是7号猴子,而我们要的结果也是7号,所以我们知道我们的流程是没有问题的,既然没有问题,那我们该如何用代码实现呢?我们发现在流程图中我们将猴子设为编号,并将报到3的猴子去掉,但在代码中其实我们可以将所有的猴子设为1,将去掉的猴子设为0,之后设置一个计数器每有一个等于1的猴子,count++,当count=3时,就将这个位置的猴子设为0,并将count重新赋值为0,并将猴子的个数减一(注意要设置一个变量存放猴子的总数,防止在循环中猴子的总数被改变),最后当猴子的数为1时,退出循环,(说明找到了猴王),因为只有最后一个数没有被改变,所以利用这个条件,打印猴王的编号。

#include<stdio.h>
int main()
{int n=0;scanf("%d",&n);int i=1;int count=0;int arr[1001]={0};for(i=1;i<=n;i++){arr[i]=1;}int num=n;while(num!=1){for(i=1;i<=n;i++){if(arr[i]==1){count++;}if(count==3){arr[i]=0;count=0;num--;}}}for(i=1;i<=n;i++){if(arr[i]==1){printf("%d",i);}}return 0;
}

二. 说反话-加强版

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

输入样例:

Hello World   Here I Come

输出样例:

Come I Here World Hello

代码讲解: 

首先,我们先建立一个数组用来存放字符串,再用gets和strlen函数得到字符串和长度,之后我们将字符串倒序查找,当遇到空格并且计数器的值不为0时,在相对于查找顺序倒着打印,所以我们要将打印的首下标设为当前查找地址的前一位(下标大的,因为是倒着打印下标有大到小),当然条件也要设为小于等于当前下标加上个数的值,最后再打印。当然,打印完我们要重新进行计数,所以要将计数器重新赋值为0,得到下一个字符串的长度。然而,我们要保证单词间只有1个空格,所以如果遇到多余的空格,只有当我们找到下一个不为空格的数时才会打印空格,这样就保证只会打印一个空格。当然我们的下标到0时就可以直接打印字符串了。

#include<stdio.h>
#include<string.h>
int main()
{char arr[500001] = {'0'};int i, j, count = 0;gets(arr);int sz = strlen(arr);for (i = sz - 1; i >= 0; i--){if (arr[i] == ' '&&count!=0){for (j = i + 1; j<= count + i ; j++){printf("%c", arr[j]);}count = 0;while (arr[i] == ' ' && i >= 0){i--;if (arr[i] != ' ' && i > 0){printf(" ");}}}if (arr[i] != ' '&&i>=0){count++;}if (i == 0){for (j = 0; j < count; j++){printf("%c", arr[j]);}}}return 0;
}

三.有理数加法 

本题要求编写程序,计算两个有理数的和。

输入格式:

输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

1/3 1/6

输出样例1:

1/2

输入样例2:

4/3 2/3

输出样例2:

2

代码讲解:

根据题目要求我们要输入四个数两两组合代表一个分数,并将这两个分数相加并约分,所以我们知道,约分就是求最大公约数,我们可以利用辗转相除法,但这题的难点是如何将两个分数相加,而现在我们有一种方法,我们可以根据输入样例来证明一下:

1/3 和 1/6

即ret1 =1*6+1*3

    ret2=3*6

ret1/ret2=9/18

约分ret1/ret2=1/2

所以我们发现如果我们要求两个分数相加我们可以让第一个的分子和第二个的分母相乘再加上第二个的分子和第一个的分母相乘,然后再除上第一个分母和第二个分母相乘的结果。这样我们就能求出两个分数相加的结果,最后利用最大公约数去约分,得到的数就是所求的结果。

#include<stdio.h>
int main()
{int a1,a2,b1,b2,a,b;scanf("%d/%d %d/%d",&a1,&b1,&a2,&b2);int ret1=0,ret2=0;int r=0;ret1=a1*b2+a2*b1;ret2=b1*b2;a=ret1;b=ret2;while( r=ret2%ret1){ret2=ret1;ret1=r;}a/=ret1;b/=ret1;if(b==1){printf("%d",a);}else{printf("%d/%d",a,b);}return 0;
}

四.有理数均值

本题要求编写程序,计算N个有理数的平均值。

输入格式:

输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。

输出格式:

在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

输入样例1:

4
1/2 1/6 3/6 -5/10

输出样例1:

1/6

输入样例2:

2
4/3 2/3

输出样例2:

1

代码讲解:

根据题目我们知道,他是要我们求所有分数的和并将他进行约分。首先,根据上一题我们知道如何去求分数的和,但现在让我们求多个分数的和,其实可以运用循环把他当成两个分数求完和之后和下一个分数再求和,所以我们要将第一个分数的值给一个变量,当然再进行相加时,我们要防止分母得0的情况,当将两个分数求完和之后我们就要直接进行求最大公约数并进行约分,这是为了防止所有数加完之后会溢出的情况,当然求最大公约数前我们要将sum1和sum2赋给其他变量,这是为了防止经过辗转相除后sum1和sum2的值发生改变,当求完所有分数相加后的结果后,我们就要进行求均值了,其实对于求均值我们完全可以将分母乘以他的个数,然后再进行约分处理,当然我们还是要将所有分数相加约分完后的分子分母赋给其他变量,防止经过辗转相除后值的发生改变,最后根据题目要求,我们知道若分母为1,则只输出分子,如果是负数,则负号一定出现在最前面,所以我们可以利用if语句进行判断如果分母为零时就只打印分子,当分母为负数时,就让分子和分母同时乘上负1,除此之外就可以直接进行打印。

#include<stdio.h>
int main()
{int a[100],b[100], n,i, sum1, sum2, r=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d/%d",&a[i],&b[i]);}sum1=a[0]; sum2=b[0];for(i=1;i<n;i++){if(b[0]!=0){sum1=sum1*b[i]+sum2*a[i];sum2*=b[i];}int ret1=sum1;int ret2=sum2;while( ret2){r=ret1%ret2;ret1=ret2;ret2=r;}sum1/=ret1;sum2/=ret1;}sum2*=n;int ret3=sum1;int ret4=sum2;while( ret4){r=ret3%ret4;ret3=ret4;ret4=r;}sum1/=ret3;sum2/=ret3;if(sum2==1){printf("%d\n",sum1);}else if(sum2<0){printf("%d/%d",sum1*(-1),sum2*(-1));}else{printf("%d/%d\n",sum1,sum2);}return 0;
}

五.字符串的冒泡排序

本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。

输入格式:

输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。

输出格式:

输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。

输入样例:

6 2
best
cat
east
a
free
day

输出样例:

best
a
cat
day
east
free

代码讲解:

 根据题目我们知道它要求我们输入n个字符串,并对它进行k次排序,首先我们创建一个数组用来存放字符串,利用循环和gets函数输入n次字符串,之后我们再利用冒泡排序,当然对于字符串的比较我们要利用strcmp函数,大于返回大于0的数,等于返回0,小于返回小于0的数,对于字符串的交换我们还要利用strcpy函数将字符串拷贝的创建的tmp数组里,再进行交换处理。当然,最后要记得设置打印条件当i==k-1时,即循环几次后才能进行打印字符串。

#include<stdio.h>
#include<string.h>
int main()
{int n,k,i,j;scanf("%d %d\n",&n,&k);char arr[100][11];for(i=0;i<n;i++){gets(arr[i]);}for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++){if(strcmp(arr[j],arr[j+1])>0){char tmp[11];strcpy(tmp,arr[j]);strcpy(arr[j],arr[j+1]);strcpy(arr[j+1],tmp);}}if(i==k-1){for(i=0;i<n;i++){puts(arr[i]);}break;}}return 0;
}

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

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

相关文章

打造高效实时数仓,从Hive到OceanBase的经验分享

本文作者&#xff1a;Coolmoon1202&#xff0c;大数据高级工程师&#xff0c;专注于高性能软件架构设计 我们的业务主要围绕出行领域&#xff0c;鉴于初期采用的数据仓库方案面临高延迟、低效率等挑战&#xff0c;我们踏上了探索新数仓解决方案的征途。本文分享了我们在方案筛选…

基本mysql

基础sql语句 关于数据库 创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] database_name [CHARACTER SET charset_name] [COLLATE collation_name]; [ ] 代表可选 database_name 是你想要创建的数据库的名称。CHARACTER SET 可选&#xff…

一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention

一区霜冰算法双向深度学习模型注意力机制&#xff01;RIME-BiTCN-BiGRU-Attention 目录 一区霜冰算法双向深度学习模型注意力机制&#xff01;RIME-BiTCN-BiGRU-Attention效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现RIME-BiTCN-BiGRU-Attention霜冰算法…

nlohmann::json中有中文时调用dump转string抛出异常的问题

问题描述 Winodows下C开发想使用一个json库&#xff0c;使用的nlohmann::json&#xff0c;但是遇到json中使用中文时&#xff0c;转成string&#xff0c;会抛出异常。 nlohmann::json contentJson;contentJson["chinese"] "哈哈哈";std::string test con…

K-means 算法的介绍与应用

目录 引言 K-means 算法的基本原理 表格总结&#xff1a;K-means 算法的主要步骤 K-means 算法的 MATLAB 实现 优化方法与改进 K-means 算法的应用领域 表格总结&#xff1a;K-means 算法的主要应用领域 结论 引言 K-means 算法是一种经典的基于距离的聚类算法&#xff…

气膜馆电费高吗?—轻空间

很多人关心气膜馆的电费问题&#xff0c;实际上&#xff0c;气膜馆不仅电费不高&#xff0c;还具有显著的节能优势。气膜建筑在设计上充分考虑了能耗管理&#xff0c;具备以下几大特点&#xff1a; 1. 高效保温隔热&#xff0c;减少能耗 气膜馆采用特殊材料和结构设计&#xf…

力扣100题——贪心算法

概述 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在解决问题时&#xff0c;按照某种标准在每一步都选择当前最优解&#xff08;局部最优解&#xff09;的算法。它期望通过一系列局部最优解的选择&#xff0c;最终能够得到全局最优解。 贪心算法的核心思想 贪心算…

【Colab代码调试】End-to-end reproducible AI pipelines in radiology using the cloud

文章目录 报错MessageError: Error: credential propagation was unsuccessful解决办法原理 找不到GPU解决办法 关于文件结构RTSTRUCT是什么nrrd是什么格式 !gcloud config set project $GCP_PROJECT_ID报错Access Denied: User does not have bigquery.jobs.create permission…

C# 比较对象新思路,利用反射技术打造更灵活的比较工具

前言 嘿&#xff0c;大家好&#xff01;如果你之前看过我分享的文章《C# 7个方法比较两个对象是否相等》&#xff0c;你可能会意识到对象比较在实际业务中经常出现的场景。今天&#xff0c;我想继续与大家分享一个在实际项目中遇到的问题。 有一次&#xff0c;我接手了一个别…

个人健康信息系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;健康分析师管理&#xff0c;健康手册管理&#xff0c;健康饮食管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;健康手册&#xff0c;健康饮食&…

从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来

9月10日凌晨1点&#xff0c;苹果新品发布会如期举行&#xff0c;全新iPhone16系列成为苹果生态中真正意义上的第一款原生AI手机&#xff0c;在第二代3nm工艺A18和A18 Pro芯片的加持下&#xff0c;iPhone16系列能够容纳并快速运行以Apple Intelligence为中心的生成式AI功能在手机…

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组&#xff08;变成类似list列表的形状&#xff09;重复一个数组——np.tile 分组聚集——pandas.…

从“游戏科学”到玄机科技:《黑神话:悟空》的视角打开动漫宇宙

近日&#xff0c;中国游戏界迎来了一场前所未有的盛事——由游戏科学公司开发的《黑神话&#xff1a;悟空》正式上线&#xff0c;并迅速成为全球玩家热议的焦点。在居高不下的讨论热度中&#xff0c;有人说他的成功在于对《西游记》为背景进行改编&#xff0c;对原著进行了分析…

数据分析与挖掘课程相关资源

这是在gitee上整的关于这门课的一个开源项目。 https://gitee.com/rainpet/python-data-analysis-and-mining-demo 头歌平台。 常见问题&#xff1a; 1、如何确认conda的版本&#xff0c;执行如下命令&#xff1a; conda list anaconda$2、实验室登陆后&#xff0c;无法上网&a…

基于Java+SpringBoot+Vue+MySQL的智能菜谱推荐管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的智能菜谱推荐管理系统【附源码文档】、…

“汉语新解” Prompt新高度,火爆的李继刚

“汉语新解” prompt 是由李继刚设计的一个用于启发人工智能模型进行创意性文本生成的指令模板。这个 prompt 的设计初衷是为了让AI能够以一种独特的方式解析和重新诠释常见的中文词汇&#xff0c;从而产生出具有深刻洞察力和幽默感的文本内容&#xff0c;仿佛是由鲁迅或林语堂…

装杯 之 Linux 指令1

hello&#xff0c;欢迎来到linux世界&#xff0c;在害没有学习linux时&#xff0c;看到别人操作&#xff0c;网课&#xff0c;真高级&#xff0c;感觉好厉害&#xff0c;就是说白了&#xff0c;看起来牛逼。ok&#xff0c;接下来&#xff0c;请大佬们进入linux之旅。 1.ls指令…

mfc140u.dll错误是什么情况?如何将mfc140u.dll丢失的解决方法详细分析

mfc140u.dll是 Microsoft Foundation Class (MFC) 库的一部分&#xff0c;通常与 Visual Studio 2015 及其后续版本相关联。如果系统中缺少 mfc140u.dll&#xff0c;可能会导致依赖该库的应用程序无法启动&#xff0c;并显示错误消息&#xff0c;如“程序无法启动&#xff0c;因…

分类预测|基于麻雀优化支持向量机的Adaboost集成的数据分类预测Matlab程序SSA-SVM-Adaboost

分类预测|基于麻雀优化支持向量机的Adaboost集成的数据分类预测Matlab程序SSA-SVM-Adaboost 文章目录 一、基本原理SSA-SVM-Adaboost 分类预测原理和流程总结 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 SSA-SVM-Adaboost 分类预测原理和流程 1. 麻雀优化算…

开源FormCreate低代码表单组件的配置项和事件的详解

在使用开源FormCreate低代码表单时&#xff0c;您可以通过各种 props 来定制表单的行为和外观。这些参数允许您控制表单的生成规则、配置选项、双向数据绑定等&#xff0c;为复杂的表单场景提供了强大的支持。 源码地址: Github | Gitee FormCreate组件Props 以下是常用的 pr…