第 1 頁(yè):改錯(cuò)題 |
第 2 頁(yè):簡(jiǎn)單應(yīng)用題 |
第 3 頁(yè):綜合應(yīng)用題 |
二、簡(jiǎn)單應(yīng)用題
請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是則函數(shù)返回1,主函數(shù)中輸出YES;否則返回0,主函數(shù)中輸出NO;匚氖侵疙樧x和倒讀都一樣的字符串。
例如:字符串LEVEL是回文,而字符串123312就不是回文。
注意:部分源程序已存在文件kt11_2.cpp中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填寫(xiě)若干語(yǔ)句。
文件kt11_2.cpp的內(nèi)容如下:
#include
#include
#defineN80
intfun(char*str)
{
}
voidmain()
{ chars[N];
cout<<"Enterastring:"< gets(s);
cout<<"\n\n";
puts(s);
if(fun(s))
cout<<"YES\n";
else
cout<<"NO\n"; }
【參考答案】
int fun(char *str)
{
int i,n=0,fg=1;
char *p=str;
while(*p)
{ n++; p++; }
for(i=0;i if(str[i]==str[n-1-i]) ;
else
{ fg=0; break; }
return fg;
}
【試題解析】
本題的解題思路是:先利用循環(huán)中指針的移動(dòng)來(lái)求得字符串的長(zhǎng)度n,然后用一個(gè)for循環(huán)依次取得數(shù)組中的前半部分元素,用取得的前半部分內(nèi)的元素逐個(gè)與后半部分內(nèi)的對(duì)應(yīng)位置的元素進(jìn)行比較,如果相同,不做任何工作,接著取下一個(gè)元素,繼續(xù)比較;如果不相同,可以判斷該字符串肯定不是回文,就給標(biāo)志變量fg賦值0(fg的初始值為1)。最終把fg作為函數(shù)的返回值返回(fg值為1表明是回文,fg值為0表明不是回文)。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |