Aprendizagem "primer C ++": Capítulo 1 (notas e exercícios de programação)

O primeiro capítulo do "primer C ++":

1. Conte quantas vezes consecutivas cada valor aparece na entrada?

#include <iostream>

// 程序设计:键盘获取一组不定长输入,求每个值连续性地输入了多少次?
int main()
{
    
    
	int Val, CurVal;
	if (std::cin >> CurVal) {
    
    
		// 如果确实得到了输入
		int cnt = 1;// 连续输入的次数初始化
		while (std::cin >> Val) {
    
    
			if (CurVal == Val) 
				cnt++;
			else {
    
    
				std::cout << CurVal << " occupys :" << cnt << " times." << std::endl;
				cnt = 1;// 准备记录下一次的输入次数
			}
			CurVal = Val;
		}
		std::cout << CurVal << " occupys :" << cnt << " times." << std::endl;
		// 输出最后一组连续输入的元素的出现次数
	}
	return 0;
}

Vantagens deste programa:

Primeiro: use uma instrução if para detectar se há entrada, para garantir que deve haver dados antes do processamento

Segundo: considere a primeira entrada como a entrada atual e use outra variável Val para pegá-la toda vez que você inserir na próxima vez e, em seguida, compare-a. Após a comparação, a variável atual CurVal é atualizada alternadamente. Isso usa duas variáveis A ideia de trabalho alternativo de entrada e detecção é muito boa.
Insira a descrição da imagem aqui
Esta entrada de comprimento variável é inserida no final do arquivo. Se você quiser interrompê-lo com antecedência: Ctrl + Z (sistema Win) ou Ctrl + D no sistema Mac

2. Pesquise o valor de retorno de entrada e saída

Como todos sabemos, as funções retornarão valores. Na entrada e saída do fluxo C ++ IO, usamos as classes nas bibliotecas istream e ostream: std :: cin, std :: cout; a classe não tem valor de retorno, então o código acima: while (std :: cin >> O que Val) {} significa? Como essa instrução de entrada pode ser colocada em while para determinar a condição do loop? Poderia ser o valor de retorno do tipo bool? Vamos tentar escrever tal código: bool p = std::cin >> a;Obtenha o erro da seguinte forma:
Insira a descrição da imagem aqui
Verifique o código-fonte deste std :: cin:
Insira a descrição da imagem aqui
A partir daqui, podemos ver que não estamos realmente gerando o valor de retorno da classe std :: cin, porque a classe não gera um valor de retorno ! Mas este operador: >>, sabemos que o operador binário é equivalente a uma função com parâmetros binários. O lado esquerdo desse operador leva uma classe istream como o operando esquerdo (ou seja, o primeiro parâmetro da função) e o operando direito é um objeto a ser operado. O conteúdo escrito na caixa de comando será escrito no operando direito. O objeto sobe. A passagem a seguir é do "primer C ++",
Insira a descrição da imagem aqui
mas sobre como reescrever o operador binário em uma função com parâmetros binários, ainda não sei como pedir o conselho de um especialista!

Da linguagem C ++ para a linguagem C, sabemos que a entrada e a saída da linguagem C são realizadas por funções: scanf & printf; a função naturalmente tem um valor de retorno, vamos ver como é o seu valor de retorno?

#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <iostream>

int main()
{
    
    
	int Val;
	bool p = scanf("%d", &Val);
	bool q = printf("%d", Val);
	std::cout << std::endl;

	std::cout << p << ' ' << q << std::endl;

	p = ~scanf("%d", &Val);
	q = ~printf("%d", Val);
	std::cout << std::endl;

	std::cout << p << ' ' << q << std::endl;

	std::cout << EOF << std::endl;

	return 0;
}

Resultado de saída: EOF = -1, o valor de retorno de entrada e saída estilo C é 1 (indicando que o final do arquivo não foi alcançado e a entrada / saída foi bem-sucedida)

Insira a descrição da imagem aqui

3. Redirecionamento de arquivo

Insira a descrição da imagem aqui
Use o comando cmd para redirecionar no sistema Windows 10:"程序编译后的.exe可执行文件" <input.txt >out.txt
Insira a descrição da imagem aqui

Benefícios do redirecionamento de arquivo:

Em um caso de teste oj alguns dias atrás, a quantidade de dados era enorme! Se eu copiar a entrada e a saída no console, será impossível copiar completamente! Porque a última maioria dos dados serão engolidos e não podem ser inseridos no console. então o que devemos fazer? Usamos o método "redirect" para colocar o arquivo de entrada em um arquivo txt e, em seguida, criamos um arquivo de saída (arquivo txt vazio). Em seguida, use o comando redirecionado acima para ver nossa saída!
Além disso, em relação ao redirecionamento, também há uma explicação sobre o "primer C ++":

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_44274276/article/details/105277148
Recomendado
Clasificación