#20635: RE:溢位和段錯誤 C NA 67% 求解


a415627945 (\( • ̀ω•́ )/)

學校 : 義守大學
編號 : 111725
來源 : [114.47.9.212]
最後登入時間 :
2023-02-08 06:49:03
a038. 數字翻轉 | From: [180.176.65.41] | 發表日期 : 2020-02-15 10:57

 以下我的兩個嘗試 第一個是把要翻轉的目標當數字 第二個則是當字串處理

第一個錯在溢位或者商不為0問題  不清楚是什麼地方出錯了

#include<stdio.h>
int main()
{
long long a,j,p,t=10;

while( scanf("%d",&a)!=EOF )
{
j=a;
while(j%t==0)//數有連續幾個零在最後面
{
t=t*10;
}

j=j/(t/10); //去掉0
while(j!=0)
{
p=j%10;
j=j/10;
printf("%d",p);
}
printf("\n");

}
}

這個好像是一個常見卻令人頭痛的錯誤 我的理解是 儲存的空間 要求或變更的位址不對 是被保護的地方 導致系統回復錯誤

不清楚要怎麼下手  

#include<stdio.h>


#include<string.h>
int main()
{
int i,j,count=1;
char k[100];
while( scanf("%s",k)!=EOF )
{
j=strlen(k)-1;
i=strlen(k)-1;
while(i!=-1)
{
if(k[j]=='0')
{
while(k[i]=='0')//檢查為零者是否為連續且鄰近\0
{
if(k[i+1]=='\0') count--;//j是鄰近\0的0,i則是他的下一個 只用一次 表示開頭為0
if(i+count==j)
{
i--;
count++;
}
else break;
}
}
printf("%c",k[i]);
i--;

}
printf("\n");
count=1;

}
}

 
#21099: Re:RE:溢位和段錯誤 C NA 67% 求解


a415627945 (\( • ̀ω•́ )/)

學校 : 義守大學
編號 : 111725
來源 : [114.47.9.212]
最後登入時間 :
2023-02-08 06:49:03
a038. 數字翻轉 | From: [180.176.65.41] | 發表日期 : 2020-04-10 23:31

我後來自己改過兩個方法都ac了

段錯誤是我陣列要求的空間不夠大 導致出現的錯誤

溢位則是需要%lld 跟 long long 的宣告

即使如此 改完這些問題後 這個程式碼還有不完美喔 還有其他沒有寫完的地方

比如 如果字串是0000

要輸出0喔

祝各位順心 

 
 
ZeroJudge Forum