第五章自測練習答案 清華大學出版社 C語言習題、實驗指導及課程設計_第1頁
第五章自測練習答案 清華大學出版社 C語言習題、實驗指導及課程設計_第2頁
第五章自測練習答案 清華大學出版社 C語言習題、實驗指導及課程設計_第3頁
第五章自測練習答案 清華大學出版社 C語言習題、實驗指導及課程設計_第4頁
第五章自測練習答案 清華大學出版社 C語言習題、實驗指導及課程設計_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第五章自測練習參考答案一、選擇題1.B或C 2.D 3.B 4.D 5.D 6.C和D 7.C 8.C 9.C 10.D(實際都正確)11.C 12.B 13.D 14.A 15.B 16.B 17.C 18.D 19.B 20.D21. D 22.B 23.D 24.D 25.D 26.D 27.C 28.A 29.A 30.A 31.D二、填空題1i=1 xi-12. &ai i%4=0 putchar(n);或printf(“n”);3. k=0; k=i j=0; j=i i=ak;ak=aj;aj=i; 4. 1 3 4 55. 求數組中正數的和并輸出6The number

2、is :5,The average is:5.000000 7. 常量表達式 常量表達式8按行存放,即先存第一行,再存第二行,以此類推90 6100113012j=2 j>=013. 1 6 7 11 12 13 16 17 18 19 21 22 23 24 2514. j<=2 bji=aij15. 5816在第一條scanf語句后增加j=n; % / 將第三個printf語句中的輸出項n換成j j=i; j>0; j17. 8 18. 60019. 在第三個for語句前增加s=0; k=0 aik*bkj printf(“n”);20. str0 并在第一個strcpy

3、語句后增加一行: if(strcmp(str1,s)<0) strcpy(s,str1); 最后的空為: s 三、編程題1參考程序如下:#include "stdio.h"#define N 10void main() int i,priceN; int max,min; float ave,sum; for(i=0;i<N;i+) scanf("%d",&pricei); max=min=price0; sum=ave=0; for(i=0;i<N;i+) sum+=pricei; if(pricei>max) max=

4、pricei; if(pricei<min) min=pricei; ave=(float)sum/N; printf("價格范圍為%d-%d;平均價格為%.2fn",min,max,ave); 2選擇排序的程序如下:#include "stdio.h"void main() int i,j,min,temp,a10; /*input*/ for(i=0;i<10;i+) scanf("%d",&ai); printf("n"); /* start to sort */ for(i=0;i<

5、;10-1;i+) min=i; for(j=i+1;j<10;j+) if(amin>aj) min=j; temp=ai; ai=amin; amin=temp; /*output*/ for(i=0;i<10;i+) printf("%5d",ai); 3冒泡排序的程序如下:#define N 10#include "stdio.h"void main() int i,j,m; int aN; for(i=0;i<N;i+) scanf("%d",&ai); for(i=1;i<N;i+)

6、for(j=0;j<N-i;j+) if(aj>aj+1) m=aj; aj=aj+1; aj+1=m; for(i=0;i<N;i+) printf("%5d",ai); printf("n"); 4。二分查找(或折半查找)程序如下:#include "stdio.h"#define n 10void main() int an,find; int x,i,top,bottom,mid; printf("input the sorted numbers:n"); for(i=0;i<n;i

7、+) scanf("%d",&ai); printf("input the number to find:n"); scanf("%d",&x); find=0;top=0;bottom=n-1; while(!find && top<=bottom) mid=(bottom+top+1)/2;if(x=amid) find=1; printf("x=%d position=%dn",x,mid);else if(x>amid) bottom=mid-1;elsetop=

8、mid+1; if(!find) printf("the number %d is not in the table",x); 5尋找指定的年齡并刪除,若無則提示程序如下:#include "stdio.h"void main() int i,n,j,flag=0; int a10; printf("請輸入10個年齡:n"); for(i=0;i<10;i+) scanf("%d",&ai); printf("再輸入一個要刪除的年齡:"); scanf("%d"

9、,&n); for(i=0;i<10;i+) if(ai=n) flag=1; break; if(flag) printf("有!n");for(j=i;j<10-flag;j+) aj=aj+1; else printf("無該年齡!n");for(i=0;i<10-flag;i+) printf("%5d",ai); printf("n");6插入排序的程序如下:#include "stdio.h"void main()int value,t1,t2,i,j;in

10、t a11=1,10,20,30,40,50,60,70,80,90;/在數組a中多設一個位置,以保存插入的數for(i=0;i<10;i+)printf("%5d",ai);putchar('n');scanf("%d",&value);if(value>a9)a10=value;elsefor(i=0;i<10;i+)if(ai>value)t1=ai;ai=value;for(j=i+1;j<11;j+)t2=aj;aj=t1;t1=t2;break;for(i=0;i<11;i+)pri

11、ntf("%5d",ai);putchar('n');7對稱方陣檢驗的程序如下:#define N 5#include "stdio.h"void main()int aNN,i,j;int flag=0; /標識為對稱方陣,若為1則不是printf("請輸入%dx%d個數據:n",N,N);for(i=0;i<N;i+)for(j=0;j<N;j+)scanf("%d",&aij);for(i=0;i<N;i+)for(j=0;j<N;j+)if(aij!=aji)

12、 flag=1;break;if(flag) break;if(!flag) printf("你輸入的對稱方陣如下:n");else printf("你輸入的非對稱方陣如下:n");for(i=0;i<N;i+)for(j=0;j<N;j+)printf("%5d",aij);printf("n");8鞍點檢驗程序如下:#include "stdio.h"#define N 10#define M 10void main()int aNM;int i,j,flag,max,col;f

13、or(i=0;i<N;i+)for(j=0;j<M;j+)scanf("%d",&aij);putchar('n');for(i=0;i<N;i+)max=ai0;col=0;for(j=1;j<M;j+)if(aij>max)max=aij;col=j;/尋找第i行上的最大值,它位于第col列flag=0;/假定存在鞍點for(j=0;j<N;j+)/注意此處的j是作為行下標if(max>ajcol)/不是該列上的最小值flag=1;break;if(!flag)printf("行=%d,列=%d

14、,值=%dn",i,col,max);9矩陣填充程序如下:#define N 5#include "stdio.h"void main()int aNN,i,j;for(i=0;i<N;i+)for(j=0;j<N;j+)if(i+j=N-1) aij=0;if(i+j<N-1) aij=1;if(i+j>N-1) aij=-1;for(i=0;i<N;i+)for(j=0;j<N;j+)printf("%5d",aij);printf("n");10小寫變大寫程序如下:#include

15、"stdio.h"void main()char str="Happy New Year!"int i=0;while(stri!='0')if(stri>='a' &&stri<='z')stri=stri-32;i+;printf("%sn",str);11答案檢查程序如下:#include "stdio.h"#include "string.h"void main() char pass_str80; /*定義字符

16、數組passstr*/ int i=0; /*檢驗答案*/ while(1) if(i=3) printf("你已三次輸入錯誤答案。正確答案應是:Dennis Ritchie.n程序結束!n"); break; /*輸入三次錯誤的答案,退出程序*/ else if(i>0) printf("再試一次:n");printf("請輸入C語言的發明人:n");gets(pass_str); /*輸入答案*/if(strcmp(pass_str,"Dennis Ritchie")!=0) /*答案錯*/printf(

17、"答案錯誤!");elseprintf("Good!n");printf("你已通過測試!n");break;/*輸入正確的答案,中止循環*/i+; /次數加1 12從一個字符串中刪除指定字符的程序如下:#include "stdio.h"#include "string.h"void main() char p80,ch; int i=0,j; gets(p); scanf("%c",&ch); while(pi!='0') if(pi=ch) for(j=i;j<=strlen(p);j+) pj

溫馨提示

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

評論

0/150

提交評論