实验代码:

#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语言还有些基础没弄明白,不会

运行结果截图:

寒假作业 pta编程总结2的更多相关文章

  1. 寒假作业 pta编程总结3

    实验代码: 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕 ...

  2. 2018秋寒假作业6- -PTA编程总结3

    PTA3抓老鼠啊~亏了还是赚了?思路: 首先定义变量并初始化为零,然后用if-else语句判断其关系和计算奶酪数量及盈利情况.

  3. 2018秋寒假作业4- -PTA编程总结1

    PTA1打印沙漏.打印沙漏中的“沙漏形状”,就是每行输出的奇数符号与各行符号中心对齐:相邻两行符号数相差2:符号数从大到小递减到1,再从小到大递增.在做的时候出了几次错,编译发先是几个小地方出错了.以 ...

  4. Q114寒假作业之割绳子

    割绳子 TimeLimit:1000MS  MemoryLimit:10000K 64-bit integer IO format:%lld Problem Description 已知有n条绳子,每 ...

  5. Luogu P2717 寒假作业(平衡树)

    P2717 寒假作业 题意 题目背景 \(zzs\)和\(zzy\)正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有\(n\)项寒假作业.\(zzy\)给每项寒假作业都定义了一个疲劳值 ...

  6. 寒假作业---蓝桥杯---DFS

    题目描述 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: 每个方块代表1~13中的某一个数字,但不能重复. 比如: 6  + 7 = 13 9  - 8 = 1 3  * 4 = 12 10 ...

  7. java 寒假作业

    寒假作业 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ (如果显示不出来,可以参见[图1.jpg]) 每个方 ...

  8. 2016蓝桥杯省赛C/C++A组第六题 寒假作业

    题意:现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ 每个方块代表1~13中的某一个数字,但不能重复. 比如: ...

  9. java实现第七届蓝桥杯寒假作业

    题目6.寒假作业 寒假作业 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ (如果显示不出来,可以参见[图1. ...

随机推荐

  1. pyinstaller深入使用,打包指定模块,打包静态文件

    1.标准用法: pyinstall  **.py  直接打包    pyinstall -F **.py  打包成单文件    pyinstall -W **.py  去掉控制台窗口,黑窗口    p ...

  2. eclipse代码自动补全。

    打开 Eclipse -> Window -> Perferences 找到Java 下的 Editor 下的 Content Assist , 右边出现的选项中,有一个Auto acti ...

  3. complex类的定义和实现

    #include<iostream> #include<cmath> using namespace std; class complex { public: complex( ...

  4. Ubuntu16.04安装MongoDB的Ruby驱动

    背景: 1. ruby的安装方式:sudo apt-get install ruby 2. mongod服务已开启 3. ruby版本:2.3, gem已安装 安装驱动的步骤: 1. gem inst ...

  5. 页面制作学习笔记:D2.Photoshop切图基础知识

    一.什么是切图? 切图就是从网页设计稿中切出网页素材,比如一些小的按钮.小的图片.页面的LOGO.网页的背景图片等. 然后就是页面编码,引入图片资源 在HTML里通过 img 标签引入图片资源 < ...

  6. 移动端弹出层加遮罩后禁止body滑动

    //实现滚动条无法滚动 var mo=function(e){e.preventDefault();}; /***禁止滑动***/ function stop(){ document.body.sty ...

  7. HTML5 浏览器支持

    css重置 header, section, footer, aside, nav, main, article, figure { display: block; } 为HTML添加新的元素 < ...

  8. JVM概念以及常用设置

    DAY 1 Jvm- java虚拟机 类加载子系统 加载class文件到方法区 方法区 存放类信息 常量信息 常量池信息 辅助堆栈的永久区,解决堆栈信息的产生,是先决条件 3.  Java堆(重要) ...

  9. 20165214 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 Week5

    <网络对抗技术>Exp3 免杀原理与实践 Week5 一.实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shell ...

  10. OpenGL坐标系的理解

    搬运自: https://learnopengl-cn.github.io/01%20Getting%20started/08%20Coordinate%20Systems/#3d 为了将坐标从一个坐 ...