C 中循环的混淆

标签 c arrays loops for-loop

我必须编写一个具有以下条件的程序:送货员将成堆(包)的啤酒运送到不同的商店

  • 第 1 家商店,1 堆
  • 第二家商店,2 堆
  • 第 3 家商店,3 堆
  • ...
  • 直到第 10 家商店。

程序必须这样打印:

int i1,shop[10]={1,2,3,4,5,6,7,8,9,10},stacks[10]={1,2,3,4,5,6,7,8,9,10},counter;
for (i1 = 9; i1 >= 0; i1--){
for(counter=0;counter<=i1;counter++){

printf("Shop[%i] %i \t",shop[i1], stacks[i1]);
}

它正在运行,但输出不是我想要的:

Shop[10] 10 Shop[10] 10 Shop[10] 10 Shop[10] 10
Shop[10] 10 Shop[10] 10 Shop[10] 10 Shop[10] 10
Shop[10] 10 Shop[10] 10 Shop[9] 9 Shop[9] 9
Shop[9] 9 Shop[9] 9 Shop[9] 9 Shop[9] 9
Shop[9] 9 Shop[9] 9 Shop[9] etc.

它必须看起来像这样:

  • Shop 1 - 1
  • Shop 2 - 2, 2
  • Shop 3 - 3, 3, 3
  • Shop 4 - 4, 4, 4, 4.

最佳答案

你的循环已经打乱了。这是一段可以打印您想要的内容的代码。修改代码,使其访问正确的数组并打印其内容:

for(i = 1; i <= 10; i++) {
    printf("Shop %d - ", i);

    for(j = 1; j <= i; j++)
        printf("%d, ", i);

    putchar('\n');
}

第一个循环(使用 i)将打印“Shop - ”字符串 10 次。第二个循环将为第一个循环的每次迭代运行,从而为您提供正确的打印数量。较小的代码更改将占据逗号打印的核心...

输出:

Shop 1 - 1, 
Shop 2 - 2, 2, 
Shop 3 - 3, 3, 3, 
Shop 4 - 4, 4, 4, 4, 
Shop 5 - 5, 5, 5, 5, 5, 
Shop 6 - 6, 6, 6, 6, 6, 6, 
Shop 7 - 7, 7, 7, 7, 7, 7, 7, 
Shop 8 - 8, 8, 8, 8, 8, 8, 8, 8, 
Shop 9 - 9, 9, 9, 9, 9, 9, 9, 9, 9, 
Shop 10 - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,

关于C 中循环的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652587/

相关文章:

For 循环的 SQL 替代方案

c - "for (; --i >= 0; )"在 C 中是什么意思?

c - Linux设备驱动程序: Copying String from Kernel to UserSpace

java - JNI : Converting C Function To Java Style Function

c++ - 在 C++ 中反转二维数组

c++ - 在一个循环中沿对角线循环遍历 2D 数组

python - Numpy:有没有办法使用 np.argmax 搜索连续值?

c++ - 循环和 strcpy

c++ - 为什么我们在从 main() 返回时遵循相反的约定?

从 Fortran 调用 GSL 例程 CQUAD