程序输出"15"无缘无故?

Program ouput "15" for no reason?

本文关键字:无缘无故 程序 输出      更新时间:2023-10-16

我今天编写了一个程序,当我最终完成它并完成调试时,它终于编译了!我认识的人的名字出现了,然后我必须输入我想要的人的名字。问题是,不管我输入什么名字,程序只是输出"15",我真的不明白为什么!

#include "stdafx.h"
#include <iostream>
#include <string>
int number;
std::string name1;
//int nameAppears()
//{
    //std::cout << "Alex" <<    std::endl;
    //std::cout << "Andre" << std::endl;
    //std::cout << "Guy" <<   std::endl;
    //std::cout << "Grand-ma" <<        std::endl;
    //std::cout << "Grand-pa" <<        std::endl;
    //std::cout << "Jérémy" <<  std::endl;
    //std::cout << "Manon" <<   std::endl; commented this out because it          
    //never worked, I simply put it in main()            
    //std::cout << "Nathalie" <<  std::endl;
    //std::cout << "Stéphanie" << std::endl;
    //std::cout << "Oliver" << std::endl;
//}

std::string enterName()
{
    std::cout << "Enter the name you wish to obtain the number:";
    std::cin >> name1;
    return name1;
}

int link(std::string name1)
{
    if (name1 == "Alex")
        return 9856452535;
    if (name1 == "Andre")
        return 5641598453;
    if (name1 == "Guy")
        return 8459563258;
    if (name1 == "Grand-ma")
        return 8457892653;
    if (name1 == "Grand-pa")
        return 5689852565;
    if (name1 == "Jérémy")
        return 7894521564;
    if (name1 == "Manon")
        return 8453262145;
    if (name1 == "Nathalie")
        return 6589253678;
    if (name1 == "Stéphanie")
        return 5689433645;
    if (name1 == "Olivier")
        return 5695658321;
}

void printNumber (int number)
{
    std::cout << "The number is: " << number << std::endl;
}

int main()
{
    //Make all the names appear
    //nameAppears();
    std::cout << "Alex" << std::endl;
    std::cout << "Andre" << std::endl;
    std::cout << "Guy" << std::endl;
    std::cout << "Grand-ma" << std::endl;
    std::cout << "Grand-pa" << std::endl;
    std::cout << "Jérémy" << std::endl;
    std::cout << "Manon" << std::endl;
    std::cout << "Nathalie" << std::endl;
    std::cout << "Stéphanie" << std::endl;
    std::cout << "Olivier" << std::endl;
    //Get User's input
    std::string name1 = enterName();
    //Link Name to number
    int number = link(name1);
    //Print the desired number
    printNumber(number);
    std::cin.clear(); // reset any error flags
    std::cin.ignore(32767, 'n'); 
    std::cin.get(); // get one more char from the user
}

EDIT:我最初只是long,但请参阅下面的评论线程,了解我为什么将此编辑为long long


我做了一些改变:

  1. 你的link函数并不总是返回值。我在底部添加了一个return 0;,用于没有一个名称匹配的情况。
  2. 你的数字太大了,不适合int。我切换到使用long long s无处不在。
  3. 我做了一个小的清理(删除未使用的代码和全局变量)。

注意,我的编译器为前两个问题生成了警告。如果没有,请考虑更改设置以确保看到有价值的警告。

下面的代码按我的预期工作:

#include <iostream>
#include <string>
std::string enterName()
{
    std::string name1;
    std::cout << "Enter the name you wish to obtain the number:";
    std::cin >> name1;
    return name1;
}

long long link(std::string name1)
{
    if (name1 == "Alex")
        return 9856452535;
    if (name1 == "Andre")
        return 5641598453;
    if (name1 == "Guy")
        return 8459563258;
    if (name1 == "Grand-ma")
        return 8457892653;
    if (name1 == "Grand-pa")
        return 5689852565;
    if (name1 == "Jérémy")
        return 7894521564;
    if (name1 == "Manon")
        return 8453262145;
    if (name1 == "Nathalie")
        return 6589253678;
    if (name1 == "Stéphanie")
        return 5689433645;
    if (name1 == "Olivier")
        return 5695658321;
    return 0; // if none of the names match
}

void printNumber (long long number)
{
    std::cout << "The number is: " << number << std::endl;
}

int main()
{
    std::cout << "Alex" << std::endl;
    std::cout << "Andre" << std::endl;
    std::cout << "Guy" << std::endl;
    std::cout << "Grand-ma" << std::endl;
    std::cout << "Grand-pa" << std::endl;
    std::cout << "Jérémy" << std::endl;
    std::cout << "Manon" << std::endl;
    std::cout << "Nathalie" << std::endl;
    std::cout << "Stéphanie" << std::endl;
    std::cout << "Olivier" << std::endl;
    //Get user's input
    std::string name1 = enterName();
    //Link name to number
    long long number = link(name1);
    //Print the desired number
    printNumber(number);
}