列宽为给定输入

时间:2014-10-12 12:07:10

标签: c loops

在这段代码中,我尝试打印的星号与给定的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宽度时;输出是:

***
+------
******
+------
********
+------
********
+------...

我希望它是:

*
*
*
+-------
**
**
**
+-------

我希望你明白这个主意。 我知道代码很乱,但我只想完成代码然后我可以安排更好的东西。

2 个答案:

答案 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);