我想创建一个这样的形状:
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;
}
但是在终端中,我得到的输出是一些空行。
我做错了什么?
答案 0 :(得分:18)
for(j = 7; j > 7; j--){
此表达式始终为false。
您需要撰写for(j = 7; j > i; j--){
答案 1 :(得分:4)
你想要这个:
#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次因此空行
答案 2 :(得分:0)
循环的条件
for(j = 7; j > 7; j--){
错了。也就是说它始终等于false,因为最初我设置为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