【发布时间】:2018-03-03 06:58:59
【问题描述】:
#include <stdio.h>
#define FINISH 'Z'
int main(void){
int spacenm, currentspacenm, i;
char ini, inirecord;
int rownm, currentrownm;
printf("PLease enter a random uppercase letter: ");
scanf("%c", &inirecord);
spacenm = rownm = FINISH - inirecord;
for (i = 0; i<= spacenm; i++)
printf(" ");
printf("%c\n", inirecord);
i = 0;
for (currentrownm = 1; currentrownm <= rownm; currentrownm ++){
for (currentspacenm = 1; currentspacenm <= spacenm; currentspacenm++)
printf(" ");
spacenm--;
for (ini = inirecord; ini<=inirecord+i; ini++)
printf("%c", ini);
i++;
for (; ini>=inirecord; ini--)
printf("%c", ini);
printf("\n");
}
return 0;
}
我想知道是否有更好的方法需要更少的变量或使用更少的冗余代码结构来提高效率。
【问题讨论】:
-
在改进工作代码的情况下,Code Review 可能是一个更好的地方。 :)
-
请尝试解释您的代码的作用。另外,请尝试解释您尝试过的所有方法并展示您的研究。
-
您应该检查输入是否成功并得到一个大写字母。查看
scanf()的返回值——应该是1;将格式字符串更改为" %c"(%c之前为空白);使用来自<ctype.h>的函数。就个人而言,我会使用putchar()来输出单个字符;这似乎不像以前那样广泛使用了。 -
感谢大家的帮助,因为我真的是一个初学者,所以对 C 等中的约定知之甚少。无论如何,你的回答都很有帮助。
-
@Francis.Tricka 第一行应该只包含一个字母吗?如果输入的字母是“Z”,那么输出应该是什么?
标签: c loops for-loop while-loop