从循环角度分析逐位分离法,舍弃数组法

日期:2023-11-3

1、常规的逐位分离,求和或求积问题

一般会给固定的位数,让解题者按照位数利用%或\进行不同位置数字的提取。

2、遇到非常规问题,对于不限位数的整数的处理法则

(1)方法一:常规数组法,通过导入数组元素,逐位分离,运用高阶方法解决低阶问题,但值得注意的是,初次接触不限位数的逐位分离的大多数初学者,只拥有循环和判断语句的知识。在缺少对于数组知识的认知下,无法解决问题或是提出合理的程序架构。

(2)方法二:从个人最初对于此类问题的理解出发,我当时构想了一种循环嵌套switch语句实现了在缺乏数组知识下对不同位置数字的剥离和分离处理

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    if (n == 0) {
        printf("ling");
    }
    else {
        if (n < 0) {
            printf("fu ");
            n *= -1;
        }

        int shi_n = 10;
        while (n / shi_n > 0) {
            shi_n *= 10;
        }
        shi_n /= 10;
        while (shi_n >= 1) {
            int num = n / shi_n;
            n -= num * shi_n;
            shi_n /= 10;
            /* 
            int t=10;
            while (n/t>0){
                t=t*10;
            }
            
             t=t/10;
             while (t>=1){
             int n=n/t;
             n=n-(n*t);
             t=t/10;
            */
            switch (num) {
            case 1:
                printf("yi");
                break;
            case 2:
                printf("er");
                break;
            case 3:
                printf("san");
                break;
            case 4:
                printf("si");
                break;
            case 5:
                printf("wu");
                break;
            case 6:
                printf("liu");
                break;
            case 7:
                printf("qi");
                break;
            case 8:
                printf("ba");
                break;
            case 9:
                printf("jiu");
                break;
            case 0:
                printf("ling");
                break;
            }
            if (shi_n > 0) {
                printf(" ");
            }
        }
    }
    return 0;
}

、PS:此代码的设计目的是为了实现对于一个整数的各个组成数字的发音

个人构想:
(1)我在开始导入了while语句,首先依据while的判断条件,提取出了对应的shi_n,该变量由于循环条件语句显示,会比输入的n的位数多一,所以选择了除以10.
(2)接着我通过逐位处理,将n的首位数字逐步剥离出来,并构造出逐阶递减的shi_n变量,实现了在循环过程中抽离高位数字的想法,再将其投入switch结构中进行分支处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值