c语言基础代码详细讲解(用C语言实现念数字)
今天的这道题目呢,跟我们之前讲过的PAT乙级当中的一道“写出这个数”有点类似。
都是要求输入一个整数,打印出相应整数所对应的拼音,无非今天这道题目呢相对来说稍微简单一些,而之前那道还要求和,再打印对应的拼音。
我们先来看看题目要求,当整数为负数时,先打印输出fu字,整数包含负数、零和正数。
在一行中输出这个整数对应的拼音,每个数字之间的拼音用空格分开,行末没有最后的空格。
梳理逻辑
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 ;
}
}
总结
总的来说,因为有了之前那道题目的经验,这道题目完成就非常快了,不过还是得注意数组的用法,以及递归函数的逻辑,在使用递归函数的时候,我也经常会出现问题,得仔细仔细再仔细才行。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com