在 C++ 中创建形状
Create a shape in C++
我想创建这样的形状:
ccccccc
cccccc
ccccc
cccc
ccc
cc
c
我的代码是:
#include <iostream>
using namespace std;
int main(){
int i, j;
for(i = 0; i < 7; i++){
for(j = 7; j > 7; j--){
cout << 'c';
}
cout << endl;
}
return 0;
}
但是在终端中我得到的输出是一些空行。
我做错了什么?
for(j = 7; j > 7; j--){
这个表达式总是假的。
你需要写for(j = 7; j > i; j--){
你想要这个:
#include <iostream>
using namespace std;
int main(){
int i, j;
for(i = 7; i > 0; --i){
for(j = i; j > 0 ; j--){
cout << 'c';
}
cout << endl;
}
return 0;
}
您的原始代码在内循环中存在逻辑错误
for(j = 7; j > 7; j--){
这里的 j 是 7 但 j 永远不会大于 7 所以它永远不会执行,但即使它被固定为
for(j = 7; j > 0; j--){
这只会 cout
7 'c
' 7 次,所以我修改的是更改您的内部循环起始值,以便它随后正确递减。
for(i = 7; i > 0; --i){
for(j = i; j > 0 ; j--){
^ now initialised by outer loop
所以会发生什么情况是内部循环从未执行过但你执行了 cout << endl;
7 次因此空行
循环条件
for(j = 7; j > 7; j--){
错了。也就是说它总是等于 false 因为最初 i 被设置为 7 并且它不能大于 7。:)
我想你的意思是
for(j = 7 - i; j > 0; j--){
程序可以写得更简单
#include <iostream>
#include <iomanip>
int main()
{
while ( true )
{
std::cout << "Enter a non-negative number (0-exit): ";
size_t n = 0;
std::cin >> n;
if ( !n ) break;
const char c = 'c';
std::cout << std::setfill( c );
while ( n ) std::cout << std::setw( n-- ) << c << std::endl;
}
return 0;
}
程序输出为
Enter a non-negative number (0-exit): 7
ccccccc
cccccc
ccccc
cccc
ccc
cc
c
Enter a non-negative number (0-exit): 0
我想创建这样的形状:
ccccccc
cccccc
ccccc
cccc
ccc
cc
c
我的代码是:
#include <iostream>
using namespace std;
int main(){
int i, j;
for(i = 0; i < 7; i++){
for(j = 7; j > 7; j--){
cout << 'c';
}
cout << endl;
}
return 0;
}
但是在终端中我得到的输出是一些空行。
我做错了什么?
for(j = 7; j > 7; j--){
这个表达式总是假的。
你需要写for(j = 7; j > i; j--){
你想要这个:
#include <iostream>
using namespace std;
int main(){
int i, j;
for(i = 7; i > 0; --i){
for(j = i; j > 0 ; j--){
cout << 'c';
}
cout << endl;
}
return 0;
}
您的原始代码在内循环中存在逻辑错误
for(j = 7; j > 7; j--){
这里的 j 是 7 但 j 永远不会大于 7 所以它永远不会执行,但即使它被固定为
for(j = 7; j > 0; j--){
这只会 cout
7 'c
' 7 次,所以我修改的是更改您的内部循环起始值,以便它随后正确递减。
for(i = 7; i > 0; --i){
for(j = i; j > 0 ; j--){
^ now initialised by outer loop
所以会发生什么情况是内部循环从未执行过但你执行了 cout << endl;
7 次因此空行
循环条件
for(j = 7; j > 7; j--){
错了。也就是说它总是等于 false 因为最初 i 被设置为 7 并且它不能大于 7。:)
我想你的意思是
for(j = 7 - i; j > 0; j--){
程序可以写得更简单
#include <iostream>
#include <iomanip>
int main()
{
while ( true )
{
std::cout << "Enter a non-negative number (0-exit): ";
size_t n = 0;
std::cin >> n;
if ( !n ) break;
const char c = 'c';
std::cout << std::setfill( c );
while ( n ) std::cout << std::setw( n-- ) << c << std::endl;
}
return 0;
}
程序输出为
Enter a non-negative number (0-exit): 7
ccccccc
cccccc
ccccc
cccc
ccc
cc
c
Enter a non-negative number (0-exit): 0