栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

选择打印程序(C语言新手)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

选择打印程序(C语言新手)

选择打印程序

Galgame中有选项的功能,我试着用C语言做了一个有类似的程序,当作是练习。

实验内容:
  • 实验项目名称:ATRI-REPLY-2
  • 实验任务:制作一个会回复的程序
  • 实验条件:多平台兼容
  • 编译环境:gcc
  • 使用语言:C语言
  • IDE:vscode
  • 备注:输入选项触发对应回答。
  • 日志:2021-10-17 实现运行,但存在多字符输入的问题。
    2021-10-17 使用define定义_Bool类型,
    并使用fflush(stdin)清空标准输入缓存区。
    2021-10-17 出现第二次打开会打印“Sorry,I only can understand ABCD.”,
    2021-10-17 将变量ch初始化,以此跳出循环,避免上述BUG。
    暂时解决,但不完全。
    2021-10-17 查阅ASCII码对照表,彻底解决问题。
1.出口循环
#include 
#include 
#define ture 1
#define false 0 //定义Bool类型

int main(void)
{
    char ch; //定义输入,并将ch变量初始化。
    do
    {
        switch (ch) //判断选项
        {
        case 'A':
        case 'a':
            printf("Answer1nn"); //打印回复1
            break;
        case 'B':
        case 'b':
            printf("Answer2nn"); //打印回复2
            break;
        case 'C':
        case 'c':
            printf("Answer3nn"); //打印回复3
            break;
        case 'D':
        case 'd':
            printf("Answer4nn"); //打印回复4
            break;
        case 'Q':
        case 'q':
            return 0; //终止程序
        default:
            if (ch >= 32)                                         //判断是否有输入字符
                printf("Sorry,I only can understand ABCDQ.nn"); //向用户反馈错误信息。
            break;
        }

        fflush(stdin); //清空标准输入缓存区

        printf("What do you want to choose to ask?n"
               "A.Question1     B.Question2n"
               "C.Question3     D.Question4n"
               "Q.Exitn"); //用户引导

    } while ((scanf("%c", &ch)) == ture); //输入执行出口循环
    return 0;
}
2.入口循环

相比出口循环,可读性较高。

int main(void)
{
    char ch; //定义输入。

    printf("What do you want to choose to ask?n"
           "A.Question1     B.Question2n"
           "C.Question3     D.Question4n"
           "Q.Exitn"); //用户引导

    while ((scanf("%c", &ch)) == ture) //执行入口循环
    {
        switch (ch) //判断选项
        {
        case 'A':
        case 'a':
            printf("Answer1nn"); //打印回复1
            break;
        case 'B':
        case 'b':
            printf("Answer2nn"); //打印回复2
            break;
        case 'C':
        case 'c':
            printf("Answer3nn"); //打印回复3
            break;
        case 'D':
        case 'd':
            printf("Answer4nn"); //打印回复4
            break;
        case 'Q':
        case 'q':
            return 0; //终止程序
        default:
            printf("Sorry,I only can understand ABCDQ.nn"); //向用户反馈错误信息。
            break;
        }

        fflush(stdin); //清空标准输入缓存区

        printf("What do you want to choose to ask?n"
               "A.Question1     B.Question2n"
               "C.Question3     D.Question4n"
               "Q.Exitn"); //用户引导
    }
    return 0;
}

  • 实验成果:
    1.fflush(stdin)刷新标准输入缓冲区,fflush(stdout)刷新标准输出缓冲区。
    需要引用头文件stdlib.h。
    2.出口循环先执行循环,再判断条件。
    3.空格的ASCII码为32,大于空白字符。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号