這個做業屬於哪一個課程 | <班級的連接> |
---|---|
這個做業要求在哪裏 | <做業要求的連接> |
這個做業的目標 | 一、安裝C++開發環境二、完成問答題、實踐題及編程題三、發佈博客 |
做業正文 | 以下 |
其餘參考文獻 | <一> <二> <三> |
問答題: c語言的缺陷:語法不夠嚴格,安全性較差,不能面向對象編程,常常要考慮數組越界、地址訪問之類的問題html
c,c++編譯過程: 一、預處理,對源碼的僞指令和特殊符號進行處理 二、編譯,將通過預處理以後的程序轉換成特定彙編代碼 三、彙編,將彙編代碼轉換爲機器碼 四、連接,將目標文件連接生成可運行文件c++
實踐題: 本來就使用的vs,配置了環境變量,用cl語句編譯生成了exe文件,打印出了hello world,編譯器版本順帶顯示了 編程
編程題: 輸入輸出均支持兩位數 假設輸入數據有效 題目的難度在於數字和漢字的轉換 f1函數經過對輸入中文返回不一樣種類的數字,分爲四類,分別是0-10,11-19,10的倍數,及形如幾十幾的數字 f2函數用來分離字符串中的某個漢字 f3函數用於將輸入的單個漢字零-十轉換爲0-10 題目中有多處無用輸入,用字符串a處理 具體見代碼數組
#include <stdio.h> #include<string.h> int f1(char* s); void f2(char* a, char* b); int f3(char* s); char chinese[11][4] = { "零","一","二","三","四","五","六","七","八","九","十" }; int main(void) { int i; char a[10]; scanf("%s", a); if (strcmp(a, "整數") == 0) { int purse; for (i = 0; i < 3; i++) { scanf("%s", a); } purse = f1(a); scanf("%s", a); while (strcmp(a, "錢包") == 0) { scanf("%s", a); if (strcmp(a, "增長") == 0) { scanf("%s", a); purse += f1(a); } else if (strcmp(a, "減小") == 0) { scanf("%s", a); purse -= f1(a); } scanf("%s", a); } scanf("%s", a); //輸出中文 if (purse<=10)printf("%s", chinese[purse]); else if (purse > 10 && purse < 20)printf("十%s", chinese[purse - 10]); else if (purse % 10 == 0)printf("%s十", chinese[purse / 10]); else printf("%s十%s", chinese[purse / 10], chinese[purse % 10]); } return 0; } int f1(char* s)//將輸入的零-九十九中文轉換爲數字 { int i; if (strlen(s) == 2)//處理零-十 { return f3(s); } else if (strlen(s) == 4)//處理十一-十九及十的倍數 { char b[10] = ""; f2(b, s); if (strcmp(b, "十") == 0) { f2(b, s + 2); return 10 + f3(b); } else { return 10 * f3(b); } } else//處理形如幾十幾的漢字 { char b[10] = "",c[10]=""; f2(b, s); f2(c, s + 4); return 10 * f3(b) + f3(c); } } void f2(char* a,char* b)//用字符串a存儲字符串b的某一個漢字 { a[0] = b[0]; a[1] = b[1]; } int f3(char*s)//將輸入零-十中文轉換爲0-10 { int i; for (i = 0; i <= 10; i++) { if (strcmp(s, chinese[i]) == 0) return i; } }