您的位置:首页 > 其它

用switch语句制作菜单

2016-04-02 22:13 211 查看
声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。
switch语句可以用来在字符界面下制作菜单。给每个菜单项指定一个编号,用户通过输入编号来选择菜单项,switch语句判断用户输入的编号并执行相应的任务。下面我们通过一个例子来学习制作的过程。

例:编写一个简单程序对某门课的成绩进行统计分析,包括求平均成绩、找出最高成绩、统计不及格的人数和统计80分以上的人数。要求将这些功能制作成菜单项,用户可以随意选择。成绩存储在文件“grade.txt”中,每一行存储一个成绩。

分析:

定义四个函数分别实现四个功能,并对四个功能分别编号为1,2,3,4。用switch语句判断用户输入的编号,如果用户输入1,则调用求平均成绩的函数,… 输入4,则调用统计80分以上人数的函数。为了能让用户多次选择,加一个循环来重复操作直到用户不想继续为止。下面是详细的程序。

程序:

#include "stdio.h"

#include "stdlib.h"

#define NUMOFSTU 38

//print函数用于在显示菜单时,打印星号和空格。

void print(char c, int n)

{

int i;

for(i=1;i<=n;i++)

putchar(c);

}

//ave()函数用于求平均成绩

void ave()

{

int i;

float score,average,sum=0;

FILE*fp;

fp= fopen("grade.txt","r");

for(i=1;i<=NUMOFSTU;i++)

{

fscanf(fp,"%f",&score);

sum+= score;

}

average= sum/NUMOFSTU;

printf("\nTheaverage score is %.2f\n",average);

fclose(fp);

}

//max()函数用于找最高成绩

void max()

{

int i;

float score,max = -1;

FILE*fp;

fp= fopen("grade.txt","r");

for(i=1;i<=NUMOFSTU;i++)

{

fscanf(fp,"%f",&score);

if(score>max)

max= score;

}

printf("\nThemaximum score is %.2f\n",max);

fclose(fp);

}

//numOfFailing()函数用于统计不及格人数

void numOfFailing()

{

int i,count=0;

float score;

FILE*fp;

fp= fopen("grade.txt","r");

for(i=1;i<=NUMOFSTU;i++)

{

fscanf(fp,"%f",&score);

if(score<=60)

count++;

}

printf("\nThenumber of failing grade is %d\n",count);

fclose(fp);

}

//numOf80()函数用于统计80分以上人数

void numOf80()

{

int i,count=0;

float score;

FILE*fp;

fp= fopen("grade.txt","r");

for(i=1;i<=NUMOFSTU;i++)

{

fscanf(fp,"%f",&score);

if(score>=80)

count++;

}

printf("\nThenumber of grades greater than 80 is %d\n",count);

fclose(fp);

}

int main()

{

int choice;

char ifcontinue;

//显示菜单

putchar('\n');

print('',10);

print('*',60);

putchar('\n');

print('',20);

printf("1--Calculate the average score\n");

print('',20);

printf("2--Find the maximum score\n");

print('',20);

printf("3--Count the number of failing grades\n");

print('',20);

printf("4--Count the number of grades greater than 80\n");

print('',20);

printf("5--Exit\n");

print('',10);

print('*',60);

putchar('\n');

//等待用户选择菜单项

while(1)

{

printf("\nPleaseselect menu item (key in 1-5): ");

scanf("%d",&choice);

//根据用户不同的选择,调用相应的函数

switch(choice)

{

case1: ave(); break;

case2: max(); break;

case3: numOfFailing(); break;

case4: numOf80(); break;

case5: exit(0);break;

default:printf("\nInvalid input!\n");

}

printf("\nIfyou want to continue, press y, otherwise, press any other key!");

getchar();

ifcontinue= getchar();

if(ifcontinue!='y')

break;

}

return0;

}

图1显示了运行结果。首先显示菜单,并提示用户输入菜单项的编号,当用户选择了1以后,程序输出平均成绩。如果还想继续,可以输入字符’y’,用户可以选择其他操作。



图1. 运行结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: