C语言循环输出菜单的程序,为什么scanf后的%前面要加个空格

C语言循环输出菜单的程序,为什么scanf后的%前面要加个空格,第1张

空格的作用是忽略你每次输入的换行符。

比如,当你输入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语言菜单程序编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9383418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存