将数组中的数字转换为星号

时间:2019-09-23 00:45:46

标签: c arrays

我希望有人能帮助我。 我想在数组的输出中创建10个数字,而不是创建星号“ *”。

示例

输入 数字1:3 2号:2 10号:5

输出 1号: *** 2号: ** 10号:*****

但是我总是得到相同数量的星星。 谢谢!亲爱的哈曼

#include <stdio.h>

int main()
{
    int tal[10], i, j, z;

    printf("Mata in tio tal mellan 0 och 60:\n");
    for(z=0;z<10;z++)
    {
        printf("Tal %d: ", z+1);
        scanf("%d",&tal[i]);
    }


printf("\nRita ut stapeldiagram:\n");
for(z=0;z<10;z++)
{
    printf("Tal %d: ", z + 1);

    for (j=0; j<i; j++)
    {
        printf("*");
    }
    printf("\n");
}


    return 0;
}

2 个答案:

答案 0 :(得分:0)

这是您的错误。您内部打印星号的for循环正在重新定义迭代索引i。简单的解决方法是在此行中使用一个新变量,例如j

for (i=0; i<tal; i++)

对此:

for (int j=0; j<tal; j++)

答案 1 :(得分:0)

首先,在扫描用户输入时,您将值存储在数组tal的相同位置。递增i的值,以便在每次迭代中,新值都占据一个新的存储位置。

for(z=0, i=0; z<10; z++, i++)
{
    printf("Tal %d: ", z+1);
    scanf("%d",&tal[i]);
}

第二步,在内环中打印出星星时,您将迭代到一个固定的数字i。因此,它在外循环的每次迭代中都打印固定数量的星星。将内部循环迭代到tal[z]。我希望这会让你微笑。

for(z=0;z<10;z++)
{
 printf("Tal %d: ", z + 1);

 for (j=0; j<tal[z]; j++)
  {
    printf("*");
  }
  printf("\n");
}