neuq oj 1018 A+B again C语言
2016-02-13 20:31
1161 查看
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.遗留
相关文章推荐
- VC++深入详解的函数总结
- VS2008下编译C++程序,找不到 stdint.h,原因及解决方案
- offsetof()
- C++友元
- 黑马程序员-C语言02
- C++静态成员
- 【C语言】C语言运算符
- 【C语言】C语言运算符
- leetcode70题 题解 翻译 C语言版 Python版
- C++对象的赋值和复制
- Windows 下免费的 C++ 开发平台 EasilyGCC 正式发布
- c++11 新特性之 autokeyword
- C++对象的动态建立和释放
- 【C语言】C语言static和extern区别
- 【C语言】C语言static和extern区别
- 【C语言】C语言外部变量和内部变量
- 【C语言】C语言外部变量和内部变量
- 【C语言】C语言局部变量和全局变量
- usaco 2.2.3 runround
- C++实现线程同步的几种方式