首页 > 解决方案 > Sphere在线评委(生命、宇宙、万物)

问题描述

你的程序是使用蛮力方法来找到生命、宇宙和一切的答案。更准确地说……将小数从输入改写到输出。读入数字 42 后停止处理输入。输入处的所有数字都是一位或两位数的整数。

输入:1 2 88 42 99

输出:1 2 88

我试图在 c++ 的帮助下解决这个程序,但最终得到了错误的结果。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int i,n;

    for(i=0;i<10;i++)
    {
        cin>>n;
        if(n == 42)
            break;
    }
    return 0;
}

然后在 CI 的帮助下解决了这个问题,结果是这样的:

#include <stdio.h>

int main(void)
{
    int i = 0;

    while (scanf("%d\n", &i) && i != 42)
    {
        printf("%d\n", i);
    }
    return 0;
}

你能告诉我我在第一个程序中犯了什么错误吗?我是编码的新手。提前致谢 :)

标签: c++ccppcheck

解决方案


  1. 这是一个不好的做法#include <bits/stdc++.h>(更多信息在这里)。
  2. 这是一个不好的做法using namespace std;(更多信息在这里)。
  3. 你没有打印任何东西。使用std::cout.
  4. 为了代码的可读性,您应该ifor循环语句中声明。
  5. 我同意 Sam Varshavchik 的观点。如果您想学习 C++,请搜索一本好的教科书,而不是在线测验网站。
#include <iostream>

int main()
{
   int n;
   for(int i = 0; i < 10; i++)
   {
         std::cin >> n;
         if(n == 42)
            break;
         std::cout << n;
   }
   return 0;
}

推荐阅读