c - 每行中数组的唯一元素

标签 c arrays

我有一个关于如何在数组中显示唯一元素的问题。该程序由两个嵌套循环组成。第一个计数器是行,另一个是字母,第二个计数器按顺序输出数组中的字母。

我遇到的问题是,在第一行和第二行之后,一些元素开始重复(C primer plus 6th edition 241pg num 4)

#include <stdio.h>

    int main(void){

    char lets[29] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";


    for(int i =0; i<6; i++)
    {
        for(int j=0; j<=i; j++)
        {
            printf("%c", lets[j+i]);
        }


        printf("\n");
    }
    }

我的输出

A
BC
CDE
DEFG
EFGHI
FGHIJK

要求的输出

A
BC
DEF
GHIJ
KLMNO
PQRSTU

最佳答案

您需要一个额外的偏移量,否则您将永远无法到达字母表的末尾:

char lets[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // no need to give array size, automatic size is OK

int start = 0;

for(int i =0; i<6; i++)
{
    for(int j=0; j<=i; j++)
    {
        printf("%c", lets[j+i+start]);
    }
    start += i;  # shift letters

    printf("\n");
}

结果:

A
BC
DEF
GHIJ
KLMNO
PQRSTU

关于c - 每行中数组的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694199/

相关文章:

c - 在子函数中输入大量元素并在main()中相乘

python - Numpy:将大型数组与 dtype=int8 相乘很慢

arrays - 将 VBA 数组分配给 Excel 范围的公式时出现奇怪的行为

c++ - 仅 header 链接

c - 如何知道路径,错误和警告存储在eclipse中

c - 套接字接受 - "Too many open files"

javascript - 如何以最小的复杂度从javascript中的数组中获取不匹配的数组值?

java - 通过深度 HashMap 递归迭代

arrays - 如何在图中显示带有文本框的数组?

c - 尝试读取宽字符会给出 EOF