解题思路:用字符数组储存两个加数,从个位开始,进行相加,结果存放另一个数组里,(顺便考虑是否进位) 注意事项: 在下的方法 要注意 每次输入数据时,要进行清空数组和进位标志count赋值0; 要考虑两个加数长度是否相等,以及最高位是否进位 参考代码: #include<stdio.h> #include<string.h> int main() { char str1[1100], str2[1100]; //定义两个字符串,表示两个加数 int i, L1, L2, count = 0,num[1100] = { 0 }; while (scanf("%s %s", str1, str2) != EOF) //输入两个字符串 { count = 0; //count表示进位,每次输入赋值为0 memset(num, 0, sizeof(num)); // 数组num 代表 和 的即结果,每次清空数组 L1 = strlen(str1); //L1表示第一个加数的长度 L2 = strlen(str2); //L2表示第二个加数的长度 for (i = 1005; L1 > 0 || L2 > 0; i--) //为了防止加数 位数过多,i从1005开始 { if (L1 > 0 && L2 > 0) //当相同位 上都有数字时,进行相加 { num[i] = str1[L1 - 1] + str2[L2 - 1] + count - 2 * '0'; L1--; L2--; } else //当某一个数字的已经计算到最高位时,进行赋值 { if (L1 > 0 && !L2) //当第二个数字已经计算到最高位时 { num[i] = str1[L1 - 1] + count - '0'; L1--; } else if (!L1&&L2 > 0) //当第一个数字已经计算到最高位时 { num[i] = str2[L2 - 1] + count - '0'; L2--; } } if (num[i] > 9) //当前位的和 超过10 ,进位! { num[i] -= 10; count = 1; } else //当前位的和 不超过10 , 不进位! count = 0; } if (count == 1) //这一步的if else 语句, 是为了计算 : { // 如果两个加数长度相等,最高位是否进位 num[i] = 1; for (; i <= 1005; i++) printf("%d", num[i]); //输出结果 } else { for (i++; i <= 1005; i++) //如果两个加数长度不等,或者长度相等最高位不存在进位 printf("%d", num[i]); // 输出结果 } printf("\n"); } return 0; }
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:657 |
C语言训练-求素数问题 (C语言代码)浏览:773 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:611 |
程序员的表白 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:782 |
Wu-求圆的面积 (C++代码)浏览:1994 |
简单的a+b (C语言代码)浏览:661 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:703 |
母牛的故事 (C语言代码)浏览:739 |