AcWing 721. 递增序列

读取一系列的整数 X,对于每个 X,输出一个 1,2,…,X 的序列。
输入格式
输入文件中包含若干个整数,其中最后一个为 0,其他的均为正整数。
每个整数占一行。
对于输入的正整数,按题目要求作输出处理。
对于最后一行的整数 0,不作任何处理。
输出格式
对于每个输入的正整数 X,输出一个从 1 到 X 的递增序列,每个序列占一行。
数据范围
1≤X≤100
输入样例:
5
10
3
0
输出样例:
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
1 2 3

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. int x;
  5. while (cin >> x && x) { // 第一种方法
  6. for (int i = 1; i <= x; i++) cout << i << " ";
  7. cout << endl;
  8. }
  9. return 0;
  10. }
  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. int x;
  5. while (cin >> x, x) { // 第二种方法
  6. for (int i = 1; i <= x; i++) cout << i << " ";
  7. cout << endl;
  8. }
  9. return 0;
  10. }
  1. // 错误写法
  2. #include <iostream>
  3. using namespace std;
  4. int main() {
  5. int x;
  6. while (cin >> x) {
  7. for (int i = 1; i <= x; i++)
  8. cout << i << " ";
  9. cout << endl;
  10. }
  11. return 0;
  12. }
  13. // 会导致最后一个输入0仍然会进入循环,输出一个空行

:::success 不知道该读入多长时:
用 cin 的话,读到末尾返回0
用 scanf 的话,读到末尾返回 -1,~(-1) == 0 :::

从字符串读取

  1. string s = "1971-05-28";
  2. sscanf(s.c_str(), "%d-%d-%d", &year, &month, &days);