|
发表于 2022-4-4 20:38:02
|
显示全部楼层
多组输入 不知道是何意。是一次输入多组?还是循环输入多组。
如果是一次输入多组,那么题意是不是还要加个条件,最多不能超过多少组。
题意描述的不清不楚。如果这就是是原题那么这个出题的老师没出好。
你的代码我是没法改,我上了我的代码给参考:
- #include<stdio.h>
- #include<stdlib.h>
- #define MAX_LEN 200
- int main()
- {
- char a[MAX_LEN] = {'\0'};
- char b[MAX_LEN] = {'\0'};
- char sum[MAX_LEN+1] = {'\0'};
- char c;
- int i, j, k, second, aLen, bLen, len, tmp, tmpA, tmpB, cs;
- // 获取输入 保存到a和b中
- i=0;
- second = 0;
- while( (c=getchar())!='\n' )
- {
- if(c!=' ')
- {
- if(!second)
- {
- a[i] = c;
- }
- else
- {
- b[i] = c;
- }
- i++;
- }
- else
- {
- aLen = i-1; // 保存a的长度
- i=0;
- second = 1;
- }
- }
- bLen = i-1; // 保存b的长度
- // 保存a,b效长的到len
- len = aLen;
- if (bLen>aLen)
- {
- len = bLen;
- }
- // 相加保存到sum中
- cs = 0; // 进位标志
- for(i=aLen, j=bLen, k=0; len>=0; i--,j--, k++, len--)
- {
- tmpA = 0;
- if(i>=0)
- {
- tmpA = (int)a[i]-48; // 字符'0'转整 (int)'0'-48
- }
- tmpB = 0;
- if(j>=0)
- {
- tmpB= (int)b[j]-48;
- }
- tmp = tmpA + tmpB;
- // 上一组相加是否有进位
- if(cs)
- {
- tmp += cs; // 加上进位
- }
- // 当前是否要进位
- cs = tmp / 10;
- if(cs)
- {
- sum[k] = (char)(tmp%10+48); // 有进位则取个位存储
- }
- else
- {
- sum[k] = (char)(tmp+48); // 转字符串存储
- }
- }
- k -= 1;
- // 最后一位进位处理
- if(cs)
- {
- sum[k++] = '1';
- }
- // 反向输出
- for(i=k; i>=0; i--)
- {
- printf("%c", sum[i]);
- }
- printf("\n");
- return 0;
- }
复制代码 |
|