C语言学的不精,大神求100位数和100位整数的加法运算??

没礼貌的猿猴 2016-09-26 05:57:51
本人刚开始学了一个学期C语言可就是感觉没有什么提高,希望有人能多指点我,有人让我编100位和100位整数的加法,我知道int型的值范围有限,有些想法但就是不会编啊?求教求教。谢谢谢.....
...全文
1372 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
没礼貌的猿猴 2016-09-27
  • 打赏
  • 举报
回复
谢谢大家了,哈哈哈,多多学习
赵4老师 2016-09-27
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char a1[MAXLEN];
char a2[MAXLEN];
static int v1[MAXLEN];
static int v2[MAXLEN];
static int v3[MAXLEN];
int i,j,n,L,z;
void main(void) {
    scanf("%d",&n);
    for (j=0;j<n;j++) {
        scanf("%s%s",a1,a2);

        L=strlen(a1);
        for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';

        L=strlen(a2);
        for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';

        for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];

        for (i=0;i<MAXLEN;i++) {
            if (v3[i]>=10) {
                v3[i+1]+=v3[i]/10;
                v3[i]=v3[i]%10;
            }
        }

        printf("Case %d:\n", j+1);
        printf("%s + %s = ", a1, a2);

        z=0;
        for (i=MAXLEN-1;i>=0;i--) {
            if (z==0) {
                if (v3[i]!=0) {
                    printf("%d",v3[i]);
                    z=1;
                }
            } else {
                printf("%d",v3[i]);
            }
        }
        if (z==0) printf("0");

        printf("\n");
    }
}
//Sample Input
//3
//0 0
//1 2
//112233445566778899 998877665544332211
//
//Sample Output
//Case 1:
//0 + 0 = 0
//Case 2:
//1 + 2 = 3
//Case 3:
//112233445566778899 + 998877665544332211 = 1111111111111111110
mxway 2016-09-27
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
char d1[1010],d2[1010],result[1010];
int count;

void converse(){
    int i,len=strlen(result);
    char c;
    for(i=0;i<len/2;i++){
        c=result[i];
        result[i]=result[len-i-1];
        result[len-i-1]=c;
    }
}

void add(){
    int len1=strlen(d1)-1;
    int len2=strlen(d2)-1;
    count=0;
    int flag=0,t;
    while(len1>=0 && len2>=0){
        t=d1[len1]-'0'+d2[len2]-'0'+flag;
        if(t>=10)flag=1;
        else flag=0;
        result[count++]=t%10+'0';
        len1--;
        len2--;
    }
    while(len1>=0){
        t=d1[len1]-'0'+flag;
        if(t>=10)flag=1;
        else flag=0;
        result[count++]=t%10+'0';
        len1--;
    }
    while(len2>=0){
        t=d2[len2]-'0'+flag;
        if(t>=10)flag=1;
        else flag=0;
        result[count++]=t%10+'0';
        len2--;
    }
    if(flag>0)result[count++]=flag+'0';
    result[count]='\0';
    converse();
}

int main(){
    int T,i;
    scanf("%d",&T);
    for(i=1;i<=T;i++){
        scanf("%s%s",d1,d2);
        add();
        printf("Case %d:\n",i);
        printf("%s + %s = %s\n",d1,d2,result);
        if(i!=T)printf("\n");
    }
    return 0;
}
代码仅供参考
ooolinux 2016-09-26
  • 打赏
  • 举报
回复
C Primer Plus C语言程序设计:现代方法:第2版(被誉为"近10年来最好的一部C语言著作") C和指针 或者谭浩强 以上任选一本就差不多了,以下为参考书: 《深入理解C指针》 《C陷阱与缺陷》 《C专家编程》 《C语言点滴》 《C语言课程设计案例精编》 C语言程序开发范例宝典 C语言经典编程282例
zycxnanwang 2016-09-26
  • 打赏
  • 举报
回复
百度一下,高精度算法!
paschen 2016-09-26
  • 打赏
  • 举报
回复
用字符串来存,然后从低位依次相加,自己处理进位等

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧