在这段代码中,我尝试打印的星号与给定的9个数字一样多,并尝试按给定的宽度创建列。我是一个新手,所以我不能使用任何花哨的方法。
#include <stdio.h>
void pm(int n, char c, int w)
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < w; j++)
printf("%c", c);
printf("\n");
printf("+------");
printf("\n");
}
int main()
{
int i;
int width;
int number = 9;
int n1, n2, n3, n4, n5, n6, n7, n8, n9;
printf("Enter 9 numbers (all less than 50):\n|1-2-3-4-5-6-7-8-9|\n");
printf("|-----------------|\n ");
scanf("%d %d %d %d %d %d %d %d %d", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);
printf("\nEnter the width of the charts (1, 3, 5 or 7):");
scanf("%d", &width);
pm(n1, '*', width);
pm(n2, '*', width);
pm(n3, '*', width);
pm(n4, '*', width);
pm(n5, '*', width);
pm(n6, '*', width);
pm(n7, '*', width);
pm(n8, '*', width);
pm(n9, '*', width);
system("PAUSE");
}
例如当用户输入1-2-3-3-3-3-3-3-3和3宽度时;输出是:
***
+------
******
+------
********
+------
********
+------...
我希望它是:
*
*
*
+-------
**
**
**
+-------
我希望你明白这个主意。 我知道代码很乱,但我只想完成代码然后我可以安排更好的东西。
答案 0 :(得分:1)
花一些时间来正确格式化代码(或使用编辑它的编辑器),你会明白它是如何更好地工作的。您的代码是:
void pm(int n, char c, int w){
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < w; j++)
printf("%c", c);
printf("\n");
printf("+------");
printf("\n");
}
所以它打印c
n*w
次,然后打印一个换行符,然后再打印分隔符和换行符。
要做你想做的事,你需要这样的东西:
for(i = 0; i < w; i++) {
for(j = 0; j < n; j++) {
printf("%c", c);
}
printf("\n");
}
printf("+------\n");
注意添加的{}
块,以标记每个for
循环的范围。
答案 1 :(得分:0)
在函数char
中打印pm
'c'后,您需要新行分隔符。
尝试:printf("%c\n", c);
代替printf("%c", c);