因为最近要去农大参加他们的算法邀请赛,然后赛制是ACM赛制的,所以我就直接很迷茫。
然后我就找到了牛客的ACM练习题,好好的练习一下ACM写法,而且我还要被迫写C++,哭了。
开始钻研
1.从Java过度到C++
题目源于牛客网:
A-A+B(1)_OJ在线编程常见输入输出练习场 (nowcoder.com)
先来看一道题目:
可以先给出Java的写法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 循环读取每组数据
while (scanner.hasNext()) {
// 读取两个正整数 a 和 b
int a = scanner.nextInt();
int b = scanner.nextInt();
// 计算 a + b 并输出结果
int result = a + b;
System.out.println(result);
}
scanner.close();
}
}
然后就可以写出如下的C++代码
#include <iostream>
int main() {
// 循环读取每组数据
while (true) {
// 读取两个正整数a和b
int a, b;
if (!(std::cin >> a >> b)) {
// 当没有更多输入时退出循环
break;
}
// 计算a+b并输出结果
int result = a + b;
std::cout << result << std::endl;
}
return 0;
}
如果只学习过Python和Java我说句实话,直接懵逼
疑问1
#include <iostream>
#include <iostream>
这是什么
答:
`#include <iostream>` 是C++中的一个预处理器指令,它告诉编译器将 `<iostream>` 头文件包含到程序中。在C++中,`<iostream>` 是输入输出流库的头文件,提供了用于输入和输出的基本工具,例如 `cin` 和 `cout`。
具体来说:
-<iostream> 提供了用于输入和输出的流对象,包括 std::cin(用于标准输入)和
std::cout(用于标准输出)。
- 这个头文件还包括其他一些与输入输出相关的类和功能,比如 std::endl 用于输出换行。
- 使用 <iostream>是进行基本的输入输出操作的一种标准方式。整个 `#include <iostream>` 的目的是在编译时将与输入输出相关的声明和定义包含到你的程序中,以便你可以使用这些标识符来执行输入输出操作。
例如,你可以使用 std::cout`来输出文本到控制台:
```cpp #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } ```
在这个例子中,#include <iostream>`允许你使用 std::cout 和 std::endl,而不需要显式地提供它们的定义。
疑问2
于是就有一个精简的写法
using namespace std
using namespace std;那这是什么意思呢
答;
using namespace std; 是C++中的一个声明,它表示使用标准命名空间(std 命名空间)中的所有标识符,而不需要在使用这些标识符时显式地加上 std::`前缀。
在C++中,许多标准库的组件(如 cin、cout、endl 等)都定义在 std 命名空间中。为了使用这些组件,通常你需要在代码中加上 std:: 前缀,例如 std::cout、std::cin 等。
当你使用 using namespace std; 时,它告诉编译器在整个程序中都使用 std 命名空间中的标识符,这样你就可以直接使用 cout、cin 等,而不需要写成 std::cout、std::cin。
这个语句的使用可以使代码更简洁,但在大型项目中,有时可能会导致命名冲突,因为不同的命名空间中可能有相同名称的标识符。在小型程序或学习阶段使用时,通常是方便的。但在实际开发中,一些团队可能更喜欢显式地指定使用哪些标识符,以避免潜在的命名冲突。
好继续看
疑问3
std::cin >> a >> b这个是什么意思啊
答:
std::cin 是C++标准库中用于标准输入的输入流对象。std::cin 可以通过使用提取运算符 >> 从标准输入流中读取数据。在这里,std::cin >> a >> b 表示从标准输入中读取两个整数,分别存储到变量 a 和 b 中。
具体解释如下:
std::cin 是输入流对象,用于从标准输入设备(通常是键盘)读取数据。
>> 是提取运算符,用于从输入流中提取数据。
a 和 b 是两个整型变量,它们用于存储从输入流中读取的整数值。所以,std::cin >> a >> b 表示先将一个整数读入变量 a,然后再将另一个整数读入变量 b。这样的链式输入可以方便地一次性从输入流中读取多个值。
在你的例子中,int a, b; std::cin >> a >> b; 用于读取两个正整数,这两个整数由空格分隔。例如,如果输入是 "1 5",那么 a 将被赋值为 1,b 将被赋值为 5。
当然也可以拆成两个句子
#include <iostream>
int main() {
int a, b;
// 分开输入两个整数
std::cin >> a;
std::cin >> b;
// 输出结果
std::cout << "a: " << a << ", b: " << b << std::endl;
return 0;
}
疑问4
std::cout << result << std::endl;
这又是啥!!!
答:
std::cout << result << std::endl; 是C++中用于输出到标准输出流(通常是控制台)的语句。这个语句使用了输出流对象 `std::cout` 和流插入运算符 `<<`。
具体解释如下:
std::cout 是C++标准库中的标准输出流对象,用于向标准输出设备(通常是屏幕)输出数据。
<<是流插入运算符,用于将右侧的数据插入到左侧的流中。在这个特定的语句中,它将整数变量 `result` 的值插入到标准输出流中,并紧接着插入一个表示换行的 std::endl。std::endl 代表一个换行符,并且会刷新输出缓冲区,确保输出立即显示在屏幕上。
这个语句的效果是将 result 的值输出到控制台,并在输出结束时换行。如果 result 的值是 6,那么输出可能是:
```
6
```这样的语句通常用于调试或向用户显示程序的输出。
然后return 0;就完事了
总结
当使用C++编程时,
通过 #include <iostream> 引入输入输出流库。
std::cin 用于接收输入
std::cout 用于输出。
std::endl 用于换行
使用 using namespace std; 可以直接在代码中使用 std 命名空间的标识符。
在C++中,return 0; 表示程序正常结束,返回值0通常表示成功执行。