问题:http://acm.hrbeu.edu.cn/Problems.php?id=1047&set=1
我做的前一个程序对,两个加一起就做不出来了!帮忙看看提提意见啊!
#include<stdio.h>
#include<math.h>
int weishu(char a[])
{int *p,i=0,j=0,m,n;
for(p=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='=')
m=i;
if(*(a+i)=='v')
n=j;
}
return j-m-2;
}
double sum(char a[])
{int *i_pointer2,*i_pointer3,i=0,j=0,t=0,c;
int m,n;
double total=0,total1=0;
for(i_pointer2=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='.')
m=i;
if(*(a+j)=='v'&&*(a+j-1)!='0')
{n=j;c=j-m-1;}
}
while(t<=c+2)
{total=total+(a[j-2]-48)*pow(10,-c);
j--;c--;t++;
}
i=0;j=0;t=0;
for(i_pointer3=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='=')
m=i;
if(*(a+j)=='.')
{n=j;c=j-m-2;break;}
}
while(t<=c)
{total1=total1+(a[j-1]-48)*pow(10,t);
j--;t++;
}
return (total+total1);
}
int sum1(char a[])
{int *i_pointer1,i=0,sum=0,j=0;
for(i_pointer1=a;*(a+i)!='\0';i++)
{if(*(a+i)=='v')
while(j<weishu(a))
{sum=sum+(a[i-1]-48)*pow(10,j);
i--;j++;
}
}
return sum;
}
main()
{char a[100];
int *p,i=0;
double result,result1;
clrscr();
gets(a);
for(p=a;*(a+i)!='\0';i++)
{ if(*(a+i)=='.')
{result1=sum(a);break;}
if(*(a+i)=='v')
result1=sum1(a);
}
printf("%f",result1);
getch();
return 0;
}
第二个程序:
#include<stdio.h>
#include<math.h>
int weishu(char a[])
{int *p,i=0,j=0,m,n;
for(p=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='=')
m=i;
if(*(a+i)=='v')
n=j;
}
return j-m-2;
}
int weishu2(char a[])
{int *p,i=0,j=0,m,n;
for(p=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='=')
m=i;
if(*(a+i)=='a')
n=j;
}
return j-m-2;
}
double sum2(char a[])
{int *i_pointer2,*i_pointer3,i=0,j=0,t=0,c;
int m,n;
double total=0,total1=0;
for(i_pointer2=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='.')
m=i;
if(*(a+j)=='a')
{n=j;c=j-m-1;}
}
while(t<=c+2)
{total=total+(a[j-2]-48)*pow(10,-c);
j--;c--;t++;
}
i=0;j=0;t=0;
for(i_pointer3=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='=')
m=i;
if(*(a+j)=='.')
{n=j;c=j-m-2;break;}
}
while(t<=c)
{total1=total1+(a[j-1]-48)*pow(10,t);
j--;t++;
}
return (total+total1);
}
int sum3(char a[])
{int *i_pointer1,i=0,sum=0,j=0;
for(i_pointer1=a;*(a+i)!='\0';i++)
{if(*(a+i)=='a')
while(j<weishu2(a))
{sum=sum+(a[i-1]-48)*pow(10,j);
i--;j++;
}
}
return sum;
}
double sum(char a[])
{int *i_pointer2,*i_pointer3,i=0,j=0,t=0,c;
int m,n;
double total=0,total1=0;
for(i_pointer2=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='.')
m=i;
if(*(a+j)=='v')
{n=j;c=j-m-1;}
}
while(t<=c+2)
{total=total+(a[j-2]-48)*pow(10,-c);
j--;c--;t++;
}
i=0;j=0;t=0;
for(i_pointer3=a;*(a+i)!='\0';i++,j++)
{if(*(a+i)=='=')
m=i;
if(*(a+j)=='.')
{n=j;c=j-m-2;break;}
}
while(t<=c)
{total1=total1+(a[j-1]-48)*pow(10,t);
j--;t++;
}
return (total+total1);
}
int sum1(char a[])
{int *i_pointer1,i=0,sum=0,j=0;
for(i_pointer1=a;*(a+i)!='\0';i++)
{if(*(a+i)=='v')
while(j<weishu(a))
{sum=sum+(a[i-1]-48)*pow(10,j);
i--;j++;
}
}
return sum;
}
main()
{char a[100];
int *p,i=0;
double result,result1;
clrscr();
gets(a);
for(p=a;*(a+i)!='\0';i++)
{ if(*(a+i)=='.')
{result1=sum(a);break;}
if(*(a+i)=='v')
result1=sum1(a);
}
i=0;
for(p=a;*(a+i)!='\0';i++)
{ if(*(a+i)=='.')
{result=sum2(a);break;}
if(*(a+i)=='a')
result=sum3(a);
}
printf("%f %f",result1,result);
getch();
return 0;
}