加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

年龄巧合分离数,报时助手字符串数组,大数加法

发布时间:2020-12-14 01:59:36 所属栏目:大数据 来源:网络整理
导读:标题:年龄巧合 ??? 小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年

标题:年龄巧合


??? 小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年啊。我出生年份的四位数字加起来刚好是我的年龄。表弟的也是如此。已知今年是2014年,并且,小明说的年龄指的是周岁。


??? 请推断并填写出小明的出生年份。

?

??? 这是一个4位整数,请通过浏览器提交答案,不要填写任何多余的内容(比如,他表弟的出生年份,或是他们的年龄等等)

?

#include <iostream>

using namespace std;

int main()
{
    int a,b,c,d;
    for(int i=1900; i<=2014; i++)
    {
        a=i/1000;
        b=i/100%10;
        c=i/10%10;
        d=i%10;
        if(a+b+c+d==2014-i)
            cout<<i<<endl;
    }
    return 0;
}


报时助手
问题描述
  给定当前的时间,请用英文的读法将它读出来。
  时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
  如果m为0,则将时读出来,然后加上“o'clock”,如3:00读作“three o'clock”。
  如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
  时和分的读法使用的是英文数字的读法,其中0~20读作:
  0:zero,1: one,2:two,3:three,4:four,5:five,6:six,7:seven,8:eight,9:nine,10:ten,11:eleven,12:twelve,13:thirteen,14:fourteen,15:fifteen,16:sixteen,17:seventeen,18:eighteen,19:nineteen,20:twenty。
  30读作thirty,40读作forty,50读作fifty。
  对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
  按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。
输入格式
  输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。
输出格式
  输出时间时刻的英文。
样例输入
0 15
样例输出
zero fifteen

思路:将h和m分别调用

#include <iostream>

using namespace std;
string en[]= {"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","thirty","forty","fifty"
                  };
string r="o'clock";
int h,m;
void numtoen(int n)
{
    if(n<=20)
        cout<<en[n]<<" ";
    else{
        int gao=n/10;
        int di=n%10;
        cout<<en[gao+18]<<" ";
        if(di!=0)
        {
            cout<<en[gao+18]<<" "<<en[di]<<" ";
        }
    }
}
void output(int h,int m)
{
    if(m==0)
    {
        numtoen(h);
        cout<<r;
        cout<<endl;
    }
    else{
        numtoen(h);
        numtoen(m);
        cout<<endl;
    }

}
int main()
{
    cin>>h>>m;

    output(h,m);

    return 0;
}


?

大数加法
问题描述
  输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
算法描述
  由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
  定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。
  计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
  最后将C输出即可。
输入格式
  输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
输出格式
  输出一行,表示a + b的值。
样例输入
20100122201001221234567890
2010012220100122
样例输出
20100122203011233454668012


?

#include <iostream>
#include<cstdio>
#include<string.h>
using namespace std;
char a[102],b[102];
int sum[103];
int main()
{
    scanf("%s%s",a,b);
    int i,j;
    int lena=strlen(a);
    int lenb=strlen(b);
    for(i=0; i<lena; i++)
        sum[i]=a[lena-1-i]-'0';
    for(i=0; i<lenb; i++)
        sum[i]+=b[lenb-1-i]-'0';///求出了个位,十位,百位和
    for(j=0; j<104; j++)
    {
        if(sum[j]>9)
        {
            sum[j+1]+=sum[j]/10;
            sum[j]%=10;
        }
    }
    i=104;
    while(sum[i]==0)///用while而不是if
        i--;
    for(int k=i; k>=0; k--)
        cout<<sum[k];
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读