c语言编程,请高人指点!!

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:17:16
输入两个整数a,b(a,b的绝对值均要小于10的200次方)
输出a+b;a-b;a*b.
要求:最后输入a=0,b=0.代表输入结束
例如:输入:100
10
0
0
输出:110
90
1000
单纯用整型变量存储,取值范围是不是太小了,double型存在有效位数的问题啊,输入输出如下:
输入:
200000000000000000
6000000000000000
0
0
输出:
206000000000000000
194000000000000000
1200000000000000000000000000000000

用双精度都不可以!这题其实就是大整数的四则运算问题了!下面给你一个关于大整数四则运算的程序,自己去体会一下吧!
#define MAX 400
void my_read(int *a)
{
int len,i,flag=0;
char s[MAX];
aa:
while(1)
{
scanf("%s",&s);
len=strlen(s);
if (s[0]=='-') flag=1;
for(i=len-flag;i>=1;i--)
{
if ((s[len-i]-'0')<0||(s[len-i]-'0')>9)
{
printf("\t\t\t你输入的第%d位不合法,按任意键重新输!!",len-i+1);
getch();
goto aa;
}
else
a[i]=s[len-i]-'0';
}
if (flag)
a[0]=-(len-1);
else
a[0]=len;
break;
}
return;
}

void my_print(int *a)
{
int i;
if (a[0]<0) printf("-");
if (a[0]==0)
{
printf("0");
return;
}
for(i=abs(a[0]);i>=1;i--)
printf("%d",a[i]);
printf("\n&quo