c语言基础代码详细讲解(用C语言实现念数字)

今天的这道题目呢,跟我们之前讲过的PAT乙级当中的一道“写出这个数”有点类似。

都是要求输入一个整数,打印出相应整数所对应的拼音,无非今天这道题目呢相对来说稍微简单一些,而之前那道还要求和,再打印对应的拼音。

我们先来看看题目要求,当整数为负数时,先打印输出fu字,整数包含负数、零和正数。

在一行中输出这个整数对应的拼音,每个数字之间的拼音用空格分开,行末没有最后的空格。

c语言基础代码详细讲解(用C语言实现念数字)(1)

梳理逻辑

1、输入一个整数,毫无疑问是可以用到一个scanf函数的。

2、整数所对应的拼音,我们需要用到一个数组来存储这些拼音。

3、当整数为负数时,我们需要对输入的整数进行一个条件语句判断,如果小于零,那么就进行一个单独讨论。

4、每个数字之间的拼音用空格分开,行末没有最后的空格,我们可以用到一个计数法,也可以用到一个条件语句判断,到个位数的时候就不打印空格。

5、这道题既可以用递归的方式,也可以直接来求。

代码实现

我用的第一种方法,是递归函数。

//念数字 #include <stdio.h> #include <string.h> void recursive(int q){//不需要返回值,我就直接这么写 char *pingyin[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; if(q>9){//如果q有十位数的话,那就除以10取整,如果q只是个位数的话,那就直接摘出来 recursive(q/10);//直接取整 printf(" "); //递归主要目的就是把值给写出来就行了 } printf("%s",pingyin[q]); } int main() { int n; scanf("%d", &n); if(n<0){ printf("fu "); recursive(-n); } else{ recursive(n); } }

我用的第二种方法,用数组来存储输入整数的各个数字,然后对应拼音。

//念数字 #include <stdio.h> #include <string.h> int main() { int n; char *pingyin[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; int store[10]; int i=0; int count = 0;//计数法来给定空格 scanf("%d", &n); if(n==0){//当输入整数等于0的时候,要进行单独讨论 printf("ling"); } while(n!=0){ if(n>0){ store[i] = n; n = n/10; i ; } else{ store[i] = -n; n = -n/10; i ; printf("fu "); } } while(i>0){ i--; if(count>0){ printf(" "); } printf("%s",pingyin[store[i]]); count ; } }

结果测试

c语言基础代码详细讲解(用C语言实现念数字)(2)

c语言基础代码详细讲解(用C语言实现念数字)(3)

总结

总的来说,因为有了之前那道题目的经验,这道题目完成就非常快了,不过还是得注意数组的用法,以及递归函数的逻辑,在使用递归函数的时候,我也经常会出现问题,得仔细仔细再仔细才行。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页