您的位置:首页 > 编程语言 > C语言/C++

neuq oj 1018 A+B again C语言

2016-02-13 20:31 1096 查看


1018: A+B again

时间限制: 1 Sec 内存限制: 128 MB

提交: 435 解决: 80

[提交][状态][讨论版]


(本题有疑问,有待商榷)


题目描述

谷学长有一个非常简单的问题给你,给你两个整数A和B,你的任务是计算A+B。


输入

输入的第一行包含一个整数T(T<=20)表示测试实例的个数,然后2*T行,分别表示A和B两个正整数。注意整数非常大,那意味着你不能用32位整数来处理。你可以确定的是整数的长度不超过1000。


输出

对于每一个样例,你应该输出两行,第一行是"Case #:",#表示第几个样例,第二行是一个等式"A+B=Sum",Sum表示A+B的结果。注意等式中有空格。


样例输入

2
1
2
112233445566778899
998877665544332211


样例输出

Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110


代码

#include "stdio.h"
#include "string.h"
int main()
{
int i,t,j=1,n,len,k;
char sum[1009],sa[1009],sb[1009];
scanf("%d",&t);
getchar();
while(t--)
{
for(i=0;i<1009;i++)
sum[i]='0';
scanf("%s%s",sa,sb);
len=strlen(sa);
for(i=len-1,k=0;i>=0;i--,k++)
{
sum[k]=sum[k]-'0'+sa[i];
n=k;
while(sum
>'9')
{
sum[n+1]=sum[n+1]+(sum
-'0')/10;
sum
=(sum
-'0')%10+'0';
n++;
}
}
len=strlen(sb);
for(i=len-1,k=0;i>=0;k++,i--)
{
sum[k]=sum[k]-'0'+sb[i];
n=k;
while(sum
>'9')
{
sum[n+1]=sum[n+1]+(sum
-'0')/10;
sum
=(sum
-'0')%10+'0';
n++;
}
}
printf("Case %d:\n%s + %s = ",j,sa,sb);
j++;
for(i=1008;sum[i]=='0';i--);
for(;i>=0;i--)
printf("%c",sum[i]);
//printf("\n");
if(t>0)
printf("\n");
}
return 0;
}


体会:

1.字符串char涉及函数

*用法:

该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件。如:

#include<stdio.h>

int getchar(void);

*用途:读取字符

从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符。返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回-1。

2.


strlen


(C语言函数)

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

中文名
strlen
头文件
string.h

格 式
strlen (字符数组名)
功 能
计算给定字符串的长度
实 质
C语言函数

3.遗留
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: