實驗二:命令列選單小程式V1.0【實驗樓系列shiyanlou.com】
阿新 • • 發佈:2019-02-08
一、實驗要求
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之後,終於學會了及時提交程式碼到版本庫的習慣,這是我這個實驗的最大收穫;
實驗並不難,但是卻花費了很長時間,主要是注意力不集中所至,還是希望自己能克服環境的影響,在學習的時間中專心無二意!
廣告時間
歡迎大家訪問我的——
如果能點一波關注想必是極好的(★ ω ★)
以上