#10645: 求助,測資的形式是? (因為一直RE)


a5083 (assassin刺客大師)

學校 : 新北市立板橋高級中學
編號 : 28347
來源 : [140.116.138.99]
最後登入時間 :
2017-06-27 17:13:56
d615. 計算機運算 -- 葆葆 | From: [111.248.103.194] | 發表日期 : 2016-01-20 19:19

我將程式碼上傳後

他不斷顯示

Segmentation fault

有人可以幫幫我嗎,謝謝



#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int digit(int);

int main()
{

long long int ans;
int temp;
int d;
int num;
int n;
int j;
char*str;
char*ptr;
char tempc;
str=(char*)malloc(sizeof(char)*1000001);
while(scanf("%d",&n)!=EOF)
{
scanf("%c",&tempc);
for(j=0;j<n;j++)
{
gets(str);
ptr=str;
if(*str=='-')
{
ptr++;
temp=-1*atoi(ptr);
d=digit(atoi(ptr));
}
else
{
temp=atoi(ptr);
d=digit(temp);
}
ans=temp;
ptr=ptr+d;
while(1)
{
if(*ptr>='0'&&*ptr<='9')
{
if(tempc=='+')
ans=ans+atoi(ptr);
else if(tempc=='-')
ans=ans-atoi(ptr);
else if(tempc=='*')
ans=ans*atoi(ptr);
else if(tempc=='/')
ans=ans/atoi(ptr);
num=atoi(ptr);
d=digit(num);
ptr=ptr+d;
}
else if(*ptr=='+'||*ptr=='-'||*ptr=='*'||*ptr=='/')
{
tempc=*ptr;
ptr++;
}

else if(*ptr==' ')
ptr++;
else if(*ptr=='\0')
break;
}
printf("%lld\n",ans);
}
}
free(str);

return 0;
}

int digit(int n)//找出數字有幾位數
{
int ans;
ans=(int)(log(n)/log(10));
return ans+1;
}
 
ZeroJudge Forum