2020面向對象程序設計寒假做業1 題解

這個做業屬於哪一個課程 <班級的連接>
這個做業要求在哪裏 <做業要求的連接>
這個做業的目標 一、安裝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;
    }
}
相關文章
相關標籤/搜索