zoukankan      html  css  js  c++  java
  • 寒假作业 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语言还有些基础没弄明白,不会

    运行结果截图:

  • 相关阅读:
    add to svn ignore disabled
    Zend 安装 OpenExplorer插件
    Win7系统怎么清理注册表残留?【系统天地】
    永久免费Win10企业版激活密钥大全【系统天地】
    Win7取消自动锁屏的方法步骤【系统天地】
    手把手教你怎么激活windows10专业版【系统天地】
    win8解除网速限制的操作方法【系统天地】
    教你win10系统显卡驱动安装失败的解决方法【系统天地】
    Win7移动硬盘在电脑上不显示怎么办【系统天地】
    Win10运行程序提示不受信任的解决方法【系统天地】
  • 原文地址:https://www.cnblogs.com/changanshisanzhao/p/10409805.html
Copyright © 2011-2022 走看看