我想将以下内容打印到控制台:
+++++
++++*
+++**
++***
+****
*****
我是编程的新学习者,因此遇到了一些困难。有人可以帮帮我吗?我试过这个,但是不对。我需要改变什么?
#include<stdio.h>
int main(){
int i, j, k;
for(i=0; i<5; i++){
for(j=i; j<5; j++){
for(k=0; k<j; k++){
printf("*");
}
printf("+");
}
printf("\n");
}
return 0;
}
答案 0 :(得分:3)
您有正确的想法:使用三个for
循环。
#include <stdio.h>
int main() {
for (int i = 0; i < 6; i++) {
for (int k = i; k < 5; k++) {
printf("+");
}
for (int j = 0; j < i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
测试
+++++
++++*
+++**
++***
+****
*****
答案 1 :(得分:1)
首先,将其概括并将其包装在函数中。你想要一个有对角线的正方形。它必须是偶数个字符才能看起来正确。但+和*可以是任何字符,大小可以是6或一直到屏幕最大宽度。
所以
/* print a square with a diagonal
N - the size of the sides of the square
cha - character a (eg '+')
chb - character b (eg '*')
*/
void printdiagsquare(int N, char cha, char chb);
这是我们的原型,而这只是成功的一半。
现在我们需要检查N是偶数和正数,然后写入循环。
让我们先试试。
if(N < 2 || (N % 2) == 1)
printf(N must be even\n");
现在每行的主循环
for(i=0;i<N;i++)
{
//printline code here
printf("\n");
}
现在测试一下。是否打印N个空行?
main(void)
{
printdiagsquare(6, '+', '*');
}
现在打印线条。
打印N-1'+'很容易。我们需要j作为计数器,因为我是外部的
for(j=0;j<N-1;j++)
printf("%c", cha);
但是我们需要概括,我需要在增加时打印6 ,, 5,4,3等等。
So
for(j=0;j<N-i-1;j++)
printf("%c", cha);
我会留下最后一点让你做。盲目地输入一个函数是没有意义的。
答案 2 :(得分:1)
您可以针对 m-rows 和 n-columns 尝试更优化的代码 仅在 2 for loop 中: -
#include <stdio.h>
int main(void) {
int m = 6; // Rows
int n = 5; // Cols
int i,j,k;
for (i = 0; i < m; i++) {
k = i;
for (j = n; j >= 0; j--) {
if(k>=j)
printf("*");
else
printf("+");
}
printf("\n");
}
return 0;
}