以下我的兩個嘗試 第一個是把要翻轉的目標當數字 第二個則是當字串處理
第一個錯在溢位或者商不為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;
}
}
我後來自己改過兩個方法都ac了
段錯誤是我陣列要求的空間不夠大 導致出現的錯誤
溢位則是需要%lld 跟 long long 的宣告
即使如此 改完這些問題後 這個程式碼還有不完美喔 還有其他沒有寫完的地方
比如 如果字串是0000
要輸出0喔
祝各位順心