前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写出这个数——《C语言代码笔记》

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

作者头像
神无月
发布2018-06-25 17:30:18
1.3K0
发布2018-06-25 17:30:18
举报
文章被收录于专栏:小文博客

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

废话不多说,上题

写出这个数

读入一个自然数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语言难题可以在评论区留言,博主将在第二天为您讲解

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年1月24日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写出这个数
  • 题目解析
  • 程序详解流程图
  • 代码示例
  • 运行截图
    • 注意事项
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档