4-1 改错题

测试数据来自 nnu_contest/5c359ff9f41362131f6fb840

作业已超过截止时间,您无法递交本题目。

输入一个长度小于10的数字字符串,将其拆分成两段子串(每个子串长度大于0),将两段子串分别转换成对应整数后再求它们的和,输出所有可能的拆分方式及得到的和值,输出其中的最大和值。
提示:库函数“char *strncpy(char *dest,const char *src,unsigned maxlen);”的功能是将src指向的字符串中前maxlen个字符复制到dest指向的存储区。
【含有错误的源程序】
#include<stdio.h>
#include<string.h>
int atoi(char *s)
{ int m=0;
while(*s)
{ m=m*10+*s;
s++;
}
return m;
}
int divide(char s[],int n,int r[][])
{ static char one[10],two[10];
int max=0,a,b; int i;
for(i=0;i<n-1;i++)
{ strncpy(one,s,i+1);
strcpy(two,s+i);
a=atoi(one);
b=atoi(two);
r[i][0]=a; r[i][1]=b; r[i][2]=a+b;
if(max<a+b) max=a+b;
}
return max;
}
int main()
{
static char num[10];
int max,res[10][3];
int i,k;
scanf("%s", num[10]);
k=strlen(num);
max=divide(num,k,res);
for(i=0;i<k-1;i++)
printf("%d+%d=%d\n",res[i][0],res[i][1],res[i][2]);
printf("summax is:%d\n",max);
return 0;
}

测试案例:
输入:

123456789

输出:

1+23456789=23456790
12+3456789=3456801
123+456789=456912
1234+56789=58023
12345+6789=19134
123456+789=124245
1234567+89=1234656
12345678+9=12345687
summax is: 23456790

计算机二级上机模拟题(第一波,自取)

未认领
状态
已结束
题目
10
开始时间
2024-03-05 00:00
截止时间
2024-03-13 23:59
可延期
24.0 小时