• 寒假作业 pta编程总结2


    实验代码:

    #include<stdio.h>
    #include<stdbool.h>
     
    void toNUM(int n);
    void toUNIT(int n);
     
    int main()
    {
        bool BeginC = false;
        bool Czero = false;
        int a[9] = {0};
        int n, i, j, tmp;
        scanf("%d", &n);
        for(i=100000000, j=0; i>0; i/=10)
        {
            a[j] = n/i;
            n %= i;
            j++;
        }
        for(i=0; i<j; i++)
        {
            //printf("a[%d]:%d", i, a[i]);
            if(a[i]>0)
            {
                BeginC = true;
            }
            if(BeginC)
            {
                if(a[i] != 0)
                {
                    if(Czero) /**< 用来标记读xx万零xx的数 */
                    {
                        if(i!=5) /**<如果遇到连续0,直到千位,前面可以不读0  */
                        {
                            printf("a");
                        }
                        Czero = false;
                    }
                    toNUM(a[i]);
                    toUNIT(i);
                }
                if(a[i] == 0)
                {
                     /**< if(i == 4)   本来if语句我是写成这样的,用例全过,但是对于100000001这个数,输出是错的,因为输多了一个W,所以改成加上对万位的判断*/               
                    if(i == 4 && ((a[1]!=0) || (a[2]!=0) || (a[3]!=0)|| (a[4]!=0))) /**< 考虑到1001001应该读作1千万1千零1,即使万位遇0还是要读出 */
                            toUNIT(i);
                    Czero = true;
                }
     
            }
        }
        if(!BeginC)
        {
            printf("a"); /**< 如果数组一直为0,输出0 */
        }
        system("pause") ;
    }
     
    void toNUM(int n)
    {
        switch(n)
        {
        case 0:
            printf("a");
            break;
        case 1:
            printf("b");
            break;
        case 2:
            printf("c");
            break;
        case 3:
            printf("d");
            break;
        case 4:
            printf("e");
            break;
        case 5:
            printf("f");
            break;
        case 6:
            printf("g");
            break;
        case 7:
            printf("h");
            break;
        case 8:
            printf("i");
            break;
        case 9:
            printf("j");
            break;
        default:
            printf("@ERROR@");
            break;
        }
    }
    void toUNIT(int n)
    {
        switch(n)
        {
        case 0:
            printf("Y");
            break;
        case 1:
            printf("Q");
            break;
        case 2:
            printf("B");
            break;
        case 3:
            printf("S");
            break;
        case 4:
            printf("W");
            break;
        case 5:
            printf("Q");
            break;
        case 6:
            printf("B");
            break;
        case 7:
            printf("S");
            break;
        default:
            printf("");
            break;
        }
    }

    本题调试过程碰到问题及解决办法:

    问题一:总是不小心漏代码,导致调试过程中总要回头,以致花太多时间

    问题二;有些代码不会写比如:    default, Czero = false等,要去请教大佬,或者跟已完成的代码去比较才能完成

    问题三:c语言还有些基础没弄明白,不会

    运行结果截图:

  • 相关阅读:
    cookie,session,token
    自己动手写一个简易对象关系映射,ORM(单例版和数据库池版)
    Python,针对指定文件类型,过滤空行和注释,统计行数
    MySQL 数据类型
    MySQL 基础小技巧
    Python测量时间,用time.time还是time.clock
    [计算机网络]想出网关?你需要懂得这些
    [数据结构与算法]05 Stack 经典面试题之判断字符串是否合法( Java 版)
    [自考总结]想要去的远方,终有一天会到达
    [数据结构与算法]04 Link List (链表)及单链表反转实现
  • 原文地址:https://www.cnblogs.com/changanshisanzhao/p/10409805.html
Copyright © 2020-2023  润新知