题目是:接受用户输入的字母(暂定为大写)用以显示以他为底层的字母金字塔结构,然后,是否继续重复操作。
基本的框架已经做好了,但是第二次,进行重复操作的时候,就出现问题。好像是没有清空键盘存缓。但不知道,究竟错在哪里,希望大家能稍加提示,不胜感激。
现在的程序如下:第一次执行正常,(写的有点乱,请见谅)
#include<stdio.h>
void main()
{
int x,y,z; //x,控制行数,y,用来控制输出的空格,z,用来输出每行的个数。
char a=65,input,dist; //a=65 用来输出第一行字母为A, input 代表用户自定的字母 dist,控制是否重新输入
do
{
printf("\n请输入任意一个字母:\t"); //接受用户自定的字母
fflush(stdin);
input=getchar();
input=(int)input-64;
for (x=1;x<=input;x++) //控制行数
{
for (y=1;y<=input-x;y++) //打印出空格数
printf(" ");
for (z=1;z<=2*x-1;z++)
{ //打印每行的数目
printf("%c",a);
}
a++;
printf ("\n");
}
printf("\n您还需要输入另外的字母吗?(y/n)\t");
fflush(stdin);
dist=getchar();
}
while (dist!='N'&&dist!='n'); //选N或n结束循环
}
----------------解决方案--------------------------------------------------------
问题解决了,应该将a=65,放在for语句之前,解决了.现在想,如果任意大写和小写都能正常输出呢,输入小写字母,也同样从a开始.怎么解决,希望大家多参与一下啊,我技术实在太菜了,学了半个月,很多常识性的问题都混乱呢!!
看看帮我检查一下,还有什么地方做的不够啊,总是稍差人意
现在的程序已经改成如下:
#include<stdio.h>
void main()
{
int x,y,z; //x,控制行数,y,用来控制输出的空格,z,用来输出每行的个数。
char a,input,dist; //a 用来输出第一行字母为A, input 代表用户自定的字母 dist,控制是否重新输入
do
{
printf("\n请输入任意一个字母:\t"); //接受用户自定的字母
fflush(stdin);
input=getchar();
if (input>='A'&&input<='Z')
{
input=(int)input-64;
a=65;
for (x=1;x<=input;x++) //控制行数
{
for (y=1;y<=input-x;y++) //打印出空格数
printf(" ");
for (z=1;z<=2*x-1;z++)
{ //打印每行的数目
printf("%c",a);
}
a++;
printf ("\n");
}
printf("\n请继续输入字母,如果退出请输入(N)\t");
}
else
printf("对不起,您输入错误,只能是大写的字母啊!!");
fflush(stdin);
dist=getchar();
continue;
}
while (dist!='N'&&dist!='n'); //选N或n结束循环
}
[此贴子已经被作者于2006-8-30 16:54:27编辑过]
----------------解决方案--------------------------------------------------------
我们老师编的时候没这么复杂呀?
----------------解决方案--------------------------------------------------------