#include<iostream>
using namespace std;
#define Base 10
#define MaxLen 1000
struct BigInt
{
int len;
int data[MaxLen];
BigInt() :len(0) {}
BigInt(const BigInt& s) :len(s.len){
memcpy(this->data,s.data,len*sizeof(*data));
}
BigInt(int s) :len(0){
for(;s>0;s=s/Base)
data[len++]=s%Base;
}
BigInt & operator = (const BigInt& s){
this->len=s.len;
memcpy(this->data,s.data,len*sizeof(*data));
return *this;
}
int& operator [](int index){ return data[index]; }
int operator [](int index) const { return data[index]; }
};
BigInt operator + (BigInt & a, BigInt & b){
BigInt c;
int i,carry=0;
c.len=a.len>b.len?a.len:b.len;
for(i=0;i<c.len||carry>0;++i){
if(i<a.len) carry+=a[i];
if(i<b.len) carry+=b[i];
c[i]=carry%Base;
carry/=Base;
}
c.len=i;
return c;
}
istream & operator >> (istream & is, BigInt & s)
{
int i;
char ch[MaxLen];
is>>ch;
s.len=strlen(ch);
for(i=s.len-1;i>-1;--i)
s[i]=ch[s.len-1-i]-'0';
return is;
}
ostream & operator << (ostream & os, BigInt & s)
{
int i;
for(i=s.len-1;i>-1;--i)
os<<s[i];
return os;
}
/*操作系统进入函数的入口*/
int main () {
int n,i; //n表示有几行需要相加,i用来作为循环变量
BigInt a,b,c; //BigInt,不是C++语言内置的变量,而是自定义的变量,为struct变量
//a,b分别存放要相加的变量。
cin>>n; //读取输入
for
(i=1;i<n;++i){ //i++和++i的不同
cin>>a>>b; //读取等待要相加的
c=a+b; //将a,b相加
cout<<"Case "<<i<<":"<<endl; //输出提示信息
cout<<a<<" + "<<b<<" = "<<c<<endl<<endl; // 输出计算的结果
}
//为什么要多出下面这一块呢,为什么不直接放到循环里面。
cin>>a>>b;
c=a+b;
cout<<"Case "<<i<<":"<<endl;
cout<<a<<" + "<<b<<" = "<<c<<endl;
return 0;
}
一、i++和++i的区别
*************
看下这句的汇编代码就知道了,i++由于需要保存之前的值,需要一个辅助存储空间。而++i直接用和覆盖原空间即可
***************
前++是先加再取值,后++是先取值再加。
也就是i=3时,i++和++i的结果都是让i=4,但i++的值是3,而且++i的值是4。
由于i++的值还是i的原来的值,所以要先保留原始值,这样理解:
j=i++解释为以下几条语句:
temp=i;
i=i+1;
j=temp;
而j=++i解释为:
i=i+1;
j=i;
如果只是简单类型没什么,但如果是类的话,temp的创造可是大代价的。这就是为什么很多人喜欢在循环中使用++i。
但在循环中,我们不关心其值,只关心其结果,所以是一样的。
二、为什么要在循环下面多出一段输出的语句。
如果不最后不单独列出输出的语句。
Presentation Error
三、为什么不直接相加,为什么需要使用大整数。
四、位,字节
B是Byte的意思,Byte是字节的意思,是存储空间的基本计量单位
bit是位的意思,是说二进制数的长度单位,比如10011001就是8位二进制数
这个bit就是网速的基本计量单位bps里的b,bps的意思是bits per Second,即每秒传输多少位数(二进制)
为什么这里是bits而不是bit了呢?这是英文与中文的区别,复数的表示法。
二进制数是计算机内部使用的基本表达语言,所以位(bit)是计算机中最小的数据单位。
1字节在计算机里存储为一个8位进制数,这是固定的。
提到了字节,不得不再提到“字”这个计量单位:“字”由若干个字节构成,字的位数叫做字长,字长就是说字所对应的二进制数的长度。不同的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。
前期的DOS就是8位的,后期的DOS是16位的,Win9X是基于DOS的,所以也是16位的,NT核心的Windows是32位的,现在也有了64位的XP/2003,CPU也有了64位的,这个操作系统和CPU所说的位就是bit的意思,即二进制数的长度。
字节是固定由8位二进制构成,64位系统就代表了64位的二进制代表一个字,换算成字节就是64/8=8,即是说由8字节构成一个字,32位系统就是32/8=4,4个字节代表一个字。
五、 ostream & operator <<
这一句是什么意思?什么概念?

浙公网安备 33010602011771号