我是这里的新手,这是我的第一个问题。我在 Visual Studio 2019 上学习了基本的 C++。我学习了函数和循环。
I have a homework that wants print:
我用我的 30 行代码解决了这个问题。但我只是想知道有没有更短更好的方法?
using namespace std;
int main()
{
for (int j = 0; j < 5; j++)
{
if (j == 1)
break;
cout << "*";
cout << endl;
if (j == 2)
break;
cout << "**";
cout << endl;
if (j == 3)
break;
cout << "***";
cout << endl;
if (j == 4)
break;
cout << "****";
cout << endl;
if (j == 5)
break;
cout << "*****";
cout << endl;
}
return 0;
}
答案 0 :(得分:6)
您在代码中犯了几个错误。
break
语句实际上应该是 continue
语句。 break
完全终止整个循环(即,您提供的代码中绝对不会打印任何内容)。i == 5
永远不可能是 true
,因为循环在它发生之前终止(参见条件 i < 5
)。要回答您的问题,您可以使用嵌套循环。
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) {
std::cout << '*';
}
std::cout << std::endl;
}
或者,如果您不需要灵活,请手动操作。
std::cout << "*\n**\n***\n****\n*****" << std::endl;
答案 1 :(得分:4)
为什么是循环?下面是七行代码的相同逻辑:
int main() {
std::cout << "*\n";
std::cout << "**\n";
std::cout << "***\n";
std::cout << "****\n";
std::cout << "*****\n";
}
老实说,这可能是最简短的了(除了将所有输出塞进一个语句中)。
但是你的循环的问题主要不是它的长度,而是你的循环不是可变的:一旦你改变迭代次数,它就无法工作,这违背了目的。所有逻辑都是硬编码的,这使得循环毫无用处。
但是如果你想使用循环,那么打印星星的逻辑是可配置的:
void print_stars(int n) {
for (int i = 0; i < n; ++i) {
std::cout << "*";
}
std::cout << "\n";
}
int main() {
for (int i = 0; i < 5; ++i) {
print_stars(i + 1);
}
}
答案 2 :(得分:3)
#include<iostream>
using namespace std;
int main(){
for(int i = 1;i <= 5;i++){
for(int j = 1;j <= i;j++){
cout<<"*";
}
cout<<"\n";
}
}
答案 3 :(得分:1)
void printTrignleL(size_t n)
{
for (size_t i = 0; i < n; ++i) {
std::cout << std::string(i + 1, '*') << '\n';
}
}