两个问题,一是没有特判结果为0导致当结果为0时没有输出,二是没有把数字的每一个位对齐,比如12+123,这里你的代码是1对1,2对2的,建议用string输入,然后找到两个数中最高的位,之后下标从大到小把字符变成数字存到你的number数组中
by imsb @ 2023-10-05 07:39:08
话说这里可以发题解吗
by imsb @ 2023-10-05 07:39:43
@[imsb](/user/1013544) 讨论区不能发题解,要发题解去题解区
by yanhao40340 @ 2023-10-05 07:44:06
@[Misaka14573](/user/1125185)
说句闲话:
你看回复框上面这一栏,从右往左数第6个,可以把代码放进去。这样代码就不会像你发的这个一样杂乱无章了捏。
或者用三个 ` 符号(键盘左上角) ,下面开一行贴上代码,再开一行用三个那个符号就行了。
这样会让你的代码的排版就像c++一样美观。
by WZRYWZWY @ 2023-10-05 07:52:49
@[Misaka14573](/user/1125185) 想要更丰富的展现?使用 `Markdown`、$\KaTeX$
---
\```cpp
//这里放你的代码
\```
by Special_Tony @ 2023-10-05 08:03:05
```c
#include<stdio.h>
int number[1000],number1[1000],number3[1000];
int i=0;
int i1=0;
int t9=0;
int text(int t)
{
for(int i=0;i<=9;i++)
{
if(i+48==t) //将字符串转换为int类型
{
return i;
}
}
}
void count()
{
int t5,t6;
int t8=0;
(i>=i1)?(t5=i):(t5=i1);
//printf("%d %d\n",i,i1);
int x1=0;
if(i>i1)
{
for(int n=i1-1;n>=0;n--)
{
number1[n+i-i1]=number1[n];
number1[n]=0;
}
}
if(i1>i)
{
for(int n=i-1;n>=0;n--)
{
number[n+i1-i]=number[n];
number[n]=0;
}
}
for(int n=t5-1;n>=0;n--)
{
int number11=number[n]+number1[n];
t8+=number11;
if(t8!=0)
{
t9++;
t8=0;
}
number3[x1]+=(number11%10);
x1++;
number3[x1]+=(number11-number11%(10))/(10);
}
for(int tv5=0;tv5<i+i1;tv5++)
{ int t2=1;
if(number3[tv5]>=10)
{
number3[tv5+1]+=(number3[tv5]-(number3[tv5]%(t2*10)))/(t2*10);
number3[tv5]=number3[tv5]%(t2*10);
}
}
}
int main()
{
while(1)
{ int t;
char ai;
scanf("%c",&ai); // 录入两个数据
t=(int)ai;
if(t==10)
{
break;
}
number[i]=text(t);
i++;
}
while(1)
{ int t;
char ai;
scanf("%c",&ai);
t=(int)ai;
if(t==10)
{
break;
}
number1[i1]=text(t);
i1++;
}
count();
for(int misaka=i+i1;misaka>=0;misaka--)
{
if(t9==0)
{
printf("%d",number3[misaka]);
break;
}
if(number3[misaka]==0)
{
int hj=0;
for(int n=i+i1;n>=misaka;n--)
{
if(number3[n]!=0) hj++;
}
if(hj==0) continue;
}
printf("%d",number3[misaka]);
}
return 0;
}
```
做了修改,这回tle了,有点难绷
by Misaka14573 @ 2023-10-09 18:29:12