大数相加(如911111111111111111111111这种数)
//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack>
//#include<set>
//#include<map>
//#include<vector>
//using namespace std;
//struct node{
// int number[1005];
// int len;
//}a,b,ans;//a代表第一个大数,b代表第二个大数,ans代表要求得大数的和
//char s[1005];//定义一个字符数组(相当于一个字符串(\0结尾))
//int main(){
// int i =0;
// scanf("%s",s);//把每个数字当做字符串输入
// a.len = (int)strlen(s);
// memset(a.number,0,sizeof(a.number));
// for(i = 0; i < a.len; i++){
// a.number[i] = s[a.len - i - 1] - '0';//将数组倒位赋值给a.number列竖式相加(个位放前面作为第一个,后面依次倒序)
// }
// scanf("%s",s);
// b.len = (int)strlen(s);
// memset(b.number,0,sizeof(b.number));
// for(i = 0; i < b.len; i++){
// b.number[i] = s[b.len - i - 1] - '0';//将数组倒位赋值给b.number列竖式相加(个位放前面作为第一个,后面依次倒序)
// }
// memset(ans.number,0,sizeof(ans.number));
// for(i = 0; i < max(a.len,b.len); i++){
// ans.number[i] = a.number[i] + b.number[i];//倒位相加:将数a.number与b.number列竖式相加(个位放前面作为第一个,后面依次倒序相加)
// }
// for(i = 0; i < max(a.len,b.len) || ans.number[i]; i++){//如果出现相加后结果>=10,需要进位
// // ans.number[i]条件是当最后一位>= 10仍然需要向后进一位时,此时i不满足< max(a.len,b.len)
// //则用该条件让i++可以继续执行一遍,以便后面输出时不会少一位(仍保持len-1为最后一位)
// //只要最后一位%10 != 0,(如最后一位11 % 10 = 1)
// if(ans.number[i] >= 10){
// ans.number[i + 1] += ans.number[i] / 10;//本来应该向前进位,现在倒位,故i向i + 1处进位,进的数是num[i]/10的结果,如num[i] = 17时,需向i+1位进17/10 = 1
// ans.number[i] %= 10;//进完位后num[i]本身也只剩下其个位,如17向前进1,然后自己变成7
// }
// }
// ans.len = i;
// for(i = ans.len - 1; i >= 0; i--){
// printf("%d",ans.number[i]);//因为是倒位相加,所以倒序输出
// }
// printf("\n");
// return 0;
//}
大数比较(如911111111111111111111111这种数)
//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack>
//#include<set>
//#include<map>
//#include<vector>
//using namespace std;
//struct node{
// int number[1005];
// int len;
//}a,b;//a代表第一个大数,b代表第二个大数,ans代表要求得大数的和
//char s[1005];//定义一个字符数组(相当于一个字符串(\0结尾))
//void Dcompare(node x,node y){
// if(x.len != y.len){
// if(x.len){
// printf("a>b\n");
// }else{
// printf("a<b\n");
// }
// return;//得到结果后返回,函数结束
// }
// for(int i = x.len - 1; i >= 0; i--){
// if(x.number[i] != y.number[i]){
// if(x.number[i] > y.number[i]){
// printf("a>b\n");
// }else{
// printf("a<b\n");
// }
// return;//得到结果后返回,函数结束
// }
// }
// printf("a=b\n");//循环未返回结果,说明for循环条件都不满足
//}
//int main(){
// scanf("%s",s);//把每个数字当做字符串输入
// a.len = (int)strlen(s);
// memset(a.number,0,sizeof(a.number));
// for(int i = 0; i < a.len; i++){
// a.number[i] = s[a.len - i - 1] - '0';//将数组倒位赋值给a.number列竖式相加(个位放前面作为第一个,后面依次倒序)
// }
// scanf("%s",s);
// b.len = (int)strlen(s);
// memset(b.number,0,sizeof(b.number));
// for(int i = 0; i < b.len; i++){
// b.number[i] = s[b.len - i - 1] - '0';//将数组倒位赋值给a.number列竖式相加(个位放前面作为第一个,后面依次倒序)
// }
// Dcompare(a,b);
// return 0;
//}
大数相除(如911111111111111111111111这种数)
//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack>
//#include<set>
//#include<map>
//#include<vector>
//using namespace std;
//struct node{
// int number[1005];
// int len;
//}a,ans;//a代表第一个大数,b代表第二个数(被除数),ans代表要求得大数的和
//char s[1005];//定义一个字符数组(相当于一个字符串(\0结尾))
//int main(){
// int i = 0,b = 0;
// scanf("%s",s);//把比较大的那个数字当做字符串输入
// a.len = (int)strlen(s);
// memset(a.number,0,sizeof(a.number));
// for(i = 0; i < a.len; i++){
// a.number[i] = s[a.len - i - 1] - '0';//将数组倒位赋值给a.number(个位放前面作为第一个,后面依次倒序)
// }
// scanf("%d",&b);//把被除数输入进去
// memset(ans.number,0,sizeof(ans.number));
// ans.len = 1;
// for(i = a.len - 1; i >= 0; i--){//大数相除是把除数倒过来写,但是是从后面的数开始进行 除数/被除数 操作
// if(i != 0){//因为下面有i - 1操作
// a.number[i - 1] += a.number[i] % b * 10;//后面的数对被除数取余的余数*10加到前面一个数里面,从后往前依次取余加
// //注意此处是更新的a.number的值,不是ans.number[]的值,大数除法是不断更新原字符串(a)的各字符的值
//// cout << ans.number[i - 1];
// }
// ans.number[i] = a.number[i]/b;//把当前 字符数/b 得到的整数存在ans数组里
// if(ans.number[i]&&ans.len == 1){//当ans.number[i](即a.number[a.len - 1](即最后一个字符数)第一次进行/被除数b的值)不整除b,
// //a.number[i]/b整除的话ans.number[a.len - 1](即最后一个)是0,由于后面也要倒序输出,所以不用输出这个开头的0
// ans.len = i + 1; //此运算只能进行依次,ans.len初始为1,进行一次后就不在满足上面的ans.len == 1且直接得到后续要输出的ans数组的长度
// }
// }
// for(i = ans.len - 1; i >= 0; i--){
// printf("%d",ans.number[i]);//因为是倒位相加,所以倒序输出
// }
// printf("\n");
// printf("%d\n",a.number[0] % b);//输出第0位(也是最后一次运算)得到的最终余数
// return 0;
//}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。