非常简单的一题了,但还是交了两三次,原因:对数组的理解不足;对数字和字符之间的转换不够敏感。这将在下文中细说。
Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English.
Each input file contains one test case. Each case occupies one line which contains an N (≤10100).
For each test case, output in one line the digits of the sum in English words. There must be one space between two consecutive words, but no extra space at the end of a line.
12345
one five
输入一串数字,然后用英文表达所有数字相加和的每一位数字。
输入:10100以内的数字
输出:和的每位数字英文表达(eg:sum=256,output=two five six)
首先很明显代码是不会翻译你的结果的,所有用一个数组来存储表示每位数字的英文,其次,10100的数字不需要精准表示,因为这里也就100个数字,不是10100个数字,开始我在这卡了半天,想着数字太大要精准存储,特地翻了之前写的c语言-大数阶乘 - 1001010 - 博客园 (cnblogs.com)一文,后面发现不大行的通,审视一遍后发现了问题,最后输出,要怎么拆开数字和也是个问题。
首先,还是从变量入手
1 #define MAX 100
2 int N,m;//输入N,用于统计N的位数m
3 char lan[10][10] = { "zero","one","two","three","four","five","six","seven","eight","nine" };
4 int sum,a[MAX];//计算和sum,数组a用来记录拆开的sum
5 char n[MAX];
这里开始是想N用来输入数据,后面发现循环过程中因为不知道它的位数,所以往往遍历要很多【补:而且N作为int变量放不了100位,double型的时候可以,但sum作为int不能让N强转,都作为double时就会很麻烦】,所以在错了一次后采取了 char n[MAX]; 的写法,这样有很多的妙处:
到这里其实已经没有什么疑惑的点了,下面直接上完整代码。
1 #include<stdio.h>
2
3 #define MAX 150
4 int N,m;
5 char n[MAX];
6 char lan[10][10] = { "zero","one","two","three","four","five","six","seven","eight","nine" };
7 int sum,a[MAX];
8 int main() {
9 scanf("%s", n);
10 for (int i = 0; n[i] != '\0'; i++) {
11 sum += n[i] - '0';
12 }
13 if (sum == 0){printf("zero");return 0;}//如果和等于0 ,那么直接输出“zero”就行。注意,这里必须return终止,因为数组a[-1]也是0
14 for (int i = 0; sum; i++) {
15 a[i] = sum % 10;
16 sum /= 10;
17 m += 1;//m记录sum的位数,但注意数组在使用时要减1,因为超范围了
18 }//sum最后等于0时即完成所有位数的记录,终止循环(非常巧妙)
19
20 printf("%s", lan[a[m - 1]]);
21 for(int i=m-2;i>=0;i--)
22 printf(" %s", lan[a[i]]);//老一套输出格式,每一位的数字对于英语组记录的每一位上的英文
23
24 return 0;
25 }


我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO