C/C++字符串

一.C风格的字符串
1.

char a[6] = { 'h','e','l','l','o','\0' };
printf("%s", a);//hello
#include<iostream>
#include<string>
using namespace std;
int main() {char a[6] = { 'h','e','l','l','o','\0' };char b[5]= { 'h','e','l','l','o'};//空间至少大一位留出'\0'位置char c[6]= { 'h','e','l','l','o' };char d[] = "hello";char e[6] = "hello";char f[5] = "hello";//errorint lena = strlen(a);int lenb = strlen(b);int lenc = strlen(c);int lend = strlen(d);int lene = strlen(e);printf("%d,%d,%d,%d,%d", lena, lenb,lenc,lend,lene);//5,37,5,5,5
}
int main() {char a[] = "hello";printf("%s", a);//helloprintf("%c", a[1]);//e
}

4.strcpy复制

int main() {char a[] = "hello";char b[] = "jack";strcpy(a, b);//b复制给a,a变为jack,b不变printf("%s", a);//jack
}

5.strcat连接

int main() {char a[10] = "hello";//注意连接时a缓冲区会不会溢出,幷留出'/0'位置char b[] = "jack";strcat(a, b);//b连接到a末尾printf("%s", a);//hellojack
}

6.strcmp(s1,s2),s1大返回大于0,s1小返回小于0。逐个比较第一个不相等字符的ASCII码,全相等返回0

int main() {char a[] = "hello";char b[] = "hoogle";cout<<strcmp(a, b);//e<o,结果小于0,输出:-1cout<<strcmp(b, a);//o>e,,结果大于0,输出:1char c[] = "hello";cout << strcmp(a, c);//0
}

7.strchr(s,ch)在字符串s中查找ch,返回ch第一次出现及其后面的字符
也可以通过指针接收,与字符串的差值是ch在字符串s中第一次出现的数组下标

int main() {char a[] = "hoogle";char* b = strchr(a, 'o');cout << b;//ooglecout << b - a;//1
}

8.输入

int main() {char a[10];scanf("%s", &a);//helloprintf("%s", a);//hellocout << a;//hello
}

二.C++的string类
1.输出
.c_str()

#include<iostream>
#include<string>
using namespace std;
int main() {char a[] = "hello";string b = "hello";printf("%s", a);//helloprintf("%s", b);//乱码printf("%s", b.c_str());//hellocout << b;//hello
}

2.拼接
确保字符串连接时等号两侧都要有string
to_string()将数字常量转换为字符串

#include<iostream>
#include<string>
using namespace std;
int main() {string a;//a = "qw" + 'w';//printf("%s", a.c_str());//乱码//确保字符串连接时等号两侧都要有stringa = a + "qw" + 'w';printf("%s", a.c_str());//qww//to_string()将数字常量转换为字符串int b = 3;a = a + to_string(b);printf("%s", a.c_str());//qww3
}

3.输入,不能直接使用scanf

#include<iostream>
#include<string>
using namespace std;
int main() {string a;scanf("%s", &a);//error//可使用其他多种方式完成输入,例如a.resize(10);scanf("%s", &a[0]);//helloprintf("%s", a.c_str());//helloprintf("%d", a.size());//10
}

4.复制,互不影响

#include<iostream>
#include<string>
using namespace std;
int main() {string a;string b;a = "hello";b = a;a = "jack";cout << a;//jackcout << b;//hello
}

[练习1] 有理数四则运算
编写程序,计算2个有理数的和、差、积、商。

输入描述:输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。

输出描述:分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出“Inf”。题目保证正确的输出中没有超过整型范围的整数。

输入例子:
5/3 0/6

输出例子:
1 2/3 + 0 = 1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = Inf

代码长度限制 16 KB
时间限制 200 ms
内存限制 64 MB

[解]

#include<iostream>
#include<string>
using namespace std;
int gcd(int a, int b) {//求最大公因数return b == 0 ? a : gcd(b, a % b);
}
void simplify(int& a, int& b) {//分数化简if (b < 0) {//负号挪到分子上a = -a;b = -b;}int d = abs(gcd(a, b));a = a / d;b = b / d;
}
string f(int a, int b) {//转化成几又几分之几string s;simplify(a, b);if (a == 0 && b != 0) {s = '0';return s;}if (b == 1) {if (a < 0) {s = '(' + to_string(a) + ')';}elses = to_string(a);return s;}if (abs(a) < abs(b)) {if (a < 0) {s = "(" + to_string(a) + '/' + to_string(b) + ')';}elses = to_string(a) + '/' + to_string(b);}if (abs(a) == abs(b)) {if (a < 0) {s = '(-1)';}elses = '1';}if (abs(a) > abs(b)) {int k1 = abs(a / b);int k2 = abs(a % b);if (a < 0) {s = "(-" + to_string(k1) + ' ' + to_string(k2) + '/' + to_string(b) + ')';}elses = to_string(k1) + ' ' + to_string(k2) + '/' + to_string(b);}return s;
}
int main() {int a1, b1, a2, b2;scanf("%d/%d %d/%d", &a1, &b1, &a2, &b2);printf("%s + %s = %s\n", f(a1, b1).c_str(), f(a2, b2).c_str(), f(a1 * b2 + a2 * b1, b1 * b2).c_str());printf("%s - %s = %s\n", f(a1, b1).c_str(), f(a2, b2).c_str(), f(a1 * b2 - a2 * b1, b1 * b2).c_str());printf("%s * %s = %s\n", f(a1, b1).c_str(), f(a2, b2).c_str(), f(a1 * a2, b1 * b2).c_str());if (a2 == 0) {printf("%s / 0 = Inf\n", f(a1, b1).c_str());}elseprintf("%s / %s = %s\n", f(a1, b1).c_str(), f(a2, b2).c_str(), f(a1 * b2, a2 * b1).c_str());return 0;
}

[练习2]
央视新闻发了一条微博,指出 2020 年有个罕见的“对称日”,即 2020 年 2 月 2 日,按照 年年年年月月日日 格式组成的字符串 20200202 是完全对称的。

给定任意一个日期,本题就请你写程序判断一下,这是不是一个对称日?

在这里插入图片描述
输入格式:输入首先在第一行给出正整数 N(1<N≤10)。随后 N 行,每行给出一个日期,却是按英文习惯的格式:Month Day, Year。其中 Month 是月份的缩写,对应如下:
一月:Jan
二月:Feb
三月:Mar
四月:Apr
五月:May
六月:Jun
七月:Jul
八月:Aug
九月:Sep
十月:Oct
十一月:Nov
十二月:Dec
Day 是月份中的日期,为 [1, 31] 区间内的整数;Year 是年份,为 [1, 9999] 区间内的整数。

输出格式:对每一个给定的日期,在一行中先输出 Y 如果这是一个对称日,否则输出 N;随后空一格,输出日期对应的 年年年年月月日日 格式组成的字符串。

输入样例:
5
Feb 2, 2020
Mar 7, 2020
Oct 10, 101
Nov 21, 1211
Dec 29, 1229

输出样例:
Y 20200202
N 20200307
Y 01011010
Y 12111121
N 12291229

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

[解]

#include<iostream>
#include<algorithm> //reverse头
using namespace std;
bool panduan(string a) {string b = a;reverse(b.begin(), b.end());if (b == a)return true;elsereturn false;
}
struct pro {string year;string month;string day;
}a[15];
int main() {int n;cin >> n;for(int i=0;i<n;i++){cin >> a[i].month>> a[i].day>> a[i].year;if (a[i].month == "Jan")a[i].month = "01";else if (a[i].month == "Feb")a[i].month = "02";else if (a[i].month == "Mar")a[i].month = "03";else if (a[i].month == "Apr")a[i].month = "04";else if (a[i].month == "May")a[i].month = "05";else if (a[i].month == "Jun")a[i].month = "06";else if (a[i].month == "Jul")a[i].month = "07";else if (a[i].month == "Aug")a[i].month = "08";else if (a[i].month == "Sep")a[i].month = "09";else if (a[i].month == "Oct")a[i].month = "10";else if (a[i].month == "Nov")a[i].month = "11";elsea[i].month = "12";if (a[i].day.size() != 3)//还有个逗号a[i].day = '0' + a[i].day;if (a[i].year.size() == 3)a[i].year = '0' + a[i].year;if (a[i].year.size() == 2)a[i].year = "00" + a[i].year;if (a[i].year.size() == 1)a[i].year = "000" + a[i].year;}for (int i = 0; i < n; i++) {string temp = a[i].year + a[i].month + a[i].day[0] + a[i].day[1];if (panduan(temp))cout << "Y" << " " << temp << endl;elsecout << "N" << " " << temp << endl;}return 0;
}

[练习3] 钱串子的加法
人类习惯用 10 进制,可能因为大多数人类有 10 根手指头,可以用于计数。这个世界上有一种叫“钱串子”(学名“蚰蜒”)的生物,有 30 只细长的手/脚,在它们的世界里,数字应该是 30 进制的。本题就请你实现钱串子世界里的加法运算。

输入格式:
输入在一行中给出两个钱串子世界里的非负整数,其间以空格分隔。所谓“钱串子世界里的整数”是一个 30 进制的数字,其数字 0 到 9 跟人类世界的整数一致,数字 10 到 29 用小写英文字母 a 到 t 顺次表示。输入给出的两个整数都不超过 105 位。

输出格式:
在一行中输出两个整数的和。注意结果数字不得有前导零。

输入样例:
2g50ttaq 0st9hk381

输出样例:
11feik2ir

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

[解]

#include<iostream>
#include<algorithm>
using namespace std;
int change(char x) {if (x >= '0' && x <= '9')return x - 48;elsereturn x - 97 + 10;
}
int main() {string num1, num2, sum;string all = "0123456789abcdefghijklmnopqrst";int jinwei = 0;cin >> num1 >> num2;reverse(num1.begin(), num1.end());reverse(num2.begin(), num2.end());if (num1.length() < num2.length())//num1长swap(num1, num2);num2.append(num1.length() - num2.length(), '0');for (int i = 0; i < num1.length(); i++) {int n = change(num1[i]) + change(num2[i]) + jinwei;//sum = sum + all[n % 30];//超时sum += all[n % 30];//正常if (n >= 30) {jinwei = 1;}elsejinwei = 0;}if (jinwei == 1)cout << 1;//最后一个进位reverse(sum.begin(), sum.end());int i = 0;for (; i < sum.length(); i++) {if (sum[i] != '0') {break;}}if (i == sum.length()) {printf("0");//全为0}else {for (; i < sum.length(); i++) {cout << sum[i];}}return 0;
}

[练习4] ChatGPT
ChatGPT(全名:Chat Generative Pre-trained Transformer)近期成为网络讨论的热点话题之一。本题就请你根据某社交网络中发帖的情况,统计每个人帖子中含有 ChatGPT(不区分大小写)的数量(简称“含茶量”),找出最热衷于讨论这个话题的人,即含茶量最高的人。

输入格式:
输入在第一行中给出正整数:N(≤1000),为参加统计的帖子数量。

随后给出 N 条帖子的信息,每条格式为:第一行给出发帖人 ID,是一个长度为 4 位的非空数字串;第二行给出非空的帖子的内容,由不超过 140 个英文字母、数字、空格、标点(只包括 ?、, 和 .)组成,以回车结束(回车不算在 140 字内)。

输出格式:
在一行中输出含茶量最高的 ID,及其含茶量。数字间以 1 个空格分隔,行首尾不得有多余空格。

题目保证输出唯一。

输入样例:
4
1010
I am not interested in ChatGPT.
2333
I am gonna talk about chatgpt, and Chatgpt, and CHATGPT
2333
they are all ChatGPT
0002
So what are you talking about, chatPPT?

输出样例:
2333 4

代码长度限制 16 KB
Java (javac)
时间限制 600 ms
内存限制 256 MB
其他编译器
时间限制 400 ms
内存限制 64 MB

[解] (未在评测系统测试)

#include<iostream>
#include <string>
using namespace std;
int main() {int n;cin >> n;int count[100005]={0};for (int i = 0; i < n; i++) {int id;cin >> id;getchar();string s;getline(cin, s);//获取一行数据,存入sint len = s.length();for (int j = 0; j < len; j++) {s[j] = tolower(s[j]);//把字母字符转换成小写,非字母字符不做出处理}for (int j = 0; j < len-6; j++) {if (s[j] == 'c' && s[j + 1] == 'h' && s[j + 2] == 'a' && s[j + 3] == 't' && s[j + 4] == 'g' && s[j + 5] == 'p' && s[j + 6] == 't') {count[id]++;j = j + 6;}}}int max = -1;int maxpos=0;for (int i = 0; i < 10000; i++) {if (max <= count[i]) {max = count[i];maxpos = i;}}printf("%04d %d", maxpos, max);
}

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

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

相关文章

Qt输入窗口部件编程(一) QComboBox和QFontComboBox

文章目录 前言1、 Qt常用的输入窗口控件2、QFontComboBox 和 QComboBox控件编程2.1 控件简介2.1.1 QComboBox组合框2.1.2 QFontComboBox字体组合框 2.2 例程功能设计2.3 例程执行效果2.4 生成项目2.5 代码编辑2.5.1 修改项目文件_qcombobox.pro2.5.2 修改 main.cpp2.5.3 修改 w…

Xmind8 乱码问题解决(查看文件字体并下载安装相应字体)

每台电脑引起Xmind软件出现乱码的原因也不一样&#xff0c;本文仅适用于解决字体缺少或者字体版本不对而引发的乱码问题。每台电脑缺少的字体包也不一样&#xff0c;要通过“工具”-》“提取样式”菜单&#xff0c;具体分析自己的Xmind文件需要什么字体&#xff0c;然后搜索对应…

idea主题 插件 乱码 快捷键

idea样式网站 http://www.easycolor.cc/ http://www.riaway.com/ idea 乱码情况 中文乱码问题分类&#xff1a; 1.编码普通中文乱码 2.properties文件中文乱码 3.console控制台中文乱码 4.搜索框中文乱码 5.svn注释中文乱码 解决方法&#xff1a; 1、编码普通中文乱码 ①s…

基于声学模型共享的零资源韩语识别系统

声学模型共享方法是极低资源小语种语音识别一种解决方案&#xff0c;能够实现不需要任何语音数据的语音识别。本文介绍清华大学语音与音频技术实验室的零资源韩语语音系统&#xff0c;其在不使用任何韩语语音数据的情况下&#xff0c;在Zeroth韩语数据集上的测试CER达到了27.33…

韩语在线翻译图片识别_图片怎么转表格excel

图片转表格excel&#xff0c;快来免费用 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 相信大部分小伙伴选择拍图识字 是因为强大的ocr识别功能 图片文字一键提取导出 但是&#xff0c;有多少人知道 拍图识字还可以成为你的私人翻译&#xff01;1 多语言转换 拍图识字首页点击拍照/…

韩译中难吗,如何做好韩语翻译

我们知道&#xff0c;韩语是韩国的官方语言&#xff0c;由于长期和中国文化的接触&#xff0c;历史上曾用汉字标记&#xff0c;并且将汉语融入其词汇&#xff0c;基于这一特点&#xff0c;韩译中难吗&#xff0c;如何做好韩语翻译? 据了解&#xff0c;中韩文化交流的历史可以追…

韩语在线翻译图片识别_3个OCR文字识别工具,最后一个许多人都不知道!

在日常生活和工作中,经常有需要录入一张图片或实物内容的文字信息的时候,对于少量内容,你或许可以轻松完成。可是一旦内容多,而你打字速度又不快的情况下,那可真的是一件非常枯燥又费力的事情。 而一般遇到这种情况,大家就可以利用OCR文字识别工具,只需简单对着物体拍张…

韩语在线翻译图片识别_如何用扫描全能王将图片转成文字?

扫描君有个写材料的朋友&#xff0c;每次需要摘录书或宣传册里的内容&#xff0c;他总是一个字一个字地敲&#xff0c;效率不高&#xff0c;还容易出错&#xff0c;自己也很痛苦&#xff01;&#xff01; 扫描君也有这样的亲身体会&#xff1a; 在微博、朋友圈里看到一些图片或…

韩语翻译拍照怎么弄?分享几款拍照翻译软件

拍照翻译软件是一种基于人工智能技术开发的翻译工具&#xff0c;它可以通过拍照识别文字&#xff0c;然后将文字翻译成大家选择的语言。这种翻译方式比传统的输入文字翻译更加方便快捷&#xff0c;无需手动输入文字&#xff0c;提高了翻译的效率、准确性&#xff0c;也提供更好…

yandex的“Search queries” report(搜索查询报告)

上一篇提到了我们查询访客关键词的入口&#xff0c;需要从“搜索查询”报告中点击进入&#xff0c;那么我们好好的来了解一下其中数据的具体含义吧~ 首先&#xff1a;该报告包含来自投放您的广告的搜索平台的用户查询&#xff0c;包括与您的关键字在语义上匹配的搜索查询。这句…

韩语识别_韩语文字识别_韩语图片识别 - 云+社区 - 腾讯云

广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 购买预付费包更加优惠 识别 小时语音不到 元 每月赠送免费额度最大程度降低客户成本 效果好 字准率 处于业界领先水平 与微信王者荣耀的语音转文字使用一套服…

【pdf翻译中文】免费自用日语pdf转中文、韩语pdf转中文(也可以转英文)或者其他小语种法语、德语pdf转中文

不是很精确、有点慢&#xff0c;但是也够用&#xff0c;胜在免费free 效果图&#xff1a; 一些对比&#xff1a; 模型来自于&#xff1a; https://huggingface.co/models 文件目录 调用模型的代码&#xff1a; 运行此段代码&#xff0c;执行翻译 一些简单的设置在这里…

在线翻译_英汉互译,支持繁体,韩语,日语 - 微信小程序在线翻译,单词句子翻译

打开微信&#xff0c;搜索页面 输入&#xff1a;超实用工具箱 找到上图所示的小程序点击打开&#xff0c;在菜单栏中找到【在线翻译】&#xff0c;点开进入翻译页面 有多种语言可以选择&#xff1a;英文&#xff0c;简体中文&#xff0c;香港&#xff0c;台湾&#xff0c;韩语&…

韩语在线翻译图片识别_最强文字识别APP

在我们日常生活和办公中&#xff0c;处理纸质文档上的文字是必不可免的&#xff0c;而当我们需要快速把纸质上的文字转换成可编辑的电子文档时候&#xff0c;如果单靠打字输入的话往往令人有点头疼&#xff0c;特别是面对字数众多的文本。此时此刻&#xff0c;一个识别准确 OCR…

【韩语图片文字识别】如何快速识别韩语图片文字,将文字变成电子档,进行翻译处理教程

场景&#xff1a;在韩语学习&#xff0c;韩语工作中经常遇到一些文字图片&#xff0c;如何将韩语图片文字从图片上扣下来&#xff0c;我们可以直接复制粘贴&#xff0c;提高我们的工作效率 我们会用到一款小工具&#xff1a;咕嘎ocr多语言文字识别系统 软件下载链接&#xff…

网站接入qq客服在线聊天

一. 注册一个网站专用QQ。 二. 到QQ商家设置QQ在线状态&#xff1a;http://wp.qq.com/set.html 免费开通设置会话类型 三、生成代码 四、将代码粘贴到自己的网站上&#xff0c;之后访客就可以点击图标给网站客服QQ留言了。

网站在线沟通工具,网站即时聊天工具-TTKEFU在线客服系统功能介绍

接待多渠道顾客——PC简洁版 TTKEFU客服打通web网站、移动网站、微信、APP、电话、表单、邮件等等&#xff0c;无论顾客来自于哪个渠道&#xff0c;都可以在TTKEFU客服后台统一接待。 接待多渠道顾客——PC工作台版 整合同一顾客在不同渠道不同场景的碎片化行为&#xff0c;将…

中国存储“军团”补位美光,存储芯片的垄断格局要崩了

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 2023年5月21日晚间&#xff0c;中国网络安全审查办公室官网发布了美光公司在华销售的产品未通过网络安全审查的结果。 来源&#xff1a;cac.gov.cn 公告内容显示&#xff0c;审查发现&#xff0c;美光公司产品存在较严重网络…

​汇集198篇论文,首篇关于Segment Anything Model的综述来了!

©PaperWeekly 原创 作者 | 小马 单位 | FightingCV公众号运营者 研究方向 | 计算机视觉 写在前面 四月份&#xff0c;AI Research 提出的基础分割模型 Segment Anything Model&#xff08;SAM&#xff09;火爆了整个网络&#xff0c;各种基于 SAM 的二创项目也如雨后春笋…

360集团副总裁梁志辉:大模型驱动的AI数字员工,将带来一场深刻的生产力变革丨数据猿专访...

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 近日&#xff0c;在360智脑大模型应用发布会上&#xff0c;360集团创始人周鸿祎在现场创造了自己的数字分身&#xff0c;充当360公司的新闻发言人&#xff0c;其行为和思维方式可以仿真周鸿祎本人。 据悉&#xff0c;数字人…