使用嵌套循环生成以下内容
A
BC
DEF
GHIJ
KLMNO
PQRSTU
这是我到目前为止所拥有的。我最终得到了一个讨厌的运行时错误。
#include <stdio.h>
int main(void) {
int row;
char let;
char ch = 'A';
for (row = 1; row <= 6; row++) {
for (let = ch; let < (let + row); let++) {
printf("%c", let);
}
ch = let;
printf("\n");
}
return 0;
}
我现在还不确定该做什么。是错误的结果 这封信没有更新?
答案 0 :(得分:2)
你的循环永远不会中断,条件let < (let + row);
总是如此!例如提示:如何1 < (1 + i)
??
答案 1 :(得分:2)
更改
for (let = ch; let < (let + row); let++)
到
for (let = ch; let < (ch + row); let++)
或者,你得到一个无限循环,因为let < (let + row)
永远不会是假的。这可能因编译器而异。 C标准未指定let
是unsigned char
还是signed char
。所以由编译器决定它。
如果let
是unsigned char
,那么循环将循环,最终,(let+row)
将(由于溢出)回绕到值0,然后循环结束。登记/>
如果let
是signed char
,那么最终(let+row)
会溢出并保留任何值。这会导致未定义的行为,并且无法保证循环将结束。
答案 2 :(得分:1)
这位
let < (let + row)
永远是真的吗?
答案 3 :(得分:0)
更改为
for (let = 0; let < row; let++) {
printf("%c", ch + let);
}
ch += let;