一些简单OJ:进制转换,报数字,刷快手。

一、字符串转换成十进制整数

1、题目描述:

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:

输入在一行中给出一个以#结束的非空字符串。

输出格式:

在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:

+-P-xf4+-1!#

输出样例:

-3905

2、题目分析:

  1. 正负判断,找到第一个十六进制数,寻找之前有没有‘-’;
  2. 找到所有十六进制数
  3. 转化为十进制数(字符转化为数字

3、代码解决:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main() {char str[80];char str2[80];fgets(str,80,stdin);int i = 0;int t = 0;int sum = 0;for (i = 0; str[i] != '#'; i++) {if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'a' && str[i] <= 'f') || (str[i] >= 'A' && str[i] <= 'F'))break;}for (int j = 0; j < i; j++) {if (str[j] == '-') {printf("-");break;}}for (i = 0; str[i] != '#'; i++) {if ((str[i] >= '0' && str[i] <= '9') || str[i] >= 'a' && str[i] <= 'f' || str[i] >= 'A' && str[i] <= 'F') {str2[t++] = str[i];}}str2[t] = '\0';for (int j = 0; j < t; j++) {if (str2[j] >= '0' && str2[j] <= '9')sum += (str2[j] - 48) * (int)pow(16, t - 1 - j);else if (str2[j] >= 'a' && str2[j] <= 'f')sum += (str2[j] - 97+10) * (int)pow(16, t - 1 - j);elsesum += (str2[j] - 65+10) * (int)pow(16, t - 1 - j);}printf("%d", sum);
}

4.总结反思:

  1. 判断符号是str[j]误用str[i];
  2. 0 的ascll码为 48 ;a 的ascll码为 97 ;A的ascll码为 65;
  3. 字符串储存在数组中末尾需要添加 ‘\0' ;

二、A + B Problem

1.题目描述

Calculate A + B.

输入格式

Each line will contain two integers A and B. Process to end of file.

输出格式

For each case, output A + B in one line.

Sample Input

1 1

Sample Output

2

2.代码呈现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int x[200] = { 0 }, y[200] = { 0 }, z[210] = { 0 };//将数组元素全部初始化为0
int main()
{char a[200], b[200];//把大数存储为字符串形式的数组 int len, len1, len2;//定义三个长度,后续用于存储字符串长度while (scanf("%s%s", a, b) != EOF) {//输入a,b字符串len1 = (int)strlen(a);//让len1为字符串a的长度,也就是大数a的位数len2 = (int)strlen(b);//让len2为字符串b的长度,也就是大数b的位数int i, j = 0, k = 0;//定义循环变量for (i = len1 - 1; i >= 0; i--)//让下标从长度最后一位开始循环,把大数倒序储存到数组中,即字符串为123456,则数组为654321{x[j] = a[i] - '0';//把数组a倒着储存在数组x中j++;//递减,然后循环,完成数组x倒叙储存数组a的操作}for (i = len2 - 1; i >= 0; i--)//以同样的方法,将数组b倒叙储存为数组y {y[k] = b[i] - '0';k++;}if (len1 > len2)//比较数组长度(也就是大数大小);让len等于最长的长度len = len1;elselen = len2;i = 0;//从最低位(个位)开始进行计算int m = 0;for (i = 0; i < len; i++)//循环相加并储存在新数组z中,短的len不够补0,也就是给原来的大数前加0(不影响大数大小) {z[i] = (x[i] + y[i] + m) % 10;//将所得数的个位存到数组z[i]中去if (x[i] + y[i] + m >= 10)//判断两个位上的数相加是不是超过10,如果过了,就进1,没过,就不进m = 1;//加在下一次循环中,类似于过10进1;elsem = 0;}if (x[i - 1] + y[i - 1] + m >= 10)//判断运算的最大位的和是否>=10 z[i] = 1;//数组为i位时,下标是从0到i-1,如果最大一位的和过10了,就多一位数组元素存放过10进的1elsei = i - 1;//如果没过,最大位就是i-1for (; i >= 0; i--)//让数组下标从小到大循环输出,倒序输出数组zprintf("%d", z[i]);printf("\n");}return 0;
}

三: 你今天刷快手了吗

1.题目描述

输入格式:

在第一行给两个整数n和m(1≤n≤1000,0≤m≤10^4),n代表你们班上的人数,m代表数据的条数,接下来m行每行给一组数据,格式为:学号 进入时间 退出时间,你们班的学号为从0~n-1编号并且为三位数。题目保证给出的所有时间均是同一天之内的。

输出格式:

将每个同学一天中刷快手的总时间从小到大排序输出(若出现并列情况,则按学号从小到大输出),输出格式为:学号 时间,最后输出最长的时间。

注:输出和输出的学号为三位数(不足三位补前导0),输出的时间格式为:00:00:00

输入样例1:

3 5
000 19:48:30 19:59:24
002 18:45:40 19:01:20
000 21:32:28 21:53:30
001 12:30:16 12:43:19
001 13:05:36 13:37:33

输出样例1:

001 00:45:00
000 00:31:56
002 00:15:40

输入样例2:

3 5
000 12:03:31 12:13:12
002 12:00:28 12:54:41
001 16:04:44 16:34:47
001 07:30:29 07:54:39
000 23:17:18 23:29:33

输出样例2:

001 00:54:13
002 00:54:13
000 00:21:56

2.代码呈现 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int time(int h1, int m1, int s1, int h2, int m2, int s2) {return (h2 * 60 * 60 + m2 * 60 + s2) - (h1 * 60 * 60 + m1 * 60 + s1);    //计算经过的总时长并统一为秒
}
int main() {int n, m;int k;int num;int temp;int h1, h2, m1, m2, s1, s2;int N[1000][2];int t = 0;int flag = 1;for (int i = 0; i < 1000; i++) {N[i][0] = i;                                 //下标为0记录学号N[i][1] = 0;                                 //下标为1记录时长}scanf("%d%d", &n, &m);if (m == 0) {                                    //0条记录特殊情况for (int i = 0; i < n; i++) {printf("%03d 00:00:00\n", i);}return 0;}for (int i = 0; i < m; i++) {scanf("%d", &num);scanf("%d:%d:%d", &h1, &m1, &s1);scanf("%d:%d:%d", &h2, &m2, &s2);for (int j = 0; j < t; j++)                  //是否已有记录的学号{if (num == N[j][0]) {N[j][1] += time(h1, m1, s1, h2, m2, s2);flag = 0;break;}}if (flag == 0) {                            //如果学号已记录跳过接下来记录的操作flag = 1;continue;}N[t][0] = num;                              //记录新学号和时长N[t][1] += time(h1, m1, s1, h2, m2, s2);t++;}for (int i = 0; i < t - 1; i++)                     //选择排序{k = i;for (int j = i + 1; j < t; j++){if (N[j][1] > N[k][1])                     {k = j;}if (N[j][1] == N[k][1]) {                  //相同时间按照学号排序if (N[j][0] < N[k][0])k = j;}}if (k != i){temp = N[k][1];                           //学号和时间交换N[k][1] = N[i][1];N[i][1] = temp;temp = N[k][0];N[k][0] = N[i][0];N[i][0] = temp;}}for (int i = 0; i < t; i++) {printf("%03d %02d:%02d:%02d\n", N[i][0], N[i][1] / 3600, N[i][1] / 60 % 60, N[i][1] % 60);}if (t < n) {for (int i = 0; i < n; i++) {for (int j = 0; j < t; j++) {                  //每有一个未记录的学号输出一条if (i == N[j][0])flag = 0;}if (flag == 1) {printf("%03d 00:00:00\n", i);}elseflag = 1;}}
}

四、顺时针矩阵 

1.题目描述

读入20内正整数正整数n,输出顺时针分布的矩阵。矩阵内容为1,2,。。。到n*n。

输入格式:

每个实例包含一个20内正整数。

输出格式:

顺时针分布的矩阵,每个数据占4位。

输入样例:

7

输出样例:

  19  20  21  22  23  24   118  37  38  39  40  25   217  36  47  48  41  26   316  35  46  49  42  27   415  34  45  44  43  28   514  33  32  31  30  29   613  12  11  10   9   8   7

2.代码呈现 

#include <stdio.h>
#include <stdlib.h>
int main()
{int n, ii, jj;scanf("%d", &n);int k = 1;int a[20][20];int i0, i1, j0, j1, x;i0 = 0; i1 = n - 1;j0 = 0; j1 = n - 1;for (x = 0; x <= n / 2; x++){for (ii = i0, jj = j1; ii <= i1; ii++){a[ii][jj] = k;k++;}for (jj = j1 - 1, ii = i1; jj >= j0; jj--){a[ii][jj] = k;k++;}for (ii = i1 - 1, jj = j0; ii >= i0; ii--){a[ii][jj] = k;k++;}for (ii = i0, jj = j0 + 1; jj <= j1 - 1; jj++){a[ii][jj] = k;k++;}i0 = i0 + 1, i1 = i1 - 1, j0 = j0 + 1, j1 = j1 - 1;}for (ii = 0; ii < n; ii++){for (jj = 0; jj < n; jj++)printf("%4d", a[ii][jj]);printf("\n");}
}

 

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

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

相关文章

【SpringCloud笔记】(9)分布式配置中心之Config

Config 概述 分布式系统当前面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务&#xff0c;每个服务的粒度相对较小&#xff0c;因此系统中会出现大量的服务。 比如&#xff1a;有n个微服务连接同一套数据库&#xff0c;当连接数据库需要发生变动时&…

RTSP交互过程

RTSP&#xff08;Real-Time Streaming Protocol&#xff09;是一种用于实时流媒体传输的应用层协议。在RTSP通信中&#xff0c;以下是参与的主要角色和组件&#xff1a; 客户端&#xff08;Client&#xff09;&#xff1a;发送请求并接收服务器的响应。客户端可以是一个播放器应…

Exploring the Limits of Masked Visual Representation Learning at Scale论文笔记

论文名称&#xff1a;EVA: Exploring the Limits of Masked Visual Representation Learning at Scale 发表时间&#xff1a;CVPR2023 作者及组织&#xff1a;北京人工智能研究院&#xff1b;华中科技大学&#xff1b;浙江大学&#xff1b;北京理工大学 GitHub&#xff1a;http…

ARM串口通信编程实验

完成&#xff1a;从终端输入选项&#xff0c;完成点灯关灯&#xff0c;打开风扇关闭风扇等操作 #include "gpio.h" int main() {char a;//char buf[128];uart4_config();gpio_config();while(1){//接收一个字符数据a getchar();//发送接收的字符putchar(a);switch(…

redis复习笔记01(小滴课堂)

高并发的必备两大“核技术”队列和缓存 介绍本地缓存和分布式缓存 Nosql介绍和Reidis介绍 Linux服务器源码安装Redis6和相关依赖 在路径下上传压缩包。 上传压缩包。 版本更新了&#xff0c;但这是临时的。 版本更新了。 解压压缩包&#xff1a; 重命名&#xff1a; 我们可以看…

c++中的引用()

引用 引用是c中的&#xff0c;在C语言中是无法使用的。 引用的作用&#xff1a; 引用可以理解为给变量起一个别名(这时候大家可能会想到typedef,但是它们不同(原因看后面))。起一个别名之后&#xff0c;我们使用变量别名其实就是使用变量自己,生活中,我们会有自己的小名,那…

C# WPF上位机开发(MySql访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们学习了数据库sqlite&#xff0c;不过这是一种小型的数据库&#xff0c;作为内部使用还可以。但是&#xff0c;如果要与外面的其他供应商进…

Android Intent 传递实体类到下一个 Activity

要在 Android 中通过 Intent 传递实体类对象&#xff0c;首先需要确保实体类对象实现了 Serializable 或 Parcelable 接口。 一、实现 Serializable 接口&#xff1a; public class MyObject implements Serializable {private String name;private int age;// 构造方法和其他…

蓝牙物联网在智慧医疗中的应用

物联网技术开启了万物互联的时代&#xff0c;并且随着智慧城市建设的加速推进及物联网技术对各行业的逐步渗透&#xff0c;“智慧”概念应运而生&#xff0c;诸如智慧能源、智慧交通、智慧医疗等“遍地开花”&#xff0c;可以说&#xff0c;物联网技术给各行业带来了产业模式上…

力扣labuladong一刷day46天并查集

力扣labuladong一刷day46天并查集 文章目录 力扣labuladong一刷day46天并查集一、323. 无向图中连通分量的数目二、130. 被围绕的区域三、990. 等式方程的可满足性 一、323. 无向图中连通分量的数目 题目链接&#xff1a;https://leetcode.cn/problems/number-of-connected-co…

转场动画路径动画

本篇文章我们介绍下转场动画及路径动画。 1、概述 转场动画有三种类型&#xff0c;页面间转场、组件内转场、共享元素转场。 2、页面间转场 页面间转场需要在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效。 2.1、函数说明 名称 参数 必填 参数描述…

Arduino/Android 蓝牙通信系统设计解决方案

随着当今安全管理的发展需求以及国家对安全监控行业的支持&#xff0c;这几年&#xff0c;安全监控行业发展迅猛&#xff0c;各类监控系统百花齐放。传统的温度监控系统通过有线或其他方式传送温度数据&#xff0c;而本文提出了利用蓝牙无线传输数据的设计方案&#xff0c;这种…

SLAM算法与工程实践——SLAM基本库的安装与使用(6):g2o优化库(3)构建g2o顶点

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

FLStudio21中文版水果编曲软件好用吗?如何下载最新版本

FL Studio21版是一款在国内非常受欢迎的多功能音频处理软件&#xff0c;我们可以通过这款软件来对多种不同格式的音频文件来进行编辑处理。而且FL Studio 21版还为用户们准备了超多的音乐乐器伴奏&#xff0c;我们可以直接一键调取自己需要的音调。 FL Studio21版不仅拥有非常…

vue利用深拷贝解决修改不能取消的问题

vue利用深拷贝解决修改不能取消的问题 在对某数据进行修改时考虑还需要进行“确认”、“取消”操作&#xff0c;那么在取消时就需要返回保留的数据内容&#xff0c;那么如何将原有数据保留一份则是关键性问题。 显然修改值不能直接进行原值的赋值操作&#xff0c;因为这样无法取…

Hadoop——分布式计算

一、分布式计算概述 1. 什么是计算、分布式计算? 计算:对数据进行处理,使用统计分析等手段得到需要的结果分布式计算:多台服务器协同工作,共同完成一个计算任务2. 分布式计算常见的2种工作模式分散->汇总 (MapReduce就是这种模式)将数据分片,多台服务器各自负责一…

金和OA C6 gethomeinfo sql注入漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞概述 金和 OA C6 gethomeinfo接口处存在SQL注入漏洞&#xff0c;攻击者除了可以利用 SQL 注入漏洞获取…

vue3+ts pinia存储及持久化

index.ts 需要安装pinia-plugin-persist npm i pinia-plugin-persist -Simport { createPinia} from "pinia" // 引入批量的pinia持久存储插件 import piniaPluginPersist from pinia-plugin-persist const storecreatePinia(); store.use(piniaPluginPers…

【网络安全 | 网络协议】结合Wireshark讲解TCP三次握手

TCP三次握手在Wireshark数据包中是如何体现的&#xff1f;在此之前&#xff0c;先熟悉TCP三次握手的流程。 TCP三次握手流程 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的传输层协议。在建立 TCP 连接时&#xff0c;需要进行三次握手&#xff0c;防止因为…

【自然语言处理】用Python从文本中删除个人信息-第二部分

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…