实验二:命令行菜单小程序V1.0【实验楼系列shiyanlou.com】

一、实验要求

1、代码风格规范:

  • 代码风格的原则:简明、易读、无二义性;
  • 缩进、命名、注释等代码编排的风格规范;
  • 《构建之法》4.1代码规范
  • 高质量C++/C编程指南(林锐)

2、具体要求(参照视频中的具体实验过程):

  • 实现一个命令行的菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,实现的命令个数不少于8个;
  • 类似ftp的help目录或者bash的help目录;
  • 程序循环、接收用户的命令,如help、others等命令;
  • 可以广泛通用的命令行菜单子系统组件,可方便地定制而嵌入到其他系统;

二、实验过程

1、更改vimrc设置

set tabstop=4
set cindent
set hlsearch

2、打开实验目录,新建并打开文件夹lab2

cd Code/shiyanlou_cs122
mkdir lab2
cd lab2

3、新建menu.c文件并进入vim编辑器

vi menu.c

4、进行c语言编程,完成命令行的菜单小程序,完整代码如下

#include <stdio.h>
#include <stdlib.h>
void help();
void quit();
void hello();
void bigger();
void add();
void sub();
void multi();
void divi();
int main()
{
    char cmd[256];
    while (1)
    {
        scanf ("%s", cmd);
        if (strcmp(cmd, "help") == 0)
        {
            help();
        }
        else if (strcmp(cmd, "quit") == 0)
        {
            quit();
        }
        else if (strcmp(cmd, "hello") == 0)
        {
            hello();
        }
        else if (strcmp(cmd, "bigger") == 0)
        {
            bigger();
        }
        else if (strcmp(cmd, "add") == 0)
        {
            add();
        }
        else if (strcmp(cmd, "sub") == 0)
        {
            sub();
        }
        else if (strcmp(cmd, "multi") == 0)
        {
            multi();
        }
        else if (strcmp(cmd, "div") == 0)
        {
            divi();
        }
        else
        {
            printf("Error Command!\n\n");
            help();
        }

    }

    return 0;
}
void help()
{
    printf("+--------+---------------------------------+\n");
    printf("+ name   + desciption                      +\n");
    printf("+--------+---------------------------------+\n");
    printf("+ help   + cmd tips                        +\n");
    printf("+ quit   + exit cmd                        +\n");
    printf("+ hello  + welcome                         +\n");
    printf("+ bigger + bigger of two numbers           +\n");
    printf("+ add    + addition of two numbers         +\n");
    printf("+ sub    + subtraction of two numbers      +\n");
    printf("+ multi  + multiplication of two numbers   +\n");
    printf("+ div    + division of two numbers         +\n");
    printf("+--------+---------------------------------+\n");
}
void quit()
{
    exit(0);
}
void hello()
{
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Hi~My name is He Jinlong\n");
    printf("Thank you for use my cmd program!\n");
}
void bigger()
{
    double num1,num2,bigger;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Bigger!\nplease input two numbers:");
    scanf("%lf %lf",&num1,&num2);
    bigger = num1 > num2 ? num1 : num2;
    printf("%lf is bigger than the other\n",bigger);
}
void add()
{
    double num1,num2,add;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Addition!\nplease input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    add = num1 + num2;
    printf("%lf + %lf = %lf \n",num1, num2, add);
}
void sub()
{
    double num1,num2,sub;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Subtraction!\n please input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    sub = num1 - num2;
    printf("%lf - %lf = %lf\n",num1, num2, sub);
}
void multi()
{
    double num1,num2,multi;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Multiplcation!\n please input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    multi = num1 * num2;
    printf("%lf * %lf = %lf\n",num1, num2, multi);
}
void divi()
{
    double num1,num2,div;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("Division!\n please input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    if (num2 == 0)
    {
        printf("Error:divisor can not be zero!\n");
    }
    else
    {
        div = num1 / num2;
        printf("%lf / %lf = %lf\n",num1, num2, div);
    }
}

5、程序代码部分截图

图片描述

图片描述

图片描述

图片描述

6、程序演示过程

图片描述

图片描述

7、提交代码至版本库中

git add menu.c
git commint -m "cmd menu"
git push origin master

8、实验中遇到的问题与心得

  这个实验耗费了我大量的时间,其中几次严重的事故是因为我没有保存代码,最后,在几次的重新coding之后,终于学会了及时提交代码到版本库的习惯,这是我这个实验的最大收获;

  实验并不难,但是却花费了很长时间,主要是注意力不集中所至,还是希望自己能克服环境的影响,在学习的时间中专心无二意!

广告时间

欢迎大家访问我的——

如果能点一波关注想必是极好的(★ ω ★)

以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值