好的,所以我需要让输出看起来像一个星号菱形,每行增加2个星号,直到中间有9个星号......然后行减少。功能主要必须是:
int main (void){
int i;
i = 0;
while (i < 5){
printline (4-i, i*2+1);
i = i + 1;
}
i = 3;
while (i >= 0) {
printline (4-i, i*2+1);
i = i - 1;
}
return 0;
}
现在我应该定义函数printline,以便在每次调用时打印图中的一行。它需要2个参数,空格数和应该在线上打印的星号数。使用计数器控制的重复打印适当数量的空格,并再次打印适当数量的星号。
char print_line (int spaces, int stars){
for (int i = 4; i>=spaces; i--){
printf(" ");
}
for (int i = 1; i<=stars; i+=2){
printf("*");
}
printf("\n");
}
哇噢!我就快完成了!输出有点正确,除了不是一个有4个空格和一个星的线,一个有3个空格和3个星的线,依此类推,没有空格和9个星,(然后反转)......我得到一条线有一颗恒星,一条有空间的线和2颗星,一条有两个空格的三颗星等等,最多有4个空格五颗星(然后是反转的)...... printline不同的原因是因为我有时候写这个有问题而且每当我试着写它时我都会一直使用斜体...
答案 0 :(得分:5)
一些提示:
printf(" ");
printf("*");
printf("\n");
int i=0; for(i=0; i<n; i++) { printf("X"); }
,您将打印X
字母总共n
次(此时您可能没有学过循环;如果没有,请使用下一个提示) int i=0; while(i<n) { printf("X"); i++; }
,您还会打印X
字母总共n
次a
和b
以外的参数名称,您会更开心。尝试考虑与代表的参数相对应的名称。对您的修改的回复:
for
循环始终使用一个初始化程序,一个检查条件和一个步骤/增量构建stars
或spaces
分配值;它们是通过调用您的printline
函数给予您的数字(即它们已经有值)对第二次修改的回复:
for
循环中,您可能希望使用索引变量 other 而不是传入的参数(例如for(i=0; i<spaces; i++)
,其中i
只是你在函数顶部声明的计数器,就像在赋值中的代码一样)在你当前的构造中,它将尝试打印4个空格,无论调用者在调用你的函数时指定了什么。for
循环)1
。printline
的函数,则无法将其称为print_line
;这不是同一件事(也不是PrintLine
)对第三次修改的回复:
1
。”char
)