我希望有人能帮助我。 我想在数组的输出中创建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;
}
答案 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");
}