刷题tip记录

这里写自定义目录标题

  • 刷题tip记录
    • scanf返回值
    • scanf_s
    • EOF
    • getline获取包含空格的字符流
    • 输出设置保留小数点后几位

刷题tip记录

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

scanf返回值

  1. scanf有int型的返回值,其返回值是能正确接收到的变量个数。
int a, b, c;
int x = scanf_s("%d%d%d", &a, &b, &c);
printf("%d\n", x);

输入:1 2 3 输出:3
输入:1 2 输出:2
输入:1 2 3 4 输出:3

scanf_s

scanf_s同时获取字符串和数组会报访问冲突。
刷题tip记录_第1张图片
需要分开获取字符串和整数。

scanf_s("%s",na,sizeof(na));
scanf_s("%d %d %d", &gold, &silver, &tong);

使用scanf_s获取字符串需要获取字符串长度,保证不越界获取。

EOF

EOF表示“文字流”的结尾,“文字流”包括文件或标准输入。
EOF不是特殊字符,是宏定义。

#define EOF (-1)

①EOF表示文件结尾时,系统通过比较文件的长度来判断文件是否到达末尾。EOF是读到文件结尾时返回的一个信号值(-1)。
②EOF表示标准输入的结尾,无法事先知道输入长度,必须输入ctrl+z(windows)或ctrl+d(linux)表示到达末尾。

获取未知个数的输入:
①C实现

int num1, num2;
while (scanf_s("%d%d", &num1, &num2) != EOF)
{
   printf("%d ", num1 + num2);
}

输入:1 2 3 4 5 6
输出:3 7 11
②C++实现

std::vector<int> arr;

int num;
while (std::cin >> num)
{
   arr.push_back(num);
}
for (int i = 0; i < arr.size(); i++)
{
   std::cout << arr[i] << " ";
}

输入:1 2 3 4 5
输出:1 2 3 4 5

getline获取包含空格的字符流

cin不能获取包含空格的字符流

 std::string input;
 std::cin >> input;
 std::cout << input;

输入:all is well
输出:all

 std::string input;
 getline(std::cin,input);
 std::cout << input;

输入:all is well
输出:all is well

输出设置保留小数点后几位

注意:一定要包含头文件

#include 
double data = 6.25453234243;
std::cout << std::fixed << std::setprecision(2) << data << std::endl;

你可能感兴趣的:(编程实战)