1. 程式人生 > >實驗二:命令列選單小程式V1.0【實驗樓系列shiyanlou.com】

實驗二:命令列選單小程式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之後,終於學會了及時提交程式碼到版本庫的習慣,這是我這個實驗的最大收穫;

  實驗並不難,但是卻花費了很長時間,主要是注意力不集中所至,還是希望自己能克服環境的影響,在學習的時間中專心無二意!

廣告時間

歡迎大家訪問我的——

如果能點一波關注想必是極好的(★ ω ★)

以上