解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,str1,str2,k=0;
int a1[200],a2[200],a3[200];
char c1[200],c2[200]; //用字符方式存储两个大数的数值
for(i=0;i<200;i++)
{
a1[i]=0; //把int数组内所有数内置为0
a2[i]=0;
}
scanf("%s",c1);
scanf("%s",c2); //用char类型c1,c2存储大数的值
str1=strlen(c1); //用str1表示读入第一个数的长度
str2=strlen(c2); //用str2表示读入第二个数的长度
j=0;
for(i=str1-1;i>=0;i--) //将大数c1从char类型转化为int类型当中
a1[j++]=c1[i]-'0';
j=0;
for(i=str2-1;i>=0;i--) //将大数c2从char类型转化为int类型当中
a2[j++]=c2[i]-'0';
for(i=0;i<200;i++)
{
a1[i]-=a2[i];
if(a1[i]<0) //出现需要向前一位数借1的情况
{
a1[i]+=10; //相同位作减法,前减位数小于后减位数向前借"1"
a1[i+1]--;
}
}
j=0; //例如a1相减后的结果是1234
for(i=199;i>=0;i--) //a1表示就是1234000...000
a3[j++]=a1[i]; //a3变化后为000...0001234
//下边目的就是想办法把这些前置的0给消除
for(i=0;i<200;i++)
{
if(a3[i]!=0)
k=1; //当从第一位数一直到非0的数我们都不需要打印
if(k==1)
printf("%d",a3[i]);//当第一位非0的数出现时候我们把剩下的数打印出来
}
if(k==0)
printf("0"); //避免出现两个数相同捡的为0无输出的情况
printf("\n");
return 0;
}
0.0分
3 人评分
C语言训练-自由落体问题 (C语言代码)浏览:1775 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:1555 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:725 |
淘淘的名单 (C语言代码)答案错误???浏览:624 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)from DQM浏览:773 |
1012题解浏览:938 |
链表数据求和操作 (C语言代码)浏览:1035 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:560 |
C二级辅导-温度转换 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:696 |