空格的作用是忽略你每次输入的换行符。
比如,当你输入1<换行>时,用%c首先会读取1,执行case '1':,然后又会读取'\n',执行default:。
要丢弃1行中除第1个字符外的其它字符,这样做更好:
scanf("%c",&x);
fflush(stdin);
这样,就允许你输入1行字符,只读取第1个,如:
123as 526 <换行>
只会读入1,执行case '1':。
1、使用输出函数即可。
2、例程:
#include <iostream>#include <stdlibh>
#include <conioh>
#include <ctypeh>
using namespace std;
void xuanzepaixu() //选择排序函数
{
printf("待添加,请按任意键继续");
getchar();
}
void erfenpaixu() //二分查找函数
{
printf("待添加,请按任意键继续");
getchar();
}
void menu() //主菜单
{
system("cls"); //清屏
printf("\n\t\t\t 菜单\n");
printf("\t\t\t##\n");
printf("\t\t\t# 1选择排序 #\n");
printf("\t\t\t# 2二分查找 #\n");
printf("\t\t\t# 3返回 #\n");
printf("\t\t\t# 4---关闭 #\n");
printf("\t\t\t##\n");
printf("\t\t\t 请选择(1-4) =:");
}
void main()
{
char select;
while(1)
{
menu();
system("COLOR 9f");
scanf("%c",&select);
if(select=='3')
break; //返回上级菜单
else
{
getchar(); //读入回车符
if(!isdigit(select)) //如果不是数字字符
{
printf("\n\7Your select may be wrong, must enter the digit!\n");_getch();
}
else
{
switch (select)
{
case '1': xuanzepaixu();break;
case '2': erfenpaixu();break;
case '4':exit(0); //直接退出
default:
{
printf("\n\7\7Your selected digit may be wrong, select again!\n");
_getch();
break;
}
}
}
}
};
}
#include
<stdioh>
#include
<mathh>
void
armstrong(int
a)
{
int
i;
int
n
=
1;
int
b
=
a;
int
s
=
0;
while(b
/=
10)
n++;
b
=
a;
for(i
=
0;
i
<
n;
i
++){
s
+=
(int)pow(b%10,
n);
b
/=
10;
}
if(s
==
a){
printf("%d
是水仙花数!\n",
a);
}else{
printf("%d
不是水仙花数!\n",
a);
}
}
void
prime(int
a)
{
int
i;
if(a
<
2)
{
printf("%d
不是素数!\n",
a);
return
;
}
for(i
=
2;
i
<
a;
i
++){
if(a
%
i
==
0)
{
printf("%d
不是素数!\n",
a);
return
;
}
}
printf("%d
是素数!\n",
a);
}
void
max(int
a,
int
b,
int
c)
{
if(b
>
a)
a
=
b;
if(c
>
a)
a
=
c;
printf("最大值是:%d\n",
a);
}
void
factorial(int
a)
{
int
i;
int
f
=
1;
for(i
=
a;
i
>1;
i
--)
f
=
i;
printf("%d
的阶乘是:%d\n",
a,
f);
}
int
main(int
argc,
char
argv)
{
int
a,
b,
c;
int
type
;
int
run
=
1;
printf("本程序可完成某些数学计算:\n");
printf(
"\n"
"
1判断一个数是否为水仙花数。
\n"
"
2判断一个数是否为素数。
\n"
"
3求三个数的最大值。
\n"
"
4求一个数的阶乘。
\n"
"
0退出。
\n"
"\n");
do{
printf("请按菜单进行选择(0-4):");
scanf("%d",
&type);
switch(type){
case
0:
while(1){
getchar();
printf("你确定退出吗?(y/n)");
a
=
getchar();
switch(a){
case
'y':
run
=
0;
break;
case
'n':
run
=
1;
break;
default:
break;
}
if((a
==
'y')
||
(a
==
'n'))
break;
}
break;
case
1:
printf("请输入一个数:");
scanf("%d",
&a);
armstrong(a);
break;
case
2:
printf("请输入一个数:");
scanf("%d",
&a);
prime(a);
break;
case
3:
printf("请输入三个数:");
scanf("%d%d%d",
&a,
&b,
&c);
max(a,
b,
c);
break;
case
4:
printf("请输入一个数:
");
scanf("%d",
&a);
factorial(a);
break;
default:
break;
}
}while(run);
return
0;
}
1、如果只是想返回已经写好的主菜单页面的话 可以直接在当前函数中结束位置调用主菜单所在的函数,如果想输入e68a847a686964616f31333337616636某值返回的话 就加个输入提示 比如 在其他函数页面加上“输入0返回主菜单”就可以在任意时候 输入0来返回 当然实现的时候也是输入语句加判断语句 加调用主菜单所在函数,调用前先调用清屏函数。
2、例程:
#include<stdioh>int menu(){ int rt; char str[256]; printf("1 \n"); printf("2 \n"); printf("3 \n"); printf("4 \n"); printf("5 退出程序\n"); printf("请选择,输入选项前面的数字后回车: "); scanf("%s",str); if ( str[0]>='1' && str[0]<='5' ) rt=str[0]-'0'; else rt=0; return rt;}void f1() {}void f2() {}void f3() {}void f4() {}void main(){ int s,loop=1; while ( loop ) { s=menu(); switch ( s ) { case 1: f1(); break; case 2: f2(); break; case 3: f3(); break; case 4: f4(); break; case 5: loop=0; break; default: break; } }}
以上就是关于C语言循环输出菜单的程序,为什么scanf后的%前面要加个空格全部的内容,包括:C语言循环输出菜单的程序,为什么scanf后的%前面要加个空格、怎么写简单的C语言菜单、C语言菜单程序编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)