gpt4 book ai didi

c++ - c++中的多个return语句

转载 作者:行者123 更新时间:2023-11-28 03:15:00 25 4
gpt4 key购买 nike

我曾尝试完成一个 C++ 练习,您必须完成“Golf”函数的函数定义并基于此设计一个程序,但是,我遇到了其中一个函数的问题。

该函数的部分目标是,如果用户输入了高尔夫球手的姓名,则返回 1,如果未输入姓名,则返回 0。

我在这方面遇到了一些困难,因为当我运行程序时,我总是将 1 返回给 main。

下面我列出了到目前为止我为每个文件所做的工作:

golf.h

#ifndef GOLF_H
#define GOLF_H

const int Len = 40;

struct golf {
char fullname[Len];
int handicap;
};

void setgolf(golf &g, const char *name, int hc);
int setgolf(golf &g);
void handicap(golf &g, int hc);
void showgolf(const golf &g);

#endif /* GOLF_H */

高尔夫.cpp

#include "golf.h"
#include "iostream"

void setgolf(golf &g, const char *name, int hc) {


strcpy(g.fullname, name);
g.handicap = hc;

}

int setgolf(golf &g) {


std::cout << "Golfer's name:";
std::cin.getline(g.fullname, Len);
if (std::cin.get() == '\0')
return 0;


std::cout << "Golfer's handicap: ";
std::cin >> g.handicap;


return 1;

}

void handicap(golf &g, int hc) {
g.handicap = hc;
std::cout << g.fullname << "'s new handicap is:" << g.handicap;

}

void showgolf(const golf &g) {

std::cout << "Player's Name:" << g.fullname << std::endl;
std::cout << "Player's handicapped:" << g.handicap << std::endl;

}

main.cpp

#include <cstdlib>
#include <iostream>
#include "golf.h"

using namespace std;

int main(int argc, char** argv) {
int retuVal = 0;

golf ann;
setgolf(ann, "Ann Birdfree", 24);
showgolf(ann);
cout << "\n";


golf peter;
retuVal = setgolf(peter);
cout<<"return value is:"<<retuVal<<endl;


cout << "\nGolf details reset in new handicap\n";
handicap(peter, 5);

cout << "\nDetails reprinted";
showgolf(peter);

return 0;
}

请让我知道我做错了什么,这样我就可以返回 0 而不是一直返回 1。

谢谢吉斯。

最佳答案

在函数 setgolf 中删除以下代码:

if (std::cin.get() == '\0')
return 0;

而是写...

if(strlen(g.fullname)==0)
return 0;

这是因为当用户不想输入名字时,他只是按回车键。这使得字符串为空,因为 getline 会填充字符数组,直到它被完全填充或者它在流中看到一个 newline 字符。所以,如果我们只检查它的长度,是否大于0,就足够了。有关 getline 的进一步引用,请参阅 here

关于c++ - c++中的多个return语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com