zoukankan      html  css  js  c++  java
  • PAT Basic Level 1002

    题目:

    思路:1.输入的数据大小巨大无法用int,double类型保存并且题设要求需要读取每位上的数字所以选择用char数组保存。将其每位相加后用printchn函数打印出。

    2.pringchn函数:读入一个数字,我们要先输出的最高位,呢么如何获取他的最高位?例 a = 1234,如何先获取1呢?显然将 a / 1000,呢么如何得到1000呢?

    a.    设置mask = 1; 让a不停除以10知道得到0为止,每除以一次10,mask * 10。 a = a / 10 = 123,mask *= 10; a = a / 10 = 12 mask *= 10....

    注意最后得到的mask 大一位 a = 1234 ,mask = 10000,最后需要将mask / 10。

    b.   得到mask后利用a / mask 得到最高位 ,每次做完 另 a = a%mask,mask /= 10;

    重点思考数字中的零和末尾的零是否有影响。

    1.在求mask的过程中:即使中间或末尾有零皆不影响,因为只有当a = 0时才停止mask自乘。例:a = 10450, a = 1045 ,a= 104 , a = 10,a = 1,a = 0,

    2.在正序取出每位数字时:重点注意结束条件不是 a != 0 而是 mask != 0;例:a = 10000,mask = 10000; a = 10000 / mask = 1, mask /= 10 = 1000;a = 1 / mask = 0,mask /= 10 = 100;a = 0 / mask = 0,mask /= 10 = 10;a = 0 / mask = 0,mask /= 10 = 1; a = 0/mask = 0,mask /= 10 = 0;

    AC代码

     1 #include <stdio.h>
     2 void PrintChn(int num)
     3 {
     4     int cnt = 0;
     5     int tempNum = num;
     6     while (tempNum>0)
     7     {
     8         tempNum = tempNum/10;
     9         cnt++;
    10     }
    11     int i;
    12     int mask = 1;
    13     for(i = cnt;i > 0;i--)
    14     {
    15         mask *= 10;
    16     }
    17     mask = mask/10;
    18     while (mask != 0)
    19     {
    20         int temp = 0;
    21         temp = num/mask;
    22         num = num % mask;
    23         mask = mask/10;
    24         switch (temp)
    25         {
    26             case 0:printf("ling");
    27             break;
    28             case 1:printf("yi");
    29             break;
    30             case 2:printf("er");
    31             break;
    32             case 3:printf("san");
    33             break;
    34             case 4:printf("si");
    35             break;
    36             case 5:printf("wu");
    37             break;
    38             case 6:printf("liu");
    39             break;
    40             case 7:printf("qi");
    41             break;
    42             case 8:printf("ba");
    43             break;
    44             case 9:printf("jiu");
    45             break;    
    46         }
    47         if(mask>0)
    48         {
    49             printf(" ");
    50         }
    51     }
    52 }
    53 int main ()
    54 {
    55     char box[100]; //define "box"char array for input num;
    56     scanf("%s",&box);
    57     int temp = 0;
    58     int i = 0;
    59     while(box[i] != 0)
    60     {
    61         temp += (int)box[i] - '0';
    62         i++;
    63      } 
    64      PrintChn(temp);
    65     return 0 ;
    66      
    67  } 
  • 相关阅读:
    error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
    configure: error: Cannot find OpenSSL's libraries
    PHP编译configure时常见错误
    解决PHP编译cURL的reinstall the libcurl问题
    Linux环境PHP7.0安装
    PHP 7的一些引人注目的新特性简单介绍
    (转).net webconfig使用IConfigurationSectionHandler自定section
    Asp.Net MVC 使用FileResult导出Excel数据文件
    ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
    [老老实实学WCF] 第十篇 消息通信模式(下) 双工
  • 原文地址:https://www.cnblogs.com/Ponytai1/p/5975413.html
Copyright © 2011-2022 走看看