c语言编程问题,编写代码,a+b问题,求大神帮忙哇( 儎企 ﹏ 企儎 )

2024-12-06 19:53:23
推荐回答(2个)
回答1:

【解题思路】这道题的难点是超多位数,也就是说40位数用最长的基础类型都表示不下。这个时候可以用数组,最简单的就是你定义三个长度为40的字符数组,每个元素存放一个0-9的数值,然后逐位进行加运算,碰到超过10的就进位。

【程序代码】
#include
#include
#include
using namespace std;
int main()
{char a[40]={0},b[40]={0},c[41],d,i,j,k;
 printf("请输入第一个位:");        //显示输入提示
 for(i=0;i<40;i++)                 //通过循环读入a数组
    {do{d=getch();                 //从键盘获取一个字符
        if(d==13||d==' ') break;   //如果读到的是回车或空格退出循环
        }while(d<'0'||d>'9');      //如果输入的为非数字,忽略重输
     printf("%c",d);               //显示字符(因为getch函数不回显) 
     if(d==13||d==' ') break;      //如果是回车或空格结束读取 
     c[i]=d-'0';}                  //否则的话让c[i]等于输入的数值
 i--;
 for(k=i;k>=0;k--) a[i-k]=c[k];    //倒序排列 
/*关于输入有很多种方法,可以用cin, scanf(),也可以用getchar(),各有优劣,这里之所以用getch(),是因为getch不回显,这样可以及时作出判断,不是数字就直接忽略。
另外为什么要倒序,是为了保证a[0]和b[0]都是个位数,这样后面加法运算时,不用去费劲的对齐*/ 

 printf("\n请输入第二个位:");      //显示输入提示
 for(j=0;j<40;j++)                 //通过循环读入b数组
    {do{d=getch();                 //从键盘获取一个字符
        if(d==13||d==' ') break;   //如果读到回车或空格退出循环
        }while(d<'0'||d>'9');      //如果输入的为非数字,忽略重输
     printf("%c",d);               //显示字符(因为getch函数不回显) 
     if(d==13||d==' ') break;      //如果是回车或空格结束读取 
     c[j]=d-'0';}                  //否则的话让c[j]等于输入的数值
 j--;
 for(k=j;k>=0;k--) b[j-k]=c[k];    //倒序排列 
 for(k=0;k<41;k++) c[k]=0;         //初始化c数组
 
 if (i printf("\n两个数的和等于:");      //显示结果
 for(k=0;k<=d;k++)                 //通过循环计算
    {c[k]=(c[k]+a[k]+b[k]);        //算出和 
     c[k+1]=c[k]/10;               //如果超过10则进位
     c[k]=c[k]%10;}                //取个位数,避免超过10 
 
 
 if(c[d+1]!=0) d++;                //如果最高位有进位,则最高位再加一位
 for(k=d;k>=0;k--)                 //用循环显示出c数组的每一位 
     printf("%d",c[k]);            //显示出c数组的每一位 
 printf("\n",d);                   //换行 
 system("PAUSE");                  //暂停屏幕,以看清结果
 return 0;}                        //结束程序

【运行结果】

回答2:

这个涉及到格式化输入,其余都不难。只要知道如何格式话输入即可。

代码如下:

#pragma warning(disable : 4996)
#include
int main()
{
int a, b;
scanf("%40d", &a);
scanf("%40d", &b);
printf("%d", a+b);
return 0;
}