最近把牛客网华科的题水了一遍,今天把总结的细节东西弄出来整理一下
很久没用c++/c写代码了,一些细节东西还是记记好一点。
(后续可能会因每日刷题而不断更新新的东西。)
主要分为以下5个部分
1数据的输入与输出
2字符串处理(华科的题好像挺多字符串处理的,这里单独拿出来放一个部分)
3包含结构体定义(树)
4需要按照一定规则写的特别的排序,自己写一个比较的函数
5stl模版的使用
pre:
建立c++文件;
头文件声明:
#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std;
如果有要用到的大数组可以开在main外
#define maxn 101
int a[maxn][maxn]
1
输入:
①输入多组测试数据
1/while(cin>>n)
2/while(scanf("%d",&n)!=EOF)
输出
②需要输出一大堆数据,末位换行/第二第三个数据前要输出","或其他特殊字符
思路:定义一个bool类型flag标记是否是末位数据或者循环到size()-1;对于最后一一个数据进行特殊处理
2
字符串处理
①c/c++中每个字符串都以字符' '作为结尾,这样可以很方便地找到字符串的尾部。
但由于这个特点,每个字符串都有一个额外的字符开销,所以在声明的时候要多预留一个位置。
比如“0123456789”实际存在数组里末位还有一个' '字符。
②字符串的输入:
1/while(scanf("%s",str)!=EOF):注意:当读到空格的时候就停止读入
2/char str[1001];
while(gets(str)!=NULL):注意:当读到回车的时候才停止读入,会读入空格;当要处理整段句子的时候可以考虑用gets读入数据到char字符数组中进行处理。
3/声明一个string n,然后while(cin>>n)(用string的时候不可以用gets)
③其他处理
如果用scanf("%s",str)的方式读入一串字符,因为碰到空格的时候就会停止读入;在末尾加入"/0"
如果题目要求对一句话里的单词逐个进行处理的时候,可以利用判断"/0"来辨别是否到一个单词末尾。
例:
代码:
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 int main() 6 { 7 char n[1000]; 8 while(scanf("%s",n)!=EOF){ 9 int sum=0; 10 int i=0; 11 while(n[i]!='.'&&n[i]!='