在此代码中,我尝试打印与给定 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宽度时;输出是:
***
+------
******
+------
********
+------
********
+------...
我希望它是:
*
*
*
+-------
**
**
**
+-------
我希望你能明白。 我知道代码很乱,但我只想完成代码,然后我可以安排更好的东西。
最佳答案
花一些时间正确格式化您的代码(或使用可以执行此操作的编辑器),当您这样做时,您将了解它如何更好地工作。您的代码是:
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");
注意添加的 {}
block ,用于标记每个 for
循环的范围。
关于给定输入的列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324940/