蓝桥杯基础入门——编程框架与输入处理
作为一只有鱼的记忆的菜鸟本菜,只能用文字记录下一步一脚印的学习过程,希望在自己忘记的时候能够比较快地回忆起来,同时能给其他刚入门的小菜菜们提供一点点帮助。
今天是寒假练习第一天,一起学习的小伙伴遍布大一到大三,基础内容便从框架以及输出输出开始总结吧。(菜菜菜起来每次都花大半天思考怎么输入数据,嘤嘤嘤~)
- 基础框架
#include <iostream>
#include<stdio.h>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
return 0;
}
目前而言,菜菜觉得这五个基本的头文件就够解决绝大多数问题啦。后面学习新的函数使用到其他库再进行增添说明。
2. 整数输入
1)输入到零结束
while(scanf("%d", &n), n != 0) { }
或 while(cin >> n, n != 0) { }
2)多组输入(不确定输入个数,输入到文件尾结束)
多组单个
while(scanf("%d", &n) != EOF) { }
或 while(cin >> n) { }
多组多个
while(scanf("%d%d", &n, &m) != EOF) { }
或 while(cin >> n >> m) { }
3)T组数据输入
scanf("%d", &T); while(T--) {}
或 cin >> T; while(T--) {}
4)多组整数矩阵输入
const int Size = x;
while(scanf("%d", &num[0][0]) != EOF) {
for(int i = 0; i < Size; ++i) {
for(int j = 0; j < Size; ++j) {
if(i == 0 && j == 0) {
continue;
}
scanf("%d", &num[i][j]);
}
}
}
- 字符输入
1)多组输入
多组单个
char ch[2];//用字符串存单个字符输入不容易出错
while(scanf("%s", ch) != EOF) { }
多组多个
while(scanf("%s%s", n, m) != EOF) { }
或 while(cin >> n >> m) { }
2)字符串多组输入且每组长度不同
char s[1000000+10];
while( scanf("%s",s)!=EOF){
len=strlen(s);%用strlen可以获取每组字符串实际长度
}
3)字符串多组矩阵输入
char a[10][10];
while(scanf("%s",a[0])!=EOF){
for(int i=1;i<10;i++){
scanf("%s",a[i]);
}
}
4)多组字符输入,每组字符个数不确定,字符间空格隔开
string str;
while(getline(cin,str)){
//stringstream sin(str);
//while(sin>>x){ }//把string作为输入流后可当cin使用,string类直接作为x所属类型,整型或字符使用。
}
- 复合输入——既含有数字又含有字符
1)均视为字符,按上述字符输入相关方法进行输入
//字符与整型的转换可以按输入方式
char c=’0’;//’1’,’2’…’9’;
int num=0;
num=int(c-‘0’);
2)格式化输入,比如日期输入:2019/1/22
scanf("%d/%d/%d", &y, &m, &d);
3)过滤字符读入数据函数
int read() {
int f = 1;
int ret = 0;
char ch;
do {
ch = getchar();
if(ch == '-') {
f = -1;
}
} while(ch < '0' || ch > '9');
do {
ret = ret * 10 + ch - '0';
ch = getchar();
} while(ch >= '0' && ch <= '9');
return ret * f;
}