C语言实现一个简单的菜单程序案例代码

【问题描述】实现一个简单的菜单程序,运行时显示:“Menu:A(dd) D(elete) S(ort) Q(uit),Select one:”提示用户输入。
A表示增加;D表示删除;S表示排序;Q表示退出。
输入为A、D、S时为了提示数据已经增加、删除、排序,则显示输出:Added、Deleted或者Sorted;
输入为Q时显示Quit然后程序结束。
每执行完一次输入和输出提示后,循环显示菜单信息:“Menu:A(dd) D(elete) S(ort) Q(uit),Select one:”
【提示】应用循环结构和选择结构套用。其中,选择结构要求用if-else语句以及break和continue语句完成。
【输入形式】单个字符
【输出形式】字符对应的操作结果
【样例输入】
A
Q

【样例输出】
Menu: A(dd) D(elete) S(ort) Q(uit),Select one:
Added.
Menu: A(dd) D(elete) S(ort) Q(uit),Select one:
Quit.
【提示】注意单词末尾的句号

源代码

#include <stdio.h>

int main() {
    char choice;

    while (1) {
        printf("Menu: A(dd) D(elete) S(ort) Q(uit), Select one:");
        scanf("%c", &choice);
        getchar();  // 消耗输入中的回车符

        if (choice == 'A') {
            printf("Added.\n");
        } else if (choice == 'D') {
            printf("Deleted.\n");
        } else if (choice == 'S') {
            printf("Sorted.\n");
        } else if (choice == 'Q') {
            printf("Quit.\n");
            break;
        } else {
            printf("Invalid input.\n");
            continue;
        }
    }

    return 0;
}

程序通过一个while循环不断接受用户输入,并根据用户的选择执行相应的操作,直到用户选择退出。

在循环内部,首先打印出菜单信息,然后使用scanf函数读取用户输入的字符(注意%c格式符后面需要加&符号)。由于在输入字符时可能会留下回车符,因此需要使用getchar函数消耗掉回车符,否则可能导致下一次循环直接结束。

接下来使用if-else语句判断用户选择的是哪个操作,并作出相应的响应。如果用户选择退出,就使用break语句结束循环。如果用户输入的是无效字符,则使用continue语句跳过本次循环,重新打印菜单信息,等待用户重新输入。

注意,在读取字符时要使用scanf函数而不是gets函数。因为gets函数会读取一行输入,如果用户在输入后按下回车键,整行输入就结束了,任何后续的输入都会被当做下一次循环中的数据处理。这就会导致异常和错误。

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享