C 代码未显示正确的内容

标签 c

我正在尝试用矩阵编写一个程序。四个数中,只有第一个减1。当第一个矩阵结束时,只有第二个矩阵减1。一直到最后。不允许使用 0 号。

例如,当我运行代码时,需要返回:

[2][1][3][3]
[1][1][3][3]
[1][3][3]
[3][3]
[2][3]
[1][3]
[3]
[2]
[1]

但是这段代码并没有发生这种情况:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int fila[4], var;

    for (var=0;var<4;var++) {
        fila[var]=0;
        srand(rand());
        fila[var]=rand()%3+1;
        printf("[%d]",fila[var]);
        fila[0]=fila[0]-1;
    }
    system("pause>NULL");


    while(fila[0]>0)
    {
        printf("[%d][%d][%d][%d]\n",fila[0],fila[1],fila[2],fila[3]);
        fila[0]--;
        system("pause");
    }

    fila[1]=fila[1]-1;

    while(fila[1]>0)
    {
        printf("[%d][%d][%d]\n",fila[1],fila[2],fila[3]);
        fila[1]--;
        system("pause");
    }

    fila[2]=fila[2]-1;

    while(fila[2]>0)
    {
        printf("[%d][%d]\n",fila[2],fila[3]);
        fila[2]--;
        system("pause");
    }

    fila[3]=fila[3]-1;

    while(fila[3]>0)
    {
        printf("[%d]\n",fila[3]);
        fila[3]--;
        system("pause");
    }

    return 0;
}

我缺少什么? 谢谢。

该代码打印:

[2][1][2][1]
[1][1]

最佳答案

您需要两个嵌套循环来完成此操作:

#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int fila[4], i, j;
    srand(rand());
    for (i=0;i != 4; i++) {
        fila[i]=rand()%3+1;
    }
    for (i=0 ; i != 4 ; fila[i]--, i += (fila[i] == 0)) {
        for (j = i ; j != 4 ; j++) {
            printf("[%d] ", fila[j]);
        }
        printf("\n");
    }
    return 0;
}

外循环迭代,直到到达 fila 的末尾;内循环从 i 的索引开始打印 fila 的剩余元素。

请注意,您不应该在循环中重新播种 srand - 在循环之前只执行一次。

这是link to this program on ideone .

关于C 代码未显示正确的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763019/

相关文章:

为返回 char* 的 C 函数创建 FORTRAN 接口(interface)

c - 剖析 x86 堆栈框架设置 Visual C++ (Visual Studio 2010)

c - 取消共享后 grantpt 报错

c - 由于 C 中的 strcmp 和 strcpy 导致的程序错误

c - 未定义对 `htole32' 的引用

c - 如何从 C 程序中执行带参数的可执行文件?

c - 试图理解数组符号

字符数组打印比我指定的少 1 个字符

c++ - 握手成功后 SSL_read() 不返回

android - JNIEnv 全局引用与 C 中的 jobject 有何不同?