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


這個作業屬於哪個課程 <班級的鏈接>
這個作業要求在哪里 <作業要求的鏈接>
這個作業的目標 1、安裝C++開發環境2、完成問答題、實踐題及編程題3、發布博客
作業正文 如下
其他參考文獻 <一> <二> <三>

問答題:
c語言的缺陷:語法不夠嚴格,安全性較差,不能面向對象編程,經常要考慮數組越界、地址訪問之類的問題

c,c++編譯過程:
1、預處理,對源碼的偽指令和特殊符號進行處理
2、編譯,將經過預處理之后的程序轉換成特定匯編代碼
3、匯編,將匯編代碼轉換為機器碼
4、鏈接,將目標文件鏈接生成可運行文件

實踐題:
原本就使用的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;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM