有趣的C语言——我的C语言之路

记录一下关于C语言竞赛重刷的例题,有些真的很有意思,如果你觉得特别简单,那说明你很牛,小弟我甘拜下风!! 勿喷 勿喷,仅记录学习历程(有些特别基础的就不弄了,弄一些我觉得处理方法很特别的,如果你有更简单、更特别的方法,还请不吝赐教吗?)

例1

  第一行 13

  第二行 1113

  第三行 3113

  第四行 132113

  第五行 1113122113

规律:第一行的数字任意,第二行的数字是对第一行的数字读出来的,比如第二行,是对一行的描述,意思是,1个1,1个3,所以是1113,第三行,意思是:3个1,1个3,所以是3113。

要求:第一行输入一个任意数,不超过100位;

第二行输入一个不大于20的数,表示你要连续多少次。

示例: 5   

            7

输出   13211321322115

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(int argc, char *argv[])
{// 请在此输入您的代码char a[20][10001];int n,i,j,k,x,sum;gets(a[0]);scanf("%d",&n);for(i=0;i<n;i++){x=0;j=0;while(j<strlen(a[i])){sum=1;for(k=j+1;k<strlen(a[i]);k++){if(a[i][k]==a[i][j])    sum++;else    break;}a[i+1][x++]=sum+48;a[i+1][x++]=a[i][j];j+=sum;}}for(i=0;i<strlen(a[n]);i++){printf("%c",a[n][i]);}return 0;
}

例2

构造螺旋方阵,输入螺旋方阵的n行m列,在随机输入两个数,显示螺旋方阵对应的数值。(学艺不精啊!困扰我好久)

#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{int n, m, r, c;scanf("%d %d", &n, &m);scanf("%d %d", &r, &c);int a[1000][1000];int count = 0;int num = 1;int i = 0;int j = 0;int circle=0;while(count<m*n){while(j<m-circle){if(i==0&&j==0){a[i][j]=num;j++;num++;count++;}else{a[i][j++]=num;num++;count++;}}j--;i++;while(i<n-circle){a[i++][j]=num;num++;count++;}i--;j--;while(j>=circle){a[i][j--]=num;num++;count++;}j++;i--;while(i>circle){a[i--][j]=num;num++;count++;}i++;j++;circle++;}printf("%d",a[r-1][c-1]);return 0;
}

例3

系统自动匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人的积分小于或大于K,系统都不会将他们匹配,现在共有N名用户,以及他们的积分分别是A1、A2、A3、、、AN。求有多少名用户在线寻找对手,但是系统却一场对局都匹配不起来(任意两名用户积分差都不等于K)?(这儿也是,搞半天没搞出来)

#include <stdio.h>
#include <stdlib.h>
# define N 100010
int cnt[N];
int main(int argc, char* argv[])
{int n, K, Max = 0;scanf("%d%d", &n,&K);for (int i = 0; i < n; ++i){int a;scanf("%d", &a);cnt[a]++;//表示a积分的人数Max = (Max > a) ? Max : a;//找出最高的积分}int math = 0;//math表示可以互选匹配的组数,不理解的话可以用k=0的情况,然后把题目的信息带入理解for (int i = 0; i + K <= Max; ++i)//k不等于0的情况{while (K && cnt[i] && cnt[i + K])//i的积分和i+k的积分之差就等于k{math++;//有一组能匹配就++,直到其中一个积分的人数为0,然后进行下一组匹配cnt[i]--;cnt[i + K]--;}}for (int i = 0; i <= Max; ++i){while (!K && cnt[i] >= 2){math += cnt[i] - 1;cnt[i] = 1;}}printf("%d", (n - math));return 0;
}

例4

给定一组分数,去掉与其余的分数平均值相差最远的那个分数(即”最离群“的分数)

#include <stdio.h>
#include <stdlib.h>
double score(double x[], int n)
{int i,j;double dif = -1;double bad;for(i=0; i<n; i++){double sum = 0;for(j=0; j<n; j++){if(j!=i) sum += x[j];     //计算去掉当前值后的总分}double t = x[i] - sum / (n-1);   //当前值减去其余分数的平均值if(t<0) t = -t;        //若计算的值比平均值小,则将其转换为正数if(t>dif)              /*将第一个值赋给dif,并判断依次去掉其余值时,与其他值的平均分差值进行比较*/{dif = t;bad = x[i];printf("%d, %f\n", i, x[i]);}}return bad;
}
int main(int argc, char* argv[])
{double x[] = {40,20,30,10,60};printf("%f\n", score(x,5));return 0;
}

例5

卖苹果,父亲把2520个苹果分别分给6个儿子,每个儿子手里分到的苹果数都不相同,父亲说,老大,把你的苹果分1/8给老二。老二连同原来的苹果分1/7给老三,老三连同原来的苹果分1/6给老四,老四连同原来的苹果分1/5给老五,老五连同原来的苹果分1/4给老六,老六再连同原来的苹果分1/3给老大。这样六个儿子手中的苹果数就相同了。求原来六个儿子手中的苹果数。(最想吐槽的就是这个,脑子没长出来,头发掉了不少)

#include "stdio.h"
void main()
{int x[7], y[7], s, i;s = 2520 / 6; 										/*求出平均每个人要分多少个苹果*/for (i = 2; i <= 6; i++)/*求从老二到老六得到哥哥分来的苹果却未分给弟弟时的苹果数*/y[i] = s * (9 - i) / (8 - i);y[1] = x[1] = (s - y[6] / 3) * 8 / 7;/*老大得到老六分来的苹果却未分给弟弟时的苹果数*/for (i = 2; i <= 6; i++)x[i] = y[i] - y[i - 1] / (10 - i);				/*求原来每人得到的苹果数*/for (i = 1; i <= 6; i++)printf("x[%d]=%d\n", i, x[i]);					/*将最终结果输出*/
}

例6

Excel 单元格的地址表示很有趣,它使用字母来表示列号比匕如,

A 表示第 1列,

B 表示第 2 列

Z 表示第 26 列

AA 表示第 27 列

AB 表示第 28 列

BA 表示第 53 列,

当然 Excel 的最大列号是有限度的,所以转换起来不难,

如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?

本题目即是要求对输入的数字,输出其对应的 Excel 地址表示方式。

输入描述

输入一个整数 n,其范围[1,2147483647]。

输出描述

输出 n 对应的 Excel 地址表示方式。(这个也是个刺头儿)

#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{long long int n;scanf("%lld",&n);char a[100];int i=0;while(n>0){int p=n%26;if(p==0){a[i++]='Z';n=n/26-1;}else{a[i++]='A'+p-1;n=n/26;}}for(int j=i-1;j>=0;j--){printf("%c",a[j]);}return 0;
}

例7

小蓝有n瓶汽水,他每喝完一瓶汽水就把瓶盖保存起来,k(k>1)个瓶盖可以换一瓶新的汽水,那么小蓝最后最多能喝多少瓶汽水?(这个不难,就是当时没想出来)

#include <stdio.h>
int func(int n,int k)
{
if (n < k)
{return n;
}
else
{return n-n%k  + func(n % k + n / k, k);   //递归思想
}
}
int main()
{int n,k;scanf("%d %d\n",&n,&k);int sum;sum=func(n,k);printf("%d",sum);return 0;
}

例8
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
输入格式
第一行为n(0<n<20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩,中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。
输出
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。(第一次用结构体)

输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
输出
Joey 92
Hanmeimei 90
Kitty 80
Tim 28

#include<stdio.h>
struct node
{  //定义结构体保存姓名和成绩int exam;char name[20];
}stu[20],temp;
int main()
{  int n, j, i;scanf("%d\n", &n);for (i = 0;i <= n - 1;i++) //循环保存所有人scanf("%s %d", &stu[i].name, &stu[i].exam);for (i = 0;i <= n - 1;i++)for (j = i + 1;j <= n - 1;j++)if (stu[i].exam < stu[j].exam){ //成绩降序排序temp = stu[i];stu[i] = stu[j];stu[j] = temp;}else if((stu[i].exam == stu[j].exam) && (stu[i].name > stu[j].name)){ //姓名升序排序temp = stu[i];stu[i] = stu[j];stu[j] = temp;}for (i = 0;i <= n - 1;i++) //打印结果printf("%s %d\n", stu[i].name, stu[i].exam);return 0;
}

与C语言相见恨晚,妄图成为C大佬的菜鸟
 

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

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

相关文章

Docker 中运行的 MySQL 数据库与 Docker 外部的管理系统连接

步骤 1&#xff1a;运行 MySQL 容器 首先&#xff0c;确保你的 Docker 容器中运行了 MySQL 数据库。 docker run --name mysql-container -e MYSQL_ROOT_PASSWORDmy-secret-pw -d -p 3306:3306 mysql:latest--name mysql-container 为容器命名。-e MYSQL_ROOT_PASSWORDmy-sec…

python3 -m http.server 检查打包前端的项目

python3 -m http.server这是 Python 提供的一个内置的简单 HTTP 服务器。当你在终端中运行 python3 -m http.server 命令时(在对应的打包目录比如dist目录)&#xff0c;Python 会启动一个 HTTP 服务器&#xff0c;它会将当前工作目录下的文件作为静态文件提供给浏览器。这个服务…

LabVIEW软件开发人员的核心能力是什么

LabVIEW软件开发人员的核心能力包括以下几个方面&#xff1a; 1. LabVIEW编程技能 熟练掌握LabVIEW编程语言&#xff1a;包括虚拟仪器&#xff08;VI&#xff09;的创建、数据流编程、图形化编程技巧等。 模块化编程&#xff1a;能够设计和实现模块化的代码结构&#xff0c;便…

python数据分析——正则化

参考资料&#xff1a;活用pandas库 正则化旨在解决模型的过拟合问题。 在实际中&#xff0c;可能存在模型的训练分数很好&#xff0c;而测试分数却很低&#xff0c;这说明模型出现了过拟合问题。正则化通过对系数和变量施加约束来解决模型过拟合的问题。这会导致数据的系数变小…

数据结构与算法之计数排序

目录 前言 计数排序 定义 优缺点 策略 图解 代码实现 结束语 前言 今天是坚持写博客的第20天&#xff0c;时光飞逝&#xff0c;第二个10天即将过去&#xff0c;希望可以继续坚持&#xff0c;光明的未来也在未来等着我们。今天也恰逢高考&#xff0c;祝所有学子一帆风顺…

【DevOps】掌握 Helm:Kubernetes 应用程序部署指南

目录 一、前言 二、什么是 Helm&#xff1f; 三、Helm 的优势 四、Helm 组件 五、安装和配置 Helm 1、先决条件 2、安装 Helm 客户端 3、初始化 Helm 4、添加 Helm Charts 存储库 5、搜索和安装应用程序 5.1、搜索 Helm Charts 5.2、安装应用程序 5.3、自定义应用程…

echarts的toolbox自定义feature标签及事件

1. 需求 在使用echarts图时希望toolbox扩展一些自定义icon和点击事件&#xff0c;而不只是图中这些echarts提供的事件。 2. 文档 属性名类型描述toolbox.featureObject各工具配置项。 feature中除了echarts提供的各个内置的工具按钮外&#xff0c;可以自定义工具按钮。 除…

电脑ip地址查询:快速定位你的网络位置(4种方法)

在互联网的浩瀚海洋中&#xff0c;每台联网的电脑都有一个独特的身份标识&#xff0c;那就是IP地址。无论是进行网络通信、定位问题还是安全防护&#xff0c;了解自己或他人的电脑IP地址都是非常关键的。那么&#xff0c;电脑ip地址查询怎么操作呢&#xff1f;本文将为你提供一…

学习笔记——路由网络基础——缺省(默认)路由

3、缺省(默认)路由 1、定义 缺省路由(默认路由)&#xff1a;是目的地址和掩码都为全0的特殊路由。全0代表任意网络。缺省路由在路由表中的形式为&#xff1a;0.0.0.0/0缺省路由也被叫默认路由。缺省路由优先级比直连路由低 缺省路由是一种特殊的路由&#xff0c;当报文没有在…

Facebook海外户Facebook广告被暂停的原因

有很多伙伴在Facebook广告时&#xff0c;有时会遇到账号被暂停&#xff0c;并通知你违反了哪些规则&#xff0c;那么Facebook广告被暂停的原因有哪些呢&#xff1f;今天小编详细梳理了一些原因&#xff0c;可以往下看哦~ 您的Facebook广告被暂停可能有以下几个原因&#xff1a…

Redis系列之淘汰策略介绍

Redis系列之淘汰策略介绍 文章目录 为什么需要Redis淘汰策略&#xff1f;Redis淘汰策略分类Redis数据淘汰流程源码验证淘汰流程Redis中的LRU算法Redis中的LFU算法 为什么需要Redis淘汰策略&#xff1f; 由于Redis内存是有大小的&#xff0c;当内存快满的时候&#xff0c;又没有…

【Qt】TreeWidget中Item的UserCheckable注意事项,没有出现多选框

1. 异常 开启 ItemIsUserCheckable以后&#xff0c;界面上没有出现多选框。 QTreeWidgetItem *item new QTreeWidgetItem();item->setText(0, "hello");item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsSelectable |Qt::ItemIsEnabled | Qt::ItemIsAuto…

AIGC 介绍与典型应用与亚马逊科技AIGC方案

1、AIGC ( 生成式人工智能 ) 是指可生成全新内容的人工智能技术 从字面意思来看&#xff0c;AIGC 是继 PGC&#xff0c;UGC 之后的新型内容创作方式&#xff0c;可以在创意、表现力、迭代、传播、个性化等方面&#xff0c;充分发挥技术优势&#xff0c;打造新的数字内容生成与…

AXI Quad SPI IP核AXI4接口下的三种操作模式

当选择Enable Performance Mode选项时&#xff0c;AXI4接口包括在内。在该模式下&#xff0c;IP核可以在增强模式下操作&#xff08;未选择启用XIP模式&#xff09;或XIP模式&#xff08;选择启用XIP模式&#xff09;。在性能模式下&#xff0c;AXI4接口用于在DTR和DRR位置的突…

力扣2106.摘水果

力扣2106.摘水果 在下标上做滑窗 二分出左边最远能取到的点j 自己写lowerbound (j,start)这个区间的水果数就是初值 如何判断一个区间是否合法 先往右走再往左走&#xff1a;fruit(right,0) - start fruit(right,0) - fruit(left,0);先往左走再往右走&#xff1a;start - fru…

ActiveMQ 介绍、下载、安装和控制台

ActiveMQ 介绍 Apache ActiveMQ 是一款非常成熟且功能全面的开源消息中间件&#xff0c;由Apache软件基金会维护。它遵循 Java Message Service (JMS) 规范&#xff0c;这意味着它提供了一组标准的 API&#xff0c;允许 Java 应用程序以一种标准化的方式发送和接收消息。 以下…

为何数据仓库需要“分层次”?

在数据驱动的商业世界中&#xff0c;数据仓库是企业决策的心脏。然而&#xff0c;一个高效、可扩展且易于管理的数据仓库&#xff0c;需要精心设计和构建。分层是构建数据仓库的关键策略之一。本文将探讨数据仓库分层的重要性以及它如何帮助企业更好地管理数据。 数据仓库分层…

操作系统期末填空、问答往年考试题总结

1、什么是文件目录&#xff1f;目录管理的要求有哪些&#xff1f; 文件目录是文件控制块FCB的有序集合&#xff0c;一个文件的文件名和对该文件实施控制管理的说明信息称为文件目录。 实现文件按名存取、提高对目录的检索速度、文件共享、允许文件重名。 2、什么是操作系统&…

游戏研发(策略+sass+回调模式)

前言 由于这边需要对接游戏研发后台,基本就是开服,封禁.角色日志等,但是每个游戏提供的接口都是不一样的,所以为了统一处理提前进行sass封装,以便后续可以更好的兼容 同时还涉及了多数据源的问题,因为有些日志太大不可能直接去http调用,会使用直接查询游戏研发的数据库方式这一…

前端修改接口返回测试工具 Inssman使用教程

之前用的requestly现在要登录才能用了&#xff0c;然后我又登录不上去&#xff0c;同事又推荐了个谷歌插件&#xff0c;试了下&#xff0c;挺好用&#xff0c;还不用登录&#xff0c;用法和之前差不多 下载网站&#xff1a;https://chromewebstore.google.com/detail/inssman-…