c语言求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言求助相关的知识,希望对你有一定的参考价值。

#include "stdio.h"
void main()

loop: //除非选择0,否则重复
printf("================幸运数字================\n");
printf(" 1 --- 分析 2 --- 统计\n");
printf(" 3 --- 分析 4 --- 统计\n");
printf(" 5 --- 分析 6 --- 统计\n");
printf(" 7 --- 分析 0 --- 统计\n\n");
printf("请键入一个数字进行选择=>");
scanf("%c",&num););//这句话好像第二遍操作时没有作用啊,直接打“请输入正确的数字进行选择=>”

while (num!='1' &&num!='2' &&num!='3' &&num!='4' &&num!='5' &&num!='6' &&num!='7' &&num!='0' )

printf("请输入正确的数字进行选择=>");
scanf("%c",&num
switch (num)

case '1': FuncationOne(); break;
case '2': FuncationTwo(); break;
case '3': FuncationThree(); break;
case '4': FuncationFour(); break;
case '5': FuncationFive(); break;
case '6': FuncationSix(); break;
case '7': FuncationSeven(); break;
default: FuncationZero();

goto loop;

还是一样啊

程序有点乱。首先我想说的是,C语言编程尽量不要用LOOP。很容易死循环。有WHILE和FOR还不够你用么?用LOOP时必需有IF判断,你的程序前面写 loop: //除非选择0,否则重复
但你程序结尾的时候是直接GOTO的,所以死循环。

在说为什么没执行第一个scanf的问题。
第一遍执行的时候不管你输入什么,都得以回车结束。所以你这个scanf就是回车。虽然回车能让scanf跳回不过如果你不清空缓存的话回车就被留下来了。

解决方法是加个清空缓存的函数。在scanf后面
fflush(stdin);

采纳吧。
参考技术A 这样就可以了,因为while的条件有问题

#include "stdio.h"
void main()

loop: /* 除非选择0,否则重复 */
printf("================幸运数字================\n");
printf(" 1 --- 分析 2 --- 统计\n");
printf(" 3 --- 分析 4 --- 统计\n");
printf(" 5 --- 分析 6 --- 统计\n");
printf(" 7 --- 分析 0 --- 统计\n\n");
printf("请键入一个数字进行选择=>");
scanf("%c",&num););/* 这句话好像第二遍操作时没有作用啊,直接打“请输入正确的数字进行选择=>” */

while (!(num>='0'&&num<='7') )/*当输入的字符 非1-7时*/

printf("请输入正确的数字进行选择=>");
scanf("%c",&num
switch (num)

case '1': FuncationOne(); break;
case '2': FuncationTwo(); break;
case '3': FuncationThree(); break;
case '4': FuncationFour(); break;
case '5': FuncationFive(); break;
case '6': FuncationSix(); break;
case '7': FuncationSeven(); break;
default: FuncationZero();

goto loop;

以上是关于c语言求助的主要内容,如果未能解决你的问题,请参考以下文章

跪求,C语言程序求助啊。

C语言结构体大小问题求助。

求助一道C语言设计题目

C语言求助。急急

动态数组c语言 求助!

C语言程序求助