我有一个关于如何在数组中显示唯一元素的问题。该程序由两个嵌套循环组成。第一个计数器是行,另一个是字母,第二个计数器按顺序输出数组中的字母。
我遇到的问题是,在第一行和第二行之后,一些元素开始重复(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/