#7429: RE(記憶體區段錯誤!)


mrsasuke (極限)

學校 : 不指定學校
編號 : 28000
來源 : [111.253.170.243]
最後登入時間 :
2015-08-04 16:42:30
a224. 明明愛明明 | From: [140.113.68.109] | 發表日期 : 2013-01-26 22:27

 程式碼如下:
 
#include <stdio.h>
#include <ctype.h>

int main (){
char s[1002],a[1002];
int i,j,k,b[26];
while (fgets (s,1000,stdin)!='\0'){
for (i=0;i<26;i++)              //b[26]就是A~Z的個別出現次數,先設定初始值0
b[i]=0;
j=0;
k=0;
for (i=0;s[i]!='\n';i++){      //當s[i]不等於\n,且如果s[i]是字母的話,把它轉成大寫給a[j],否則捨棄
if (isalpha(s[i])){
a[j]=toupper(s[i]);
j++;
}}
for (i=0;i<j;i++){               //總共有j個英文字,把這j個英文字的各別出現次數分配給b[0]~b[25](A~Z)
b[a[i]-65]++;
}
for (i=0;i<26;i++){            //如果A~Z出現奇數次,k+1
if (b[i]%2!=0)
k++;
}
if (k>1)                             //如果有大於1個以上出現奇數次的字母(k>1),那麼無法形成迴文
printf ("no...\n");
else printf ("yes !\n");
}
return 0;
}
 
為什麼RE呢?自己測試的時候都能跑出結果的.... 
 
#7436: Re:RE(記憶體區段錯誤!)


passerr (20130326 0340 48)

學校 : 不指定學校
編號 : 8516
來源 : [125.224.93.117]
最後登入時間 :
2024-09-05 12:09:52
a224. 明明愛明明 | From: [125.231.39.229] | 發表日期 : 2013-01-29 01:28

我想應該跟

fgets (s,1000,stdin)

這有關吧

試試(注意char陣列容量)

 fgets (s,1002,stdin)

 假設輸入有1000個加上\r\n (windows)

就有1002

 
ZeroJudge Forum