第4章 c語言習(xí)題課_第1頁
第4章 c語言習(xí)題課_第2頁
第4章 c語言習(xí)題課_第3頁
第4章 c語言習(xí)題課_第4頁
第4章 c語言習(xí)題課_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第4 4章章 習(xí)題課習(xí)題課1. 改進(jìn)的冒泡排序改進(jìn)的冒泡排序?yàn)榱私鉀Q問題為了解決問題, 在程序中設(shè)置一個(gè)在程序中設(shè)置一個(gè)變量變量flag, 用它記錄在每一輪比較用它記錄在每一輪比較中是否進(jìn)行了交換中是否進(jìn)行了交換; 在每輪比較在每輪比較開始前開始前flag=0, 如果在此輪比較中如果在此輪比較中進(jìn)行了交換進(jìn)行了交換, 則則flag=1, 在一輪比較在一輪比較結(jié)束后結(jié)束后, 判斷判斷flag的值是否為的值是否為1, 如如果果值為值為1, 則繼續(xù)進(jìn)行排序則繼續(xù)進(jìn)行排序; 如果值如果值為為0, 說明在此輪比較中沒有進(jìn)行說明在此輪比較中沒有進(jìn)行交換交換(即已經(jīng)完成排序了即已經(jīng)完成排序了), 此時(shí)就此

2、時(shí)就可以終止循環(huán)可以終止循環(huán)(即結(jié)束排序即結(jié)束排序)#include #define N 6void main( ) int aN , i , j , t , flag=1; for ( i=0; iN; i+) scanf(“%d”, &ai ); for(i=0; flag=1; i+) flag=0; for ( j=0; jaj+1 ) t=aj; aj=aj+1; aj+1=t; flag=1; for ( i=0 ; iN ; i+) printf( “%3d”, ai );例例: 一個(gè)學(xué)習(xí)小組有一個(gè)學(xué)習(xí)小組有5個(gè)人個(gè)人, 每個(gè)人有三門課的考試成績每個(gè)人有三門課的考試成績, 求每個(gè)

3、人的總分和該學(xué)習(xí)小組各門課的平均成績。求每個(gè)人的總分和該學(xué)習(xí)小組各門課的平均成績。姓名姓名高數(shù)高數(shù)英語英語政治政治總分總分Mary857888?John908091?Mike799284?Alex838680?Stone877595?用一個(gè)二維數(shù)組用一個(gè)二維數(shù)組來存放成績來存放成績 int s54;用一個(gè)一維數(shù)組用一個(gè)一維數(shù)組來存放來存放各門課各門課的平均的平均成績成績float ave3;每個(gè)人三門課的成績是輸入的每個(gè)人三門課的成績是輸入的總分和各門課的平均成績是計(jì)算出來的總分和各門課的平均成績是計(jì)算出來的#includevoid main( ) int i, j, s54, sum; fl

4、oat ave3; for(i=0; i5; i+) for(j=0; j3; j+) scanf(%d, &sij); sij=si0+si1+si2; for(j=0; j3; j+) sum=0; for(i=0; i5; i+) sum=sum+sij; avej=sum/5.0; for(i=0; i5; i+) for(j=0; j4; j+) printf(%4d, sij); printf( n ); for(i=0; i3; i+) printf( %6.2f , avei);輸入成績輸入成績計(jì)算總分計(jì)算總分對每一門課對每一門課(即每一列即每一列)進(jìn)行處理進(jìn)行處理: 先將每列

5、的先將每列的5個(gè)成績累加求和個(gè)成績累加求和; 再再將總和除將總和除5, 得到每門得到每門課的平均分課的平均分輸出結(jié)果輸出結(jié)果#include#define N 5void main( ) int aN, bN, i, temp; for(i=0; iN; i+) scanf(%d, &ai); for(i=0; iN; i+) scanf(%d, &bi); for(i=0; iN; i+) temp=ai; ai=bi; bi=temp; for(i=0; iN; i+) printf(%d , ai); printf(n); for(i=0; iN; i+) printf(%d , bi)

6、; printf(n);習(xí)題三習(xí)題三 2. 交換數(shù)組交換數(shù)組a,b中對應(yīng)的元素中對應(yīng)的元素習(xí)題三習(xí)題三 8. 在字符串在字符串s1的最大字符后邊插入字符串的最大字符后邊插入字符串s2#include#includevoid main( ) char s181, s240; int i, j, len1, len2, max; printf(輸入字符串輸入字符串1:); gets(s1); printf(輸入字符串輸入字符串2:); gets(s2); max=0; len1=strlen(s1); len2=strlen(s2); for(i=1; s1i!=0; i+) /該循環(huán)是確定插入位

7、置該循環(huán)是確定插入位置 if(s1is1max) max=i; for( i=len1; i=max; i-) /將下標(biāo)將下標(biāo)i之后的字符后移之后的字符后移len2個(gè)字節(jié)個(gè)字節(jié) s1i+len2=s1i; j=max+1; /j指向最大字符的下一個(gè)字節(jié)處指向最大字符的下一個(gè)字節(jié)處 for( i=0; ilen2; i+, j+) /將將s2的字符復(fù)制到的字符復(fù)制到s1中中 s1j=s2i; puts(s1);教材例教材例4.8 插入排序插入排序基本思想基本思想:將序列分為有序序列和無序序列,依次從無序序列中取出元:將序列分為有序序列和無序序列,依次從無序序列中取出元素值插入到有序序列的合適位置

8、。初始時(shí),有序序列中只有第一個(gè)數(shù),素值插入到有序序列的合適位置。初始時(shí),有序序列中只有第一個(gè)數(shù),其余其余N-1個(gè)數(shù)組成無序序列,則個(gè)數(shù)組成無序序列,則N個(gè)數(shù)需進(jìn)個(gè)數(shù)需進(jìn)N-1次插入次插入。尋找在有序序列。尋找在有序序列中插入位置可以從有序序列的最后一個(gè)數(shù)往前找,在未找到插入點(diǎn)之前中插入位置可以從有序序列的最后一個(gè)數(shù)往前找,在未找到插入點(diǎn)之前可以同時(shí)向后移動元素,為插入元素準(zhǔn)備空間。可以同時(shí)向后移動元素,為插入元素準(zhǔn)備空間。原始數(shù)據(jù):原始數(shù)據(jù):int a6=8, 3, 1, 5, 9, 2; 831592初始狀態(tài)初始狀態(tài)831592第第1輪,插入輪,插入33381592831第第2輪,插入輪,插

9、入18138592第第3輪,插入輪,插入585第第4輪,插入輪,插入91358929第第5輪,插入輪,插入2135892 98532教材例教材例4.8 插入排序插入排序# include #define N 20void main() int aN, i, j, t; printf(Please input %d numbers:, N); for(i=0; iN; i+) scanf(%d, &ai); for(i=1; i=0 & taj; j- ) /在有序序列中尋找插入位置在有序序列中尋找插入位置 aj+1=aj; /未找到插入位置,當(dāng)前元素后移一個(gè)位置未找到插入位置,當(dāng)前元素后移一個(gè)

10、位置 aj+1=t; /完成插入完成插入 printf(The sorted numbers: ); for(i=0; iN; i+) printf(%d , ai); printf(n);教材例教材例4.9 求矩陣鞍點(diǎn)求矩陣鞍點(diǎn)987231654求解思路:求解思路:從第從第0行開始進(jìn)行如下操作:在該行中找最大值,然后標(biāo)記出行開始進(jìn)行如下操作:在該行中找最大值,然后標(biāo)記出它所在的列號,再判斷該列中它是否是最小的,如果是則輸出,它所在的列號,再判斷該列中它是否是最小的,如果是則輸出,并結(jié)束;如果不是則到下一行中去尋找鞍點(diǎn)并結(jié)束;如果不是則到下一行中去尋找鞍點(diǎn)教材例教材例4.9 求矩陣鞍點(diǎn)求矩陣鞍

11、點(diǎn)#include #define N 10 void main( ) int aNN, m, n, i, j, sign; printf(input m and n(m,n=%d):n, N); scanf(%d%d, &m, &n); printf(input the array:n); for(i=0; im; i+) /輸入矩陣輸入矩陣 for(j=0; jn; j+) scanf(%d, &aij); for(i=0; im; i+) /對每一行進(jìn)行處理對每一行進(jìn)行處理 for(sign=0, j=1; jn; j+) /尋找第尋找第i行最大值的列號行最大值的列號 if(aisign

12、aij) sign=j; for(j=0; jajsign) /判斷判斷aisign是否是該列中的最小值是否是該列中的最小值 break; /如果不是最小值,終止如果不是最小值,終止for循環(huán)循環(huán) if(j=m) printf(鞍點(diǎn)鞍點(diǎn):%dn, aisign); 教材例教材例4.11:給定一個(gè)字符串,對其進(jìn)行簡單加密處理。:給定一個(gè)字符串,對其進(jìn)行簡單加密處理。 分別顯示加密數(shù)據(jù)和解密數(shù)據(jù)。分別顯示加密數(shù)據(jù)和解密數(shù)據(jù)。 加密規(guī)則:只對英文字母加密,其他字符不變。加密規(guī)則:只對英文字母加密,其他字符不變。 小寫字母的小寫字母的ASCII碼碼+2循環(huán),大寫字母的循環(huán),大寫字母的ASCII碼碼-2

13、循環(huán)。循環(huán)。979899100118119120121122abcdvwxyzcdefxyzababcdezyxwvuABCDEZYXWVU6566676887888990ABCDWXYZYZABUVWX121-24=97122-24=9897+2=9965+24=8966+24=9067-2=65#include stdio.h#define N 20void main( ) char cN; int i; printf(請輸入一個(gè)字符串:請輸入一個(gè)字符串:); gets(c); for(i=0;ci!=0;i+) /對字符串對字符串c進(jìn)行加密操作進(jìn)行加密操作 if(ci=a&ciB&cib

14、&ci=A&ciY) ci=ci+2; else if(ci=Y|ci=Z) ci=ci-24; puts(c); /輸出解密后的字符串輸出解密后的字符串教材例教材例4.11參考程序參考程序教材例教材例4.12:有有3個(gè)字符串個(gè)字符串,編程序找出其中最大者。編程序找出其中最大者。 分析:分析:3個(gè)字符串可考慮用二維字符數(shù)組來存放,現(xiàn)設(shè)一個(gè)二維的字符個(gè)字符串可考慮用二維字符數(shù)組來存放,現(xiàn)設(shè)一個(gè)二維的字符數(shù)組數(shù)組str,大小為,大小為320,即,即3行行20列。用一個(gè)一維字符數(shù)組列。用一個(gè)一維字符數(shù)組string來存放來存放那個(gè)最大的字符串,首先那個(gè)最大的字符串,首先str0和和str1比較,將其中大的字符串存放在比較,將其中大的字符串存放在string中,然后中,然后string與與str2比較,若比較,若str2大于大于string,則將,則將str2中的中的字符串存放到字符串存放到string中。中。abcd0abfgh0 xyz0str0str1str2string a b f g h 0 xyz0#include #include void main( ) char str320, string20;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論