zoj 2476
浙大平台的ACM题,wa了,但是找不出错误,望帮忙解决
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10000
int myatof(char *s)
{
char *head=s;
char *p=s;
while(*s!='\0')
if(*s=='$' || *s==',' || *s=='.' ||*s=='\n')
s++;
else
*p++=*s++;
*p='\0';
return atoi(head);
}
void reverse(char *s)
{
char *p=strlen(s)-1+s;
char temp;
for(;s<p;s++,p--){
temp=*s;
*s=*p;
*p=temp;
}
}
void myatoi(int sum,char *s)
{
char *p=s;
int n;
n=sum%100;
sum/=100;
*s++ ='$';
do {
*s++ = sum%10+'0';
if((s-p)%4==0 && sum>10)
*s++=',';
}while((sum/=10));
*s='\0';
reverse(1+p);
*s++='.';
*s++=n/10+'0';
*s++=n%10+'0';
*s='\0';
}
main()
{
FILE *fp;
int sum,num;
char s[20];
int n,i;
fp=fopen("a.txt","r");
while(fscanf(fp,"%d",&n),n!=0) {
fgets(s,20,fp);
sum=0;
for(i=0;i<n;i++) {
fgets(s,20,fp);
num=myatof(s);
sum+=num;
}
myatoi(sum,s);
printf("%s\n",s);
}
return 0;
}
...全文



