gpt4 book ai didi

C Primer Plus 第 6 章练习 4 检查

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:06 25 4
gpt4 key购买 nike

现在我正在阅读 Stephen Prata 的“C Primer Plus”,并且在第 6 章中有一个练习 4,书中没有解决方案,所以我无法检查我是否做对了。我的代码工作正常,但我想知道也许有一些更好或更清洁的解决方案。伙计们,你能帮帮我吗?我的代码在练习的描述下方。

这里是描述:让程序请求用户输入大写字母。使用嵌套循环生成像这样的金字塔模式:

    A
ABA
ABCBA
ABCDCBA
ABCDEDCBA

模式应该扩展到输入的字符。例如,前面的模式将由 E 的输入值产生。提示:使用外循环来处理行。连续使用三个内部循环,一个处理空格,一个用于按升序打印字母,一个用于按降序打印字母。

#include <stdio.h>

int main(void) {
char ch;
char row;
char spaces;
char let;
char back;

printf("Please, insert an uppercase letter: ");
scanf("%c", &ch);

for(row = 'A'; row <= ch; row++) {
for(spaces = ch; spaces > row; spaces--)
printf("%c", ' ');

for(let = 'A'; let <= row; let++)
printf("%c", let);

for(back = let; back > 'A' + 1; back--)
printf("%c", back - 2);
printf("\n");
}
return 0;
}

最佳答案

#include <stdio.h>
#include <string.h>

#define AtoZ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

int main(void) {
char ch, *p;
int row, spaces;
int r, i;

printf("Please, insert an uppercase letter: ");
scanf("%c", &ch);
if((p = strchr(AtoZ, ch))==NULL){
printf("invalid input!\n");
return -1;
}

row = p - AtoZ + 1;
for(r = 0; r < row; r++) {
spaces = row - r -1;
for(i = 0; i < spaces; i++)
printf("%c", ' ');

for(i = 0; i < r; i++)
printf("%c", AtoZ[i]);

for(;i >= 0; i--)
printf("%c", AtoZ[i]);

printf("\n");
}
return 0;
}

关于C Primer Plus 第 6 章练习 4 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28161429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com