有没有能帮我一下这题,利用C语言(c) 非常感谢

img


有没有能帮我一下这题,利用C语言(c)
非常感谢

输入0到999是吧
大于等于100的情况(三位数)
大于等于10的情况(两位数)
剩下的情况是(一位数)

用%运算符,吧每一位数取出来


// caimi2.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <string>

void ClearBuf(char cBufftemp[500])
{
    memset(cBufftemp,'\0',500);
}
void Add_Space_ToEnd(char cBufftemp[500])
{
    int len = strlen(cBufftemp);
    memset(cBufftemp + len, ' ', 1);
}
void Add_teen_ToEnd(char cBufftemp[500])
{
    int len = strlen(cBufftemp);
    memcpy(cBufftemp + len, "teen", sizeof("teen"));
}
void Add_ty_ToEnd(char cBufftemp[500])
{
    int len = strlen(cBufftemp);
    memcpy(cBufftemp + len, "ty", sizeof("ty"));
}
void Add_lian_ToEnd(char cBufftemp[500])
{
    int len = strlen(cBufftemp);
    memset(cBufftemp + len, '-', 1);
}
void ComBine_ToEnd(char cBufftemp1[500], char cBufftemp2[500])
{
    int len1 = strlen(cBufftemp1);
    int len2 = strlen(cBufftemp2);
    memcpy(cBufftemp1 + len1, cBufftemp2, strlen(cBufftemp2));
}
void Add_hundred_ToEnd(char cBufftemp[500])
{
    int len = strlen(cBufftemp);
    memcpy(cBufftemp + len, "hundred", sizeof("hundred"));
}
void Add_space_and_space_ToEnd(char cBufftemp[500])
{
    int len = strlen(cBufftemp);
    memcpy(cBufftemp + len, " and ", sizeof(" and "));
}


// 十位时 变形前缀
void ShiWeiPrifix(int iShu, char cBufftemp[500])
{
    ClearBuf(cBufftemp);
    switch (iShu)
    {
    case 2:
        memcpy(cBufftemp, "twen", sizeof("twen"));
        break;
    case 3:
        memcpy(cBufftemp, "thir", sizeof("thir"));
        break;
    case 4:
        memcpy(cBufftemp, "for", sizeof("for"));
        break;
    case 5:
        memcpy(cBufftemp, "fif", sizeof("fif"));
        break;
    case 6:
        memcpy(cBufftemp, "six", sizeof("six"));
        break;
    case 7:
        memcpy(cBufftemp, "seven", sizeof("seven"));
        break;
    case 8:
        memcpy(cBufftemp, "eigh", sizeof("eigh"));
        break;
    case 9:
        memcpy(cBufftemp, "nine", sizeof("nine"));
        break;
    default:
        break;
    }
}


void GeWeiRead(int iShu, char cBufftemp[500])
{
    ClearBuf(cBufftemp);
    switch (iShu)
    {
    case 0:
        memcpy(cBufftemp, "zero", sizeof("zero"));
        break;
    case 1:
        memcpy(cBufftemp, "one", sizeof("one"));
        break;
    case 2:
        memcpy(cBufftemp, "two", sizeof("two"));
        break;
    case 3:
        memcpy(cBufftemp, "three", sizeof("three"));
        break;
    case 4:
        memcpy(cBufftemp, "four", sizeof("four"));
        break;
    case 5:
        memcpy(cBufftemp, "five", sizeof("five"));
        break;
    case 6:
        memcpy(cBufftemp, "six", sizeof("six"));
        break;
    case 7:
        memcpy(cBufftemp, "seven", sizeof("seven"));
        break;
    case 8:
        memcpy(cBufftemp, "eight", sizeof("eight"));
        break;
    case 9:
        memcpy(cBufftemp, "nine", sizeof("nine"));
        break;
    default:
        break;
    }

}

void ShiWeiRead(int iShu, char cBufftemp[500])
{
    ClearBuf(cBufftemp);
    if (iShu >= 10 && iShu<=12)
    {
        switch (iShu)
        {
        case 10:
            memcpy(cBufftemp, "ten", sizeof("zero"));
            break;
        case 11:
            memcpy(cBufftemp, "eleven", sizeof("eleven"));
            break;
        case 12:
            memcpy(cBufftemp, "twelve", sizeof("twelve"));
            break;
        }
    }
    else if (iShu >= 13 && iShu <= 19)
    {
        // 取得个位
        int iGeWeiTemp = iShu % 10;
        if (iGeWeiTemp==4)
        {
            memcpy(cBufftemp, "four", sizeof("four"));
        }
        else
        {
            ShiWeiPrifix(iGeWeiTemp, cBufftemp);
        }
        Add_teen_ToEnd(cBufftemp);
    }
    else if (iShu >= 20 && iShu<=99)
    {
        char cBufftempShiWei[500] = { '\0' };
        char cBufftempGeWei[500] = {'\0'};
        // 取得十位
        int iShiWeiTemp = iShu / 10;
        ShiWeiPrifix(iShiWeiTemp, cBufftempShiWei);
        Add_ty_ToEnd(cBufftempShiWei);
        // 取得个位
        int iGeWeiTemp = iShu % 10;
        if (iGeWeiTemp==0)
        {

        }
        else
        {
            Add_lian_ToEnd(cBufftempShiWei);
            GeWeiRead(iGeWeiTemp, cBufftempGeWei);
        }

        ComBine_ToEnd(cBufftempShiWei, cBufftempGeWei);
        ComBine_ToEnd(cBufftemp, cBufftempShiWei);
    }

}

void BaiWeiRead(int iShu, char cBufftemp[500])
{
    ClearBuf(cBufftemp);
    // 取得百位
    int iBaiWeiTemp = iShu / 100;
    char cBufftempBaiWei[500] = { '\0' };
    GeWeiRead(iBaiWeiTemp, cBufftempBaiWei);
    Add_Space_ToEnd(cBufftempBaiWei);
    Add_hundred_ToEnd(cBufftempBaiWei);

    // 取得十位和个位
    char cBufftempShiWeiGeWei[500] = { '\0' };
    int iShiWeiGeWeiTemp = iShu - iBaiWeiTemp * 100;
    if (iShiWeiGeWeiTemp==0)
    {

    }
    else if (iShiWeiGeWeiTemp >= 1 && iShiWeiGeWeiTemp<=9)
    {
        Add_space_and_space_ToEnd(cBufftempBaiWei);
        GeWeiRead(iShiWeiGeWeiTemp, cBufftempShiWeiGeWei);
    }
    else if (iShiWeiGeWeiTemp >= 10 && iShiWeiGeWeiTemp <= 999)
    {
        Add_Space_ToEnd(cBufftempBaiWei);
        ShiWeiRead(iShiWeiGeWeiTemp, cBufftempShiWeiGeWei);
    }
    ComBine_ToEnd(cBufftempBaiWei, cBufftempShiWeiGeWei);
    ComBine_ToEnd(cBufftemp, cBufftempBaiWei);
}

void SanWeiRead(int iShu, char cBuf[500])
{    
    // 不是三位数
    if (iShu >= 1000 || iShu < 0)
    {
        return;
    }

    // 如果是一位数
    if (iShu >= 0 && iShu < 10)
    {
        GeWeiRead(iShu, cBuf);
    }
    // 如果是两位数
    if (iShu >= 10 && iShu < 100)
    {
        ShiWeiRead(iShu, cBuf);
    }
    // 如果是三位数
    if (iShu >= 100 && iShu < 1000)
    {
        BaiWeiRead(iShu, cBuf);
    }
}


int _tmain(int argc, _TCHAR* argv[])
{
    char cBufftt[500] = { '\0' };
    SanWeiRead(10, cBufftt);
    SanWeiRead(11, cBufftt);
    SanWeiRead(12, cBufftt);
    SanWeiRead(13, cBufftt);
    SanWeiRead(14, cBufftt);
    SanWeiRead(15, cBufftt);
    SanWeiRead(19, cBufftt);
    SanWeiRead(20, cBufftt);
    SanWeiRead(21, cBufftt);
    SanWeiRead(29, cBufftt);
    SanWeiRead(30, cBufftt);
    SanWeiRead(31, cBufftt);
    SanWeiRead(39, cBufftt);
    SanWeiRead(40, cBufftt);
    SanWeiRead(41, cBufftt);
    SanWeiRead(49, cBufftt);
    SanWeiRead(50, cBufftt);
    SanWeiRead(52, cBufftt);
    SanWeiRead(60, cBufftt);


    SanWeiRead(100, cBufftt);
    SanWeiRead(101, cBufftt);
    SanWeiRead(104, cBufftt);
    SanWeiRead(105, cBufftt);
    SanWeiRead(108, cBufftt);
    SanWeiRead(200, cBufftt);
    SanWeiRead(204, cBufftt);
    SanWeiRead(205, cBufftt);
    SanWeiRead(211, cBufftt);
    SanWeiRead(300, cBufftt);
    SanWeiRead(301, cBufftt);
    SanWeiRead(311, cBufftt);
    SanWeiRead(355, cBufftt);
    SanWeiRead(399, cBufftt);
    SanWeiRead(400, cBufftt);
    SanWeiRead(401, cBufftt);
    SanWeiRead(440, cBufftt);
    SanWeiRead(480, cBufftt);
    SanWeiRead(801, cBufftt);
    SanWeiRead(808, cBufftt);
    SanWeiRead(899, cBufftt);
    SanWeiRead(900, cBufftt);
    SanWeiRead(911, cBufftt);
    SanWeiRead(912, cBufftt);
    SanWeiRead(914, cBufftt);
    SanWeiRead(940, cBufftt);
    SanWeiRead(918, cBufftt);
    SanWeiRead(980, cBufftt);
    SanWeiRead(999, cBufftt);


    printf("输入一个数3位以内的数");
    int iZhengShu;
    scanf("%d", &iZhengShu);

    char cBuff[500] = { '\0' };

    SanWeiRead(iZhengShu, cBuff);

    printf("%s", cBuff);

    return 0;
}