我做了一个编码,从用户那里接受一个整数,并输出相应数量的星号。例如:
Please enter a number: 10
* * * * * * * * * *
我必须使用函数概念来完成编码。我设法获得了正确数量的星号,但后面的“0”就是不会消失。
#include<iostream>
using namespace std;
int NUMBER, i;
int ASTERISK (int NUMBER);
int main ()
{
cout << "Enter a number: " ;
cin >> i ;
cout << ASTERISK (i);
return 0;
}
int ASTERISK (int NUMBER){
int ANSWER;
for (NUMBER=1; NUMBER<=i; NUMBER=NUMBER+1){
cout << "* " ;
}
return ANSWER;
}
最佳答案
这一行是有问题的零的原因:
cout << ASTERISK (i);
这要求打印 ASTERISK (i)
返回的值。
int ASTERISK (int NUMBER){
int ANSWER;
for (NUMBER=1; NUMBER<=i; NUMBER=NUMBER+1){
cout << "* " ;
}
return ANSWER;
}
在 ASTERISK
的定义中,您打印 NUMBER
个星号并返回值 ANSWER
,它是一个未初始化的整数,在您的情况下恰好为零。
这很糟糕,原因有二:
- 操作未初始化的值通常是未定义的行为,可能会产生很多不良后果。 Really bad .
- 在不需要时返回一个值会使代码更难维护。
作为解决方案,让 ASTERISK
不返回任何内容:
ASTERISK (i);
// ...
void ASTERISK (int NUMBER) {
for (NUMBER=1; NUMBER<=i; NUMBER=NUMBER+1){
std::cout << "* " ;
}
}
最后,您完全错过了作用域变量的要点。通过不使用全局变量,尽快尝试获取重要概念。通过一些改进,您的函数将变为:
void print_asteriks(int count) {
for (int n=0 ; n<count ; ++n) {
std::cout << "* ";
}
}
关于c++ - 在 C++ 编程中编写函数 ASTERISK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56325613/