【openjudge】C++ cin;cout 常见输入输出

目录

cin简介

一、输入的是数组类型

1.一维数组:输入规模n,以及n个数的值。 

2.二维数组(矩):输入规模m*n,以及m*n个数的值。 

3.以0结束的输入

4.以回车结束的输入

 二、输入的是字符串行的文本类型


cin简介

cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符。

(1)cin>>等价于cin.operator>>(),即调用成员函数operator>>()进行读取数据。
(2)当cin>>从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。
(3)不想略过空白字符,那就使用 noskipws 流控制。比如cin>>noskipws>>input;

C++中关于输入cin的一些总结 - Mini_Coconut - 博客园 (cnblogs.com)

(45条消息) C++中 cin 的详细用法_keepwalking111的博客-CSDN博客_c++ cin

#include<iostream>
using namespace std;
int main(){
    char a;
    int b;
    float c;
    cin>>a>>b>>c;
}

程序:cin>>a>>b>>c;

在屏幕中一次输入:a[回车]11[回车]5.56[回车],

结果:a='a',b=11,c=5.56

一、输入的是数组类型

1.一维数组:输入规模n,以及n个数的值。 

1061:求整数的和与均值

【输入】

输入第一行是一个整数n,表示有n个整数。

第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

【输入样例】

4

344

222

343

222

方法:先用int n记录输入规模,再用vector+ for循环记录n个数的值。 

int n;
	cin >> n;
	vector<int> list(n, 0);
	for (int i = 0; i < n; i++) {
		cin >> list[i];
	}

2.二维数组(矩):输入规模m*n,以及m*n个数的值。 

1125:矩阵乘法

【输入】

第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100。

然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于1000。

【输入样例】

3 2 3

1 1

1 1

1 1

1 1 1

1 1 1

	int m, n, k;
	cin >> m >> n >> k;
	vector<vector<int>> matrixA(m, vector<int>(n, 0));
	vector<vector<int>> matrixB(n, vector<int>(k, 0));
	for (int i = 0; i < m; ++i) {
		for (int j = 0; j < n; ++j) {
			cin >> matrixA[i][j];
		}
	}
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			cin >> matrixB[i][j];
		}
	}

3.以0结束的输入

1218. 取石子游戏

【输入】

输入包括多数数据。每组数据一行,包含两个整数a和b,表示初始时石子的数目。

输入以两个0表示结束。 

	int n, m;
	while (cin >> n >> m) {
		if (n == 0 && m == 0) break;
		cout << "win";
	}

注:while的输入输出方式,是输入第一个样例,输出第一个结果;再输入第二个样例,再输出第二个结果...直到遇到if (n == 0 && m == 0)就跳出while

1216 红与黑

【输入】
包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下:

1)‘.’:黑色的瓷砖;

2)‘#’:白色的瓷砖;

3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。

当在一行中读入的是两个零时,表示输入结束。

【输出】
对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

【输入样例】
6 9 
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
0 0

	int n, m;
	while (cin >> n >> m) {
		if (n == 0 && m == 0) break;
		else {
			vector<vector<char>> floor(m, vector<char>(n, 'a'));
			for (int i = 0; i < m; ++i) {
				for (int j = 0; j < n; ++j) {
					cin >> floor[i][j];
				}
			}
			cout<< dfs(floor);
		}
	}

这是一个while和for结合的例子。

while 控制n组数据的输入输出,每while循环一次就是一组数据的输入输出,直到遇到0 0,停止输入。

一次while循环里的for循环是一组数据的输入。

4.以回车结束的输入

	int n;
	cin >> n;//输入完n之后不能回车,要空格,再继续输入n个数
	vector<int> array(n, 0);
	int index = 0;
	while ((cin.peek() != EOF) && (cin.peek() != '\n'))
	{
		cin >> array[index];
		cout << array[index];//输入完统一输出
		
		index++;
	}

 二、输入的是字符串行的文本类型

猜你喜欢

转载自blog.csdn.net/icecreamTong/article/details/128078635