【问题标题】:c++ adding random(i think) numbers in the end of string outputc ++在字符串输出的末尾添加随机(我认为)数字
【发布时间】:2020-12-22 00:15:43
【问题描述】:

我开始使用 HackerRank,我的代码输出了正确的输出,但它在字符串输出的末尾添加了随机数。我在 CodeBlocks 上解决了更多问题,并在那里进行了尝试。和 HackerRank 上的一样。

#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    int input1;
    int input2;
    cin>>input1;
    cin>>input2;
    int aralik=input2-input1;
    for(int i=0;i<(aralik+1);i++){
        if((input1+i)<10){
            if((input1+i)==9){
                cout<<printf("nine")<<endl;
            }else if((input1+i)==8){
                cout<<printf("eight")<<endl;
            }else if((input1+i)==7){
                cout<<printf("seven")<<endl;
            }else if((input1+i)==6){
                cout<<printf("six")<<endl;
            }else if((input1+i)==5){
                cout<<printf("five")<<endl;
            }else if((input1+i)==4){
                cout<<printf("four")<<endl;
            }else if((input1+i)==3){
                cout<<printf("three")<<endl;
            }else if((input1+i)==2){
                cout<<printf("two")<<endl;
            }else if((input1+i)==1){
                cout<<printf("one")<<endl;
            }
        }else if((input1+i)>9){
            if(((input1+i)%2)==0){
                cout<<printf("even")<<endl;
            }else{
                cout<<printf("odd")<<endl;
            }
        }
    }
    return 0;
}

【问题讨论】:

  • printf 将字符串打印到标准输出并返回打印的字符数,然后cout 将打印的字符数打印到标准输出。
  • 既然这是 C++,你真的真的需要了解如何使用数组或查找表。这种代码是不可持续的,使用起来完全是一团糟。而是考虑从以数据为中心的角度编写代码,如const char* numbers[] = { "zero", "one", "two", ... },然后像cout &lt;&lt; numbers[n]那样使用。
  • 看起来你刚刚开始使用 C++,学习它的最佳场所不是 Hackerrank,而是更正式的介绍和适当的参考资料。挑战对测试你的知识很有帮助,但你需要一个基础。

标签: c++ string output


【解决方案1】:

查看printf man page,函数将返回int

返回值

成功返回后,这些函数返回打印的字符数(不包括用于结束输出到字符串的空字节)。 [...]

如果遇到输出错误,则返回负值。

因此,如果您执行cout &lt;&lt; printf("one") &lt;&lt; endl;,您将运行printf,它将输出“一”,然后您将coutprintf 的返回值。

你可能想要:

cout << "one" << endl;

【讨论】:

    【解决方案2】:

    最后的数字不是随机字符。它是 printf 打印的字符数。

    printf 函数返回它发送到输出的字符数。

    当打印'five'时,它有4个字符,所以打印five4。 printf 首先执行,所以,五个和之后 cout 输出 printf 返回的字符数。所以最终结果是'five4'。使用 printf 或 cout。

    【讨论】:

      猜你喜欢
      • 2011-09-16
      • 1970-01-01
      • 2013-01-15
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多