2.7617177111 ......在某一位上填循环点变成一个新的大数运算

一个for 循环求出一个数组的第三大数,最好有程序,演示一下,谢谢!
[问题点数:20分,结帖人u]
一个for 循环求出一个数组的第三大数,最好有程序,演示一下,谢谢!
[问题点数:20分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。一个for 循环求出一个数组的第三大数,最好有程序,演示一下,谢谢!
[问题点数:20分,结帖人u]
一个for 循环求出一个数组的第三大数,最好有程序,演示一下,谢谢!
[问题点数:20分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。这个循环调用一个大数加法的c++程序为什么只做一次呢?_百度知道
这个循环调用一个大数加法的c++程序为什么只做一次呢?
#include&iostream&#include&string&int Max(int x, int y){ if(x&y)}int compare(string A,string B){ int lenA,lenB; int dxd=0; lenA=A.length(); lenB=B.length(); if(lenA&lenB)
dxd=1; if(lenA&lenB)
dxd= -1; if(lenA==lenB)
dxd=0;}}string Add(string a, string b){
int lena,lenb,round,i,j;
int numa[10]={0},numb[10]={0},sum[10]={0},sumrev[10]={0},carry[10]={0}; string result=& &; lena=a.length(); lenb=b.length(); round=Max(lena,lenb); for(i=0;i&i++)
numa[i]=a[lena-1-i]-48; for(i=0;i&i++)
numb[i]=b[lenb-1-i]-48; for(i=0;i&i++) {
sum[i]=carry[i]+numa[i]+numb[i];
if(sum[i]&10)
{carry[i+1]=1;
sum[i]=sum[i]-10;}} j=0;//j为sum[1024]中经过计算的元素个数 if(carry[round]=1)
j= else j=round-1;for(i=0;i&10;i++) {sumrev[i]=(sum[9-i]+48);}
for(i=10-j;i&10;i++) {result=result+char(sumrev[i]);}}int main(){ string result=& &; cout&&&input&&& cin&&a; result=a;
for(i=0;i&9;i++)
result=Add(result,a); cout&& return 0;}请指点!急 ~~~~
数字或者次数比较小的时候是可以出来了。数比较大的时候就输入了数据就没有反应了。。。。是怎么回事啊?
提问者采纳
//对你的程序做了一定的修改.有注释.#include&iostream& #include&string& #include &sstream& const int MAXLENGTH = 100;//最长位数int Max(int x, int y) {
} string Add(string a, string b) {
string result = &超过最大长度&; int *left = new int [MAXLENGTH]; int *right = new int [MAXLENGTH]; for (int i = 0; i & a.length(); i++) {
left[i] = a[i]-'0'; } for (int i = 0; i & b.length(); i++) {
right[i] = b[i] - '0'; } for (int i = 0; i & Max(a.length(), b.length()); i++) {
left[i] += right[i]; } //进位计算 //第0位不需要进位 for (int i = Max(a.length(), b.length()); i & 0; i--) {
while(left[i] &= 10)
left[i] -= 10;
left[i-1] += 1;
// 结果是否会越界 if (Max(a.length(), b.length()) == MAXLENGTH && left[0] & 10) { } else {
result = &&; } //转换成string char stmp[32]; itoa(left[0],stmp,10); result += (string) for (int i = 1; i & Max(a.length(), b.length()); i++) {
result += (char)(left[i]+'0'); } delete [] delete []} int main() {
string result=& &;
cout&&&input&&&
//for(i=0;i&9;i++) //这句话是什么意思?
result=Add(result,a);
cin.get(); cin.get(); return 0;}
提问者评价
出门了~拖了很久才给分~不好意思啦~
其他类似问题
按默认排序
其他1条回答
#include&stdio.h& #include&string.h& #define MAX 2000 int Add(char a[],char b[],int x)
大数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 大数运算 的文章

 

随机推荐