我是C编程新手,编程练习有点困难,我相信对于那些了解C的人来说这很简单,不幸的是你必须遵守练习规则。
这是练习:
让程序请求用户 输入一个大写字母。使用嵌套 循环以产生金字塔图案 像这样:
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;
}
答案 0 :(得分:5)
你非常接近:
for (desc = asc - 2; desc >= 'A'; desc--) {
请注意,在第二个内循环后,asc
为rows + 1
。然后,您正在将desc
初始化为rows - 1
。您应该能够看到>= rows
错误的原因,并且不会导致迭代。
正确的条件只是>= 'A'
。
答案 1 :(得分:-1)
#include <stdio.h>
#include <string.h>
#define ROW 6
int main() {
char let = '\0', ch;
int row;
scanf("%c", &let);
for (row = 0; row <= ROW; row++) {
for (ch = let; let > (ch + row); --ch) {
for (ch = let; let < (ch + row); ++ch) {
printf("%c", ch);
}
// ch = let;
printf("\n");
}
}
return 0;
}
任何评论或更正都将受到高度赞赏..我也是新人 //学习者;)