<img src="https://img-blog.csdn.net/20140921085726343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGFkeGFk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="font-family: Arial, Helvetica, sans-serif;" alt="" />
<pre name="code" class="objc">#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
int jinwei = 0;
int flag1 = 0;
void comflag1(int len,int flag,char (*str)[maxsize])
{
int temp1 = 0;
if(len == 0)
{
flag1 = 2;
return;
}
for(int i=0;i<=flag;i++)
{
if(str[i][len] && (str[i][0] == '+'))
{
temp1 += (int)(str[i][len] - '0' );
}
if(str[i][len] && (str[i][0] == '-'))
{
temp1 -= (int)(str[i][len] - '0' );
}
}
if(temp1<0)
{
flag1 = 1;
return;
}
else if(temp1 == 0)
{
len -= 1;
comflag1(len,flag,str);
}
else
{
flag1 = 0;
return;
}
}
int main()
{
int flag = 0;
int temp = 0;
char *p;
char num[maxsize] ="";
char str[maxsize][maxsize] = {""};
if(!(p = (char *)malloc(100)))
exit(0);
fgets(p,100,stdin);
/*提取字符串*/
for(int i=0;i<strlen(p);i++)
{
num[i] = p[i];
if(p[i] == ' ')
{
int j = 1;
int n = i - 1;
if(num[temp] == '-')
{
str[flag][0]= '-';
temp += 1;
}
else str[flag][0]= '+';
for(n;n>=temp;n--)
{
str[flag][j]= num[n];
j++;
}
temp = i + 1;
flag +=1;
}
if(p[i] == '.')
{
int j = 1;
int n = i - 1;
if(num[temp] == '-')
{
str[flag][0]= '-';
temp += 1;
}
else str[flag][0]= '+';
for(n;n>=temp;n--)
{
str[flag][j]= num[n];
j++;
}
for(i;i<strlen(p);i++)
{
if(p[i] == ' ')
{
temp = i + 1;
flag += 1;
break;
}
if(p[i] == '\n')
{
flag1 = 1;
break;
}
}
}
if((p[i] == '\n')&& (flag1 == 0))
{
int j = 1;
int n = i - 1;
if(num[temp] == '-')
{
str[flag][0]= '-';
temp += 1;
}
else str[flag][0]= '+';
for(n;n>=temp;n--)
{
str[flag][j]= num[n];
j++;
}
}
}
free(p);
memset(num, 0, sizeof(num));
/*整数相加*/
int len = 0;
for(int j=0;j<=flag;j++)
{
len = ((len)>(strlen(str[j])))?(len):(strlen(str[j]));
}
len -= 1;
int len1 = len;
comflag1(len1--,flag,str);
for(int j=1;j<=len;j++)
{
temp = 0;
for(int i=0;i<=flag;i++)
{
if(str[i][j] && (str[i][0] == '+'))
{
temp += (int)(str[i][j] - '0' );
}
if(str[i][j] && (str[i][0] == '-'))
{
temp -= (int)(str[i][j] - '0' );
}
}
temp += jinwei;
if(temp<0 && flag1 == 0)
{
num[j] = (char)( 10 + temp % 10 + '0');
jinwei = temp / 10;
}
else if(temp>=0 && flag1 == 0)
{
num[j] = (char)(temp % 10 + '0');
jinwei = temp / 10;
}
///
else if(temp<=0 && flag1 == 1)
{
num[j] = (char)( 0 - temp % 10 + '0');
jinwei = temp / 10;
}
else if(temp>0 && flag1 == 1)
{
num[j] = (char)(10 - temp % 10 + '0');
jinwei = temp / 10 + 1;
}
else
{
num[1] = '0';
len = 1;
break;
}
}
if(jinwei)
{
while(jinwei)
{
len ++;
num[len] = (char)(jinwei % 10 + '0');
jinwei /= 10;
}
}
if(flag1 == 1)
printf("-");
for(int j=len;j>=1;j--)
{
printf("%c",num[j]);
}
return 0;
}