给定输入的列宽

标签 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宽度时;输出是:

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

我希望它是:

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

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

最佳答案

花一些时间正确格式化您的代码(或使用可以执行此操作的编辑器),当您这样做时,您将了解它如何更好地工作。您的代码是:

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/

相关文章:

arrays - 立即执行语句: ORA-00984: column not allowed here

php - 如何获取沿圆周的像素

c - 优胜美地 svn 1.6.6 段错误

c - 强制 FreeBSD 应用程序生成核心文件

c - 我要编译的程序中的未知转换类型

c - WM_DEVMODECHANGE 的设备名称应该是窄的还是宽的?

java - 如何在 Android 中使用 Java 和 org.json 迭代这个 JSON 数组?

c - 简单的嵌套 for 循环在 C 中无法正常工作(二维数组初始化)

c++ - 从卡在循环中而不是读取的文件输出?

ios - 我应该如何在 PinchGestureRecognizer 上保持缩放比例?