实验2:命令行菜单小程序

火页凡 + 《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006

一.     实验步骤

Clone github库到实验环境

1.进入实验目录并创建实验一文件夹lab1

2.编写c文件,实现一个命令行的菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,

实现的命令8个:

help帮助

version版本号 

quit退出

upper将字符串中大写字母变小写

lower将字符串中小写字母变大写

add sub mult 分别计算两个数的加减乘

3.提交代码到版本库

二.     实验结果

1.help帮助 version查看版本号

2.quit退出 upper将字符串中大写字母变小写,lower将字符串中小写字母变大写

3.加减乘

    代码重现

1进入环境

2vi cmd.c

Error:(17, 0) Could not find method compile() for arguments [com.android.support:appcompat-v7:23.2.1] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Please install the Android Support Repository from the Android SDK Manager.
Open Android SDK Manager#include
  
   
#include
   
    
#include
    
     

void help()
{
    printf("+--------+---------------------------------+\n");
    printf("+ help   + cmd tips                        +\n");
    printf("+ quit   + exit cmd                        +\n");
    printf("+ version+ show version                        +\n");
    printf("+ upper  + change the case into uppercase Letters +\n");
    printf("+ lower  + change the case into lowercase Letters +\n");
    printf("+ sub    + subtraction of two numbers           +\n");
    printf("+ add    + addition of two numbers         +\n");
    printf("+ multi  + multiplication of two numbers   +\n");    
    printf("+--------+---------------------------------+\n");
}

void show(char flag)
{
    if(flag == 'v')
    {
        printf("the version is 1.0.0");
    }
    else 
    {
        int i;
        char arr[100];
        printf("please input contents:");
        scanf("%s", arr);
        if(flag == 'u')
        {
            for(i=0; arr[i]!='\0'; i++)
            {
                if(arr[i]>='A'&&arr[i]<='Z')
                    arr[i]+=32;
            }
            printf("%s", arr);
        }
        else
        {
            for(i=0; arr[i]!='\0'; i++)
            {
                if(arr[i]>='a'&&arr[i]<='z')
                    arr[i]-=32;
            }
            printf("%s", arr);
        }
    }
}

void cal(char flag)
{
    double num1,num2,count;
    printf("+-------*--------*--------*--------*-------+\n");
    printf("please input two numbers:");
    scanf("%lf %lf",&num1, &num2);
    char a;
    if(flag == 'a')
    {
        count = num1 + num2;
        a = '+';
    }
    else if(flag == 's')
    {
        count = num1 - num2;
        a = '-';
    }
    else
    {
        count = num1 * num2;
        a = '*';
    }
    printf("%lf  %c %lf = %lf \n",num1, a, num2, count);
}

int main()
{
    char cmd[256];
    while(1){
	    scanf("%s", cmd);
	    if(strcmp(cmd, "help") == 0)
	    {
	        help();
	    }
	    else if(strcmp(cmd, "version") == 0)
	    {
	        show('v');
	    }
	    else if(strcmp(cmd, "upper") == 0)
	    {
	        show('u');
	    }
	    else if(strcmp(cmd, "lower") == 0)
	    {
	        show('l');
	    }
	    else if(strcmp(cmd, "quit") == 0)
	    {
	        exit(0);
	    }
	    else if(strcmp(cmd, "add") == 0)
	    {
	        cal('a');
	    }
	    else if(strcmp(cmd, "mult") == 0)
	    {
	        cal('m');
	    }
	    else if(strcmp(cmd, "sub") == 0)
	    {
	        cal('s');
	    }
	    else
	    {
	        printf("no cmd");
	    }
    }
}

    
   
  

3保存提交

      心得总结

1.保存备份很重要,实验楼环境时不时断了,所以还是用自己的Linux环境做吧;csdn提交时又失败博客也要备份啊破网

2.学到了vi删除命令:%d

3.输入字符串时,gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,但使用gets编译报warning且调试发现并未执行,所以还是用的scanf,存在的问题如下图,空格后的串无法处理直接输出了无指令提示no cmd。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值