c语言,为什么输入一次会输出多次,萌新求解答,要怎么才能得到题目要求,拜托,题目如图,代码如下

voidPAN_PrintMenu(void);intmain(intargc,char**argv){charCommandLetter;intx;x=1;while(... void PAN_PrintMenu( void );int main(int argc, char** argv) { char CommandLetter; int x; x=1;while(x){ PAN_PrintMenu(); CommandLetter = getchar(); if ( CommandLetter >= 'A' && CommandLetter <= 'Z'){ CommandLetter = CommandLetter + ('a' - 'A'); } if ( CommandLetter == 'a' ) printf("[A] 新增\n"); else if ( CommandLetter == 'b' ) printf("[B] 修改\n"); else if ( CommandLetter == 'c' ) printf("[C] 删除\n"); else if ( CommandLetter == 'd' ) printf("[D] 显示所有学生信息\n"); else if ( CommandLetter == 'e' ) printf("[E] 按学号查询学生信息\n"); else if ( CommandLetter == 'f' ) printf("[F] 按姓名查询学生信息\n"); else if ( CommandLetter == 'g' ) printf("[G] 查询身高在某区间的学生\n"); else if ( CommandLetter == 'h' ) printf("[H] 查询所有男生信息\n"); else if ( CommandLetter == 'i' ) printf("[I] 查询所有女生信息\n"); else printf("输入错误!\n"); if ( CommandLetter == 'x' ) printf("*****谢谢使用本程序****\n\n");}} void PAN_PrintMenu( void ){ printf("************************************************\n"); printf(" 欢迎使用<学生信息管理系统>\n"); printf("作者:XXXX Email 版权所有\n"); printf("************************************************\n"); printf("[A] 新增\n"); printf("[B] 修改\n"); printf("[C] 删除\n"); printf("[D] 显示所有学生信息\n"); printf("[E] 按学号查询学生信息\n"); printf("[F] 按姓名查询学生信息\n"); printf("[G] 查询身高在某区间的学生\n"); printf("[H] 查询所有男生信息\n"); printf("[I] 查询所有女生信息\n"); printf("[X] 退出\n"); printf("************************************************\n"); printf("请输入要执行的功能前的字母(不区分大小写):");} 展开
 我来答
姣过手飘找人1Q
2018-10-30 · TA获得超过1904个赞
知道大有可为答主
回答量:2466
采纳率:70%
帮助的人:352万
展开全部
用循环语句多次读入。 最后再输出即可。
例如:int a[100],i;for(i=0;i<100;i++) scanf("%d",a+i); //循环多次输入for(i=0;i<100;i++) printf("%d ",a[i]); //一次性输出
追问
我们还没学这个中括号,只能用while,而且你这个也没有封装函数,不封装的我会循环的,关键在于,封装的,输入一次,输出两次,一次正确,一次错误,你能直接帮我改下下吗?
White_MouseYBZ
2018-10-30 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6320万
展开全部
在CommandLetter = getchar();前加一句fflush(stdin);。
追问
不能这样用,还没学
追答
你把那一句拷贝过去都不会?或者你就等着学了再说吧!可以换成在CommandLetter = getchar();后加一句getchar();,但就只能满足大部分情况,不是100%地凑效了……还有个好办法就是把CommandLetter = getchar();换成scanf(" %c",&CommandLetter);——注意%前必须有个空格——这个不知你学了没有。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式