一、實驗要求
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 documents/code
mkdir lab2
cd lab2
4、進行c語言編程,完成命令行的菜單小程序,完整代碼如下
#include <stdio.h>
#include <stdlib.h>
void help();
void caonima();
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, "caonima") == 0)
{
caonima();
}
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("+ caonima+ 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 caonima()
{
exit(0);
}
void hello()
{
printf("+-------*--------*--------*--------*-------+\n");
printf("Hi~My name is li xueyu!\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、程序演示過程
感謝孟老師的指導,課程來自 ykt1504834575963+ 《軟件工程(C編碼實踐篇)》MOOC課程作業http://mooc.study.163.com/course/USTC-1000002006 】