16.在不應(yīng)加地址運(yùn)算符&的位置加了地址運(yùn)算符。
scanf("%s",&str);
C語(yǔ)言編譯系統(tǒng)對(duì)數(shù)組名的處理是:數(shù)組名代表該數(shù)組的起始地址,且scanf函數(shù)中的輸入項(xiàng)是字符數(shù)組名,不必要再加地址符&。應(yīng)改為:
scanf("%s",str);
1、編一個(gè)函數(shù)fun(char *s),函數(shù)的功能是把字符串中的內(nèi)容逆置。
例子如:字符串中原有的內(nèi)容為:abcdefg,則調(diào)用該函數(shù)后,串中的內(nèi)容為:gfedcba
fun(char *s)
{ int i=0,t,n=strlen(s);
for(;s+i
{t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;}}
注:該題的算法是先分別找出字符串的兩頭,然后同時(shí)逐一往中間移動(dòng),每移動(dòng)一次
都進(jìn)行兩字符的位置對(duì)換,直到中間字符(用s+i
地址,因此要注意把它的內(nèi)容取出再進(jìn)行換位。即先進(jìn)行取內(nèi)容運(yùn)算*)
2、請(qǐng)編寫(xiě)函數(shù)fun,對(duì)長(zhǎng)度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按降序排列。例如,原來(lái)的字符串為CEAedca,排序后輸出為CedcEAa。
int fun(char *s,int num)
{ int i,j,t;
for(i=1;i
for(j=i+1;j
if(s[i]
{ t=s[i];
s[i]=s[j];
s[j]=t;}}
該題采用的排序法是選擇法進(jìn)行降序排序,算法是用外for()循環(huán)從字符串的前端往后
端走動(dòng),每走動(dòng)一個(gè)字符都用內(nèi)嵌的for()循環(huán)在該字符后找出最小的字符與該字符進(jìn)
行換位。直到外for()循環(huán)走到最后一個(gè)字符。此外,此題還要注意把首尾字符除開(kāi),即
在最外層for()循環(huán)中從1開(kāi)始,只到num-2即可。
3、請(qǐng)編寫(xiě)一個(gè)unsigned fun(unsigned w),w是一個(gè)大于10的無(wú)符號(hào)整數(shù),若w是n(n>=2)位的整數(shù),函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。例如:w值為5923,則函數(shù)返回923;w值為923則函數(shù)返回23。
unsigned fun( unsigned w )
{ if(w>=10000) return w%10000;
if(w>=1000) return w%1000;
if(w>=100) return w%100;
return w%10;
}
注:由于unsigned型整數(shù)在0-65535這間,只要它大于10000則對(duì)10000求余即得出后
面4位,否則如果大于1000則對(duì)1000求余得出后3位數(shù),這樣一層一層往小的判斷。由于
return的作用除了返回值以外,還有當(dāng)執(zhí)行到return時(shí)就跳出該程序,所以可以連續(xù)的
用if()語(yǔ)句。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |