中易网

c语言程序设计:大整数的加减法

答案:2  悬赏:70  
解决时间 2021-11-10 12:44
c语言程序设计:大整数的加减法用字符型数组
最佳答案
用rand()产生随机数,rand()会产生从0到一个很大的数,我记不清了,反正很大。如果想出现100以内的,就用rand()%100。你可以定义三个int型整数,两个表示加或者减的对象,另一个标示加或者减,因为只要出现两种情况之一,所以可以用rand()%2,这样只会有0,1两种情况来标示加或者减。下面的就很容易了inta,b,i,c;for(i=0;i<10;i++){a=rand()%100;b=rand()%100;c=rand()%2;if(c==0)//标示加法{printf("%d+%d=%d\n",a,b,a+b);}else{printf("%d-%d=%d\n",a,b,a-b);}}大致就这样,希望给你点帮助
全部回答
#include #include #include char a[1000],b[1000]; int c[1001]; int x,y,i,j,k; int blen=0; int alen=0; char flag = '+';//用于减法标记负数 int subtract(char *a, char *b, int len) { //为了避免代码重复,将共同的计算抽出写成函数 int i; for (i=len-1; i>=0; i--) { if (a[i] < b[i]) { c[i] = a[i] + 10 - b[i]; b[i-1]++; } else { c[i] = a[i] - b[i]; } } return 0; } int subtraction(){ for (i=0;i<100;i++) { scanf("%c",&b[i]); if(b[i]=='\n') break; blen++; } printf("="); if(alen>blen) { x=(alen-blen); for(i=blen-1;i>=0;i--) { alen--; b[alen]=b[i]; } for (i=0;i alen) { x=(blen-alen); for(i=alen-1;i>=0;i--) { blen--; a[blen]=a[i]; } for (i=0;i=0;i--) { a[i]=a[i]-'0'; b[i]=b[i]-'0'; } if (strcmp(a, b) > 0) { subtract(a, b, alen); }else { flag = '-'; subtract(b, a, alen); } return 0; } int addition(){ for (i=0;i<100;i++) { scanf("%c",&b[i]); if(b[i]=='\n') break; blen++; } printf("="); if(alen>blen) { x=(alen-blen); for(i=blen-1;i>=0;i--) { alen--; b[alen]=b[i]; } for (i=0;i alen) { x=(blen-alen); for(i=alen-1;i>=0;i--) { blen--; a[blen]=a[i]; } for (i=0;i=0;i--) { a[i]=a[i]-'0'; b[i]=b[i]-'0'; if(c[i+1]+a[i]+b[i]>=10) { c[i]=(c[i+1]+a[i]+b[i])/10; c[i+1] = (c[i+1]+a[i]+b[i])%10; } else { c[i+1]+=(a[i]+b[i]); } } return 0; } int main() { for (i=0;i<100;i++) a[i]=0; for (i=0;i<100;i++) b[i]=0; for (i=0;i<101;i++) c[i]=0; for (i=0;i<100;i++) { scanf("%c",&a[i]); if(a[i]=='+') { addition(); goto output1; } if(a[i]=='-') { subtraction(); goto output2; } alen++; } output1: { for (i=0;i<=alen;i++) printf("%d",c[i]); return 0; } output2: { printf("%c", flag); for (i=0;i
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯