課後習題第三波來了,到第三章之後**之類的稍微變長了一些,所以我把這一章的答案分為幾部分。這一章重點是字串的處理,對於字串問題,通常只要細心就沒有問題了,下面不多說了直接上詳解。
習題3-1 分數統計(stat)
任務1:這個比較簡單就直接上**了:
#include #include #include #define maxn 100 + 10
int cmp(const void*a,const void*b)
int main()
max=a[0];
for( i = 1; i < maxn; i++)
} for( i = 0, j = 0; i < maxn; i++)
} qsort(stu,j,sizeof(stu[0]),cmp);
for( i = 0; i < j; i++)
printf("\n");
return 0;
}
任務2:這個相對任務1難度就加大許多了,其中這一題,在使用 qsort 函式時還有乙個小細節要注意,就是在return 時,對於double型的要使用 三元運算子,如果按照之前的處理方法會造成錯誤,錯誤來自於浮點數的誤差。這一題我的處理方法與第一題類似,但是要與第一題整數類似,就必須做出一點犧牲,然而我犧牲了記憶體。**如下:
#include #include #include #define maxn 10000 + 100
int cmp(const void*a,const void*b)
int main()
max=a[0];
for( i = 1; i < maxn; i++)
} for( i = 0, j = 0; i < maxn; i++)
} qsort(stu,j,sizeof(stu[0]),cmp);
for( i = 0; i < j; i++)
printf("\n");
return 0;
}
習題3-2 單詞長度(word)
這一題比較簡單,只需要注意 數單詞 數的時候小心一些就好了
#include #include #define maxn 10000 + 100
char str[maxn];
int main()
printf("count = %d,sum = %d\n",count,sum);
printf("%.2lf\n",1.0*sum/count);
return 0;
}
習題3-3 乘積的末三位(product)
這一題的分兩步,第一步將含有大小寫字母的字串捨棄,第二部分將純數字的字串轉化為數字進行運算。這樣一來問題就清晰了,**如下:
#include #include #include int isnum(char *a,int len)
return 1;
}int main()
} printf("%03d\n",p);
} return 0;
}
對於【第三章】的其他習題,會在後面的文章繼續
【第一章】課後習題詳解:傳送門
【第二章】課後習題詳解:傳送門
【第三章】第二部分:傳送門
《演算法競賽入門經典》第三章習題3 4
題目名稱 計算器 題目描述 編寫程式,讀入一行恰好包含乙個加號 減號或乘號的表示式,輸出它的值。這個運算子保證是二元運算子,且兩個運算子均不超過100的非負整數。運算子和運算子可以緊挨著,也可以用乙個或多個空格 tab隔開。行首末尾均可以有空格。樣例輸入 1 1 樣例輸出 2 樣例輸入 2 5 樣例...
演算法競賽入門經典 第2版 課後習題 第三章
c 語言版實現 2 字串的總長度 3 複製字串 str2 到字串 str1 4 比較字串 str2 到字串 str1 strcmp s1,s2 5 查詢字串 str 中字元 ch 的第一次出現的位置 6 查詢向字串 str1 中字串 str2 的第一次出現的位置 使用cin輸入字串方式 1 接受乙個...
演算法競賽入門經典 第三章
最長回文子串 當字串的長度比較小的時候 attention 最好把陣列開在外面,如果開在main外面並且陣列太大,就會異常退出的。最長回文子串 include include include define maxn 5000 10 char buf maxn s maxn int main prin...