专栏首页小文博客写出这个数——《C语言代码笔记》

写出这个数——《C语言代码笔记》

今天碰到这个题,考到许多小知识点,可为难死博主了。

废话不多说,上题

写出这个数

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。

输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

1

1234567890987654321123456789

输出样例:

yi san wu

1

yi san wu

题目解析

输入一个数n,n小于10100

所以我们的n就不能用int定义了,最好选择用字符数组定义

输出的是n的各位之和,但是要用拼音表示所输出的数的每一位

即:如图

程序详解流程图

代码示例

#include<stdio.h> int main() { char* res[]={"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu", "shi"}; //定义1-10拼音数组 char num[100]; //用于存放输入的n scanf("%s", &num); int sum=0, i=0, c=0, j=0, b[3]={0}; while(num[i]!='\0')//求和 ,和的范围为(0-900) { sum+=num[i]-'0'; //字符变整型 i++; } for(j=0; j<3; j++)//拆分并保存至长度为3的b数组 { b[j]=sum%10; sum/=10; if(sum==0) break; } while(j>=0) { if(j>0) printf("%s ", res[b[j]]); else printf("%s\n", res[b[j]]);//保证输出格式 j--; } return 0; // }

1234567891011121314151617181920212223242526272829

#include<stdio.h>int main(){    char* res[]={"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu", "shi"}; //定义1-10拼音数组     char num[100]; //用于存放输入的n scanf("%s", &num); int sum=0, i=0, c=0, j=0, b[3]={0}; while(num[i]!='\0')//求和 ,和的范围为(0-900) {     sum+=num[i]-'0'; //字符变整型     i++;     }    for(j=0; j<3; j++)//拆分并保存至长度为3的b数组     {        b[j]=sum%10;          sum/=10;         if(sum==0)        break;      }    while(j>=0)    {        if(j>0)        printf("%s ", res[b[j]]);         else        printf("%s\n", res[b[j]]);//保证输出格式         j--;       }    return 0; //}

其他代码

#include<stdio.h> #include <stdlib.h> #include <string.h> void printf_num(int num) { int zonghe[10]; char *name[] ={"ling","yi","er","san","si","wu","liu","qi","ba","jiu","shi"}; int i=0; for(i=0;num>=10;i++){ zonghe[i]=num%10; num=num/10; } zonghe[i++]=num; while(i--){ if(i!=0){ printf("%s ",name[zonghe[i]]); }else{ printf("%s\n",name[zonghe[i]]); } } } int main(){ char n[100]; char *p=n; int sum=0; int i=0; scanf("%s",n); while(*p!='\0'){ sum = sum + (*p - '0'); //(*p - '0')将字符型数字转化为整型数字 p++; } printf_num(sum); return 0; }

12345678910111213141516171819202122232425262728293031323334353637

#include<stdio.h>#include <stdlib.h> #include <string.h>void printf_num(int num){  int zonghe[10];  char *name[] ={"ling","yi","er","san","si","wu","liu","qi","ba","jiu","shi"};  int i=0;  for(i=0;num>=10;i++){    zonghe[i]=num%10;    num=num/10;  }  zonghe[i++]=num;  while(i--){    if(i!=0){      printf("%s ",name[zonghe[i]]);    }else{    printf("%s\n",name[zonghe[i]]);    }  }} int main(){  char n[100];  char *p=n;  int sum=0;  int i=0;   scanf("%s",n);   while(*p!='\0'){    sum = sum + (*p - '0');  //(*p - '0')将字符型数字转化为整型数字    p++;  }  printf_num(sum);  return 0;}

运行截图


注意事项

1.拼音不要写错

2.输出格式要牢记,以及%c ,%s的应用

3.return 0;


本次分享就到这里,如有兴趣请关注小文’s blog

如果你有C语言难题可以在评论区留言,博主将在第二天为您讲解

如有任何意见请留言或者评论,本人一定采取。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 蓝桥杯 C语言省赛 习题2 格子中输出

    神无月
  • 小文’s blog–特殊回文数 –《蓝桥杯代码笔记4》

    神无月
  • 小文’s blog–插入排序–《蓝桥杯代码笔记5》

    神无月
  • AMD发布新版ROCm 成为GPU计算方面通用的开源平台

    在2016全球超算大会(SC16)上, AMD(纳斯达克股票代码:AMD)宣布推出新版Radeon开放计算平台(ROCm),其中包括对全新Radeon GPU硬...

    GPUS Lady
  • 阶乘很简单?恕我直言,阶乘相关的面试题你还真不一定懂!

    对于如何算 n 的阶乘,只要你知道阶乘的定义,我想你都知道怎么算,但如果在面试中,面试官抛给你一道与阶乘相关,看似简单的算法题,你还真不一定能够给出优雅的答案!...

    帅地
  • 算法-1到n中所有和为m的组合

    题目: 输入两个整数 n 和 m,从数列1,2,3…….n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。 解题思路: 好未来笔试题...

    chaibubble
  • RecyclerView零点突破(动画+边线篇)

    张风捷特烈
  • 【算法】关于图论中的最小生成树(Minimum Spanning Tree)详解

    这里的图当然不是我们日常说的图片或者地图。通常情况下,我们把图看成是一种由“顶点”和“边”组成的抽象网络。在各个“顶点“间可以由”边“连接起来,使两个顶点间相互...

    短短的路走走停停
  • C++常见问题(三)——宏定义、const、static、sizeof的相关实例

    第一部分 宏定义   宏定义的语法格式:#define <标识符><字符串>,其中的标识符就是所谓的符号常量,也称为”宏名”。预处理工作也叫宏展开。宏定义不占用...

    深度学习思考者
  • ionic hybrid app:产品还是玩具?

    提到跨终端应用开发,很容易想到最近很火的React Native。使用React Native开发出的APP本质上是Native APP。在跨端应用开发这一领域...

    IMWeb前端团队

扫码关注云+社区

领取腾讯云代金券