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