我是C编程的新手,编程练习有点困难,我相信对于那些了解C的人来说这很简单,不幸的是你必须遵守练习规则.
这是练习:
让程序请求用户输入大写字母.使用嵌套循环生成如下金字塔图案:
Run Code Online (Sandbox Code Playgroud)A ABA ABCBA ABCDCBA ABCDEDCBA模式应扩展到输入的字符.例如,前面的模式将由输入值E产生.提示:使用外部循环来处理行.连续使用三个内循环,一个用于处理空格,一个用于按升序打印字母,另一个用于按降序打印字母.
所以我到目前为止:
#include <stdio.h>
int main(void) {
int rows;
int spaces;
char asc;
char desc;
char input;
printf("Please enter an uppercase letter: ");
scanf("%c", &input);
for (rows = 'A'; rows <= input; rows++) {
for (spaces = input; spaces > rows; spaces--) {
printf(" ");
}
for (asc = 'A'; asc <= rows; asc++) {
printf("%c", asc);
}
for (desc = asc - 2; desc >= rows; desc--) {
printf("%c", desc);
}
printf("\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你非常接近:
for (desc = asc - 2; desc >= 'A'; desc--) {
Run Code Online (Sandbox Code Playgroud)
注意,在第二个内循环后,asc是rows + 1.然后你初始化desc为rows - 1.你应该能够看到为什么>= rows是错误的,并且不会导致迭代.
正确的条件很简单>= 'A'.