




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
大學《C語言程序設計實驗》實驗題及答案解析實驗一熟悉TurboC的編程環境一:目的要求1.熟悉TurboC的編程環境;2.知道程序編輯、鏈接、執行的基本步驟;3.學習如何查錯并修改程序;4.上機前預習編寫好程序。二:實驗內容與步驟調試以下兩個程序/*ThefirstCProgram*/#include<stdio.h>voidmain(){printf(“Hello,World!\n”);}#include<stdio.h>voidmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(“sumis%d\n”,sum);}調試通過后,自己修改程序,使程序出錯,并讀懂錯誤提示,進行修改。
實驗二數據輸入輸出格式的程序設計一.目的要求1.進一步熟悉調試程序的方法;2.熟練掌握格式輸入與格式輸出函數的使用。3.掌握字符與ASCⅡ值之間的轉換方法。4.上機前預習編寫好程序;二.實驗內容與步驟1.按右圖設計屏幕輸出2.光標停在EnterNumber:之后,等待輸入任一字符;輸入字符1,則顯示:Ch=1--49ASCⅡ值字符4.再接回車鍵,則退出運行。三.利用字符屏幕控制函數conio.h1.clrscr();2.gotoxy(x,y)。行(1~25)列(1~80)四、利用接口庫函數dos.h的調用1.類型定義結構類型structdate.d;2.getdate(&d);3.printf(“%d/%d/%d”,d.da_year,d.da_mon,d.da_day)。五、程序提示:#include<conio.h>#include<dos.h>main(){charc1;structdated;clrscr();getdate(&d);···. ······getch();暫停等待輸入任意字符(或按鍵)}解答:#include<stdio.h>#include<conio.h>#include<dos.h>main(){charc1;structdated;clrscr();getdate(&d); printf("\t\t%d/%d/%d",d.da_year,d.da_mon,d.da_day); printf("\n*************\n"); printf("*Menu*\n"); printf("*1.Input*\n"); printf("*2.Output*\n"); printf("*3.End*\n"); printf("*************\n"); printf("EnterNumber=>\n"); printf("Ch=---------->");gotoxy(20,8);c1=getch();gotoxy(20,8);putchar(c1);gotoxy(9,9);putchar(c1);gotoxy(20,9);printf("%d",c1);}實驗三選擇結構程序設計一:目的要求1.熟悉用關系運行與邏輯運行符的應用;2.掌握if語句與switch語句的使用;3.上機前按實驗要求預習編寫出完整的程序,才允許上機。二:實驗內容與步驟在書店買書,以100本為限。如果買1本不打折扣;買2本打折10%;買3本折扣為15%,買3本以上折扣為20%。設書本數為x,單價為20.00元。請使用elseif多分支結構或if嵌套結構設計實現該算法的C程序。從鍵盤上輸入一個百分制成績score,按下列原則輸出其等級:score≥90,等級為A;80≤score<90,等級為B;70≤score<80,等級為C;60≤score<70,等級為D;score<60,等級為E。請使用switch語句實現上述功能。(提示:將成績整除10,把score轉變為處于1~10之間的整數,從而轉化成switch語句中的case標號)三:選做實驗實驗指導書56頁第二章選擇結構的任意實驗解答:一、#include<conio.h>#include<stdio.h>main(){intn;floatx,y;clrscr();printf("PleaseEnterTheNumber:");gotoxy(25,1);scanf("%d",&n);x=20.00;y=0; if(n<0) printf("Sorry,youputthewrongnumber!"); elseif(n==0) printf("Pleasebuyatleast1book!"); elseif(n==1){ y=x;printf("------Youshouldpay:%.2f",y*n);} elseif(n==2){ y=x*0.9;printf("------Youshouldpay:%.2f",y*n);} elseif(n==3){ y=x*0.85;printf("------Youshouldpay:%.2f",y*n);} elseif(n<=100){ y=x*0.8;printf("------Youshouldpay:%.2f",y*n);} elseif(n>100) printf("Sorry,youcanbuylessthen100books.");}二、#include<stdio.h>#include<conio.h>main(){intt;floatn;clrscr();printf("PleaseEnterTheScore:");gotoxy(24,1);scanf("%f",&n);t=n/10; if(n<0) printf("PleaseWriteTheRightScore!"); elseif(n>100) printf("IsHeAGod?"); else switch(t) { case10:printf("A+");break; case9:printf("A");break; case8:printf("B");break; case7:printf("C");break; case6:printf("D");break; default:printf("E");break; }}
實驗四循環控制一:目的要求1.熟悉用while語句,do-while語句和for語句實現循環的方法;2.掌握在程序設計中用循環方法實現各種算法;3.掌握計算程序運行所占機時的計算方法;4.上機前按實驗要求預習編寫出完整的程序,才允許上機。二:實驗內容與步驟目標:100匹馬馱100擔貨;假設:大馬一匹馱3擔,中馬一匹馱2擔,小馬兩匹馱一擔;組合方法1:大馬、中馬、小馬每種不能少于一匹;組合方法2:對馬匹種類無限制,可以缺少一種或缺二種問題: 1.采用組合方法1,用while求解,輸出所有組合法,輸出組合的總數?2.采用2種組合,用do-while求解,輸出所有組合法,輸出組合的總數?3.采用2種組合,用三重或二重for循環求解,輸出所有組合法,輸出組合的總數?4.除打印結果和多少種組合法外,還要分別打印三種算法所費機時。提示:計算一種算法所占機時的程序提示:#include<time.h>#include<conio.h>#include<dos.h>main(){clock_tstart,end;/*time_tstart,end;*/inti,big,middle,small,ncount;clrscr();start=clock();/*start=time();*/big=1;middle=1;small=2;ncount=0;printf("Thisawhileprogram\n");while(big<=33){.}end=clock();/*end=time();*/printf("Thenumofmethod1is:%d\n",ncount);printf("andthetimeis:%5.1ftime\n",difftime(end,start));/*printff(“”Thedifferenceis:%5.1fsecond\n”,difftime(end,start)/18.2);*/……}解答:一、#include<time.h>#include<conio.h>#include<dos.h>main(){clock_tstart,end;/*time_tstart,end;*/inti,big,middle,small,ncount,n;clrscr();start=clock();/*start=time();*/big=1;middle=1;small=2,i=0,n=0;ncount=0;printf("Thisawhileprogram\n");while(big<=33){for(small=2;small<=100;small=small+2) for(middle=1;middle<=100;middle++){n=big*3+middle*2+small/2;i=big+middle+small; if(n==100&&i==100) { printf("Big=%d,Middle=%d,Small=%d,n=%d,i=%d\n",big,middle,small,n,i); ncount++; }}big++;/*printf("n=%d",n);printf("big=%dsmall=%dmiddle=%d",big,small,middle);printf("\n");*/}end=clock();printf("Thenumofmethod1is:%d\n",ncount);printf("andthetimeis:%5.1ftime\n",difftime(end,start));}二、#include<time.h>#include<conio.h>#include<dos.h>main(){clock_tstart,end;/*time_tstart,end;*/inti,big,middle,small,ncount,n;clrscr();start=clock();/*start=time();*/big=0;middle=0;small=0,i=0,n=0;ncount=0;printf("Thisawhileprogram\n");do{for(small=0;small<=100;small=small+2) for(middle=0;middle<=100;middle++){n=big*3+middle*2+small/2;i=big+middle+small; if(n==100&&i==100) { printf("Big=%d,Middle=%d,Small=%d,n=%d,i=%d\n",big,middle,small,n,i); ncount++; }}big++;/*printf("n=%d",n);printf("big=%dsmall=%dmiddle=%d",big,small,middle);printf("\n");*/}while(big<=34);end=clock();printf("Thenumofmethod1is:%d\n",ncount);printf("andthetimeis:%5.1ftime\n",difftime(end,start));}三、#include<time.h>#include<conio.h>#include<dos.h>main(){clock_tstart,end;/*time_tstart,end;*/inti,big,middle,small,ncount,n;clrscr();start=clock();/*start=time();*/big=0;middle=0;small=0,i=0,n=0;ncount=0;printf("Thisawhileprogram\n");for(big=0;big<=34;big++){for(small=0;small<=100;small=small+2) for(middle=0;middle<=100;middle++){n=big*3+middle*2+small/2;i=big+middle+small; if(n==100&&i==100) { printf("Big=%d,Middle=%d,Small=%d,n=%d,i=%d\n",big,middle,small,n,i); ncount++; }}/*printf("n=%d",n);printf("big=%dsmall=%dmiddle=%d",big,small,middle);printf("\n");*/}end=clock();printf("Thenumofmethod1is:%d\n",ncount);printf("andthetimeis:%5.1ftime\n",difftime(end,start));}
實驗五函數目的要求掌握函數的定義和調用方法;掌握函數實參與行參的對應關系的,以及“值傳遞”的方式;掌握求最大公約數和最小公倍數的方法;按實驗內容要求完成全程程序設計后才允許上機。實驗內容與步驟設計一個函數f,求二個數的最大公約數intf(intx,inty);設計一個函數g,求二個數的最小公倍數intg(intx,inty);從鍵盤輸入三個浮點數,求三個數中最大數和最小數的差值。函數的定義要求在main()中實現下列操作a=inNumber();b=inNumber();c=f(a,b);d=g(a,b);輸出a,b,c,d。解答:一、#include<stdio.h>#include<math.h>voidmain(){inta,b,c,d; clrscr();a=inNumber();b=inNumber();c=f(a,b);d=g(a,b); printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);}intf(intx,inty){inti,t,a;floatp1,p2;if(x>=y) t=y;else t=x; for(i=1;i<=t;i++) { p1=x%i; p2=y%i; if(p1==0&&p2==0) { a=i; } }returna;}intg(intx,inty){inti,t,p1,p2,a;if(x>=y) t=x;else t=y; for(i=t;i<=(x*y);i++) { p1=i%x; p2=i%y; if(p1==0&&p2==0) { a=i;break; } }returna;}intinNumber(intx){inta;a=0;while(a==0){scanf("%d",&x);if(x>0)a=1;else{printf("Wrong!\n");a=0;}};returnx;}二、#include<stdio.h>voidmain(){floata[3],x,y;inti,j;clrscr();for(i=0;i<3;i++) scanf("%f",&a[i]); for(i=0;i<3;i++) for(j=0;j<2;j++) if(a[j]>a[j+1]) { x=a[j]; a[j]=a[j+1]; a[j+1]=x; }y=a[2]-a[0];printf("\ny=Max{a[i]}-Min{a[i]}:\n\t%.3f\n\t(%f)",y,y);}
實驗六數組目的要求掌握數組的定義、賦值和輸入輸出的方法;掌握清屏函數clrscr()的調用方法;掌握產生隨機數函數randomize()的初始化及調用方法;上機前按實驗要求預習,完成全部程序設計后才允許上機。實驗內容與步驟已知二維數組a[5][5],完成下列要求輸入數據a[i][j]=random(100);/*產生100以內隨機數*/顯示數組各元素,要求整齊排列;將第1與第5行對調后,再顯示之;求出每行元素的最大值,并指出其行號和列號。輸入隨機數的要求#include<stdlib.h>#defineRMAX5#definecMAX5#definenMAX100main(){./*變量初始化說明*/.clrscr();/*調清屏函數清屏*/randomize();/*在初始化后調用產生隨機數函數*/..a[i][j]=random(nMAX);...}解答:#include<stdlib.h>#defineRMAX5#definecMAX5#definenMAX100main(){inta[5][5],i,j,temp[1][5],t,max,x,y;/*定義變量為整型(我的程序里面有些定義的變量沒用,懶得刪除了)*/clrscr();/*清屏*/randomize();/*在初始化后調用產生隨機數函數*/for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=random(nMAX);/*給數組a[i][j]賦隨機值*/for(i=0;i<5;i++){ for(j=0;j<5;j++) printf("%d\t",a[i][j]);/*輸出數組a[i][j]*/ printf("\n");/*在輸出完一行后自動換行(不理解的話可以暫時刪掉這句話,然后運行程序看結果)*/} for(j=0;j<5;j++)/*這個循環是用于換行的*/ { temp[0][j]=a[0][j];/*將數組a的第一行的每個值都賦予temp(這里的temp是一個1*5的數組)*/ a[0][j]=a[4][j];/*將數組a的第一行的每個值替換成第五行的值*/ a[4][j]=temp[0][j];/*將數組a的第五行的每個值替換成temp的值*/ } printf("\n");/*輸出一個回車*/for(i=0;i<5;i++){ for(j=0;j<5;j++) printf("%d\t",a[i][j]);/*將換行后的新數組a輸出出來*/ printf("\n");/*在輸出完每一行后自動換行*/}for(i=0;i<5;i++){max=a[i][0];/*定義一個最大值變量max,令其暫時等于第i行的第一個數*/ for(j=0;j<5;j++)/*讓max和該行的所以數比較,如果有某個數大于max,max變為該數的值*/ if(a[i][j]>max) { max=a[i][j]; } for(j=0;j<5;j++)/*令max和第i行的每個數進行比較,輸出所有等于max的數及該數的坐標*/ if(max==a[i][j])printf("\na[%d][%d]=%d",i,j,max);}}
實驗七指針目的要求掌握指針的定義和使用指針變量;學會使用字符串的指針和指向數組的指針變量;學會使用指向函數的指針變量;按實驗內容要求完成全程程序設計后才允許上機。實驗內容與步驟設計一個函數,它有三個形參被查找的字符串str;待查找的字符xCh;在字符串str中xCh出現的位置i=0,1,…它的返回值是在str中xCh出現的次數(若str中無xCh,則返回值=0)上機要求鍵入待查的字符xCh;鍵入被查的字符串str;調用該函數;打印它的返回值和出現的位置;允許重復執行,每次以清屏開始(用循環語句控制重復執行)。提示xCh在str出現位置應設計為一整型指針,以便記下0~N個位置(整數)。#include<stdio.h>voidmain(){chartemp;intrun(),j;int(*prun)();temp='Y'; while(temp!='N'||temp!='n') { if(temp=='Y'||temp=='y') { prun=run; j=(*prun)(); if(j==0) { printf("CanNotFindThexCh!j=%d",j); } else { printf("\nj=%d",j); } printf("\nParden>Y/N:"); fflush(stdin); temp=getch(); } if(temp=='N'||temp=='n') break; if(temp!='Y'&&temp!='y') { printf("Wrong!YoucanonlyputY(N)ory(n)\nPleaseputagain(Y/N):"); fflush(stdin); temp=getch(); } }}intrun(charxCh,charstr[100],inti){intj;char*p;clrscr(); printf("xCh="); xCh=getch(); printf("%c\nstr=",xCh); gets(str); p=&str[0]; i=0; j=0; while(*p) { if(*p==xCh) { j++; printf("xCh:%d\t",i); } p=p+1; i++; } returnj;}Mian()版:#include<stdio.h>voidmain(){inti,j;charxCh,str[100],*p,temp;temp='Y';/*給temp賦初值Y,防止第一個while循環無法運行*/ while(temp!='N'||temp!='n')/*如果temp不等于n或N時,進行循環*/ { if(temp=='Y'||temp=='y')/*當temp為y或Y時,進行下列循環,用于進行題目要求的操作*/ { clrscr();/*清屏*/ printf("xCh=");/*在屏幕輸出提示xCh=*/ xCh=getch();/*從屏幕讀取一個字符賦給xCh(getch()和getchar()的區別:前者只要輸入一個字符就結束輸入過程,后者需要按回車或空格后才結束輸入過程)*/ printf("%c\nstr=",xCh);/*在屏幕xCh=后面輸出剛才輸入的xCh的值,并提示用戶輸入str(因為我們用getch(),輸入完字符后會自動結束xCh的輸入進入下一指令的執行(在本題中,下一指令是:printf("%c\nstr=",xCh);),而不在屏幕輸出剛才輸入的字符)【不理解的話把該句改成{printf("\nstr=");}看看輸出結果就知道了】*/ gets(str);/*輸入str*/ p=&str[0];/*將指針地址指向str這個字符串的首字符位置*/ i=0; j=0; while(*p)/*當p所指向的字符不為空字符時,進行判斷循環*/ { if(*p==xCh)/*當p所指向的字符為所需尋找的xCh時,進行以下操作*/ { i++;/*i自加1,用于累計str中xCh的數目*/ printf("xCh:%d\t",j);/*輸出xCh在str中出現的位置*/ } p=p+1;/*指針地址移向str的下個字符*/ j++;/*j用于記錄此時p的位置,在str中第一個字符時=0,第二個時=1,以此類推*/ } if(i==0)/*當str中沒有xCh這個字符時,i=0*/ { printf("CanNotFindThexCh!i=%d",i);/*在屏幕中提示無法找到str中的xCh,并輸出i=0*/ } else { printf("\ni=%d",i);/*\n為換行*/ } printf("\nParden>Y/N:");fflush(stdin);/*清空計算機緩存*/ temp=getch();/*從屏幕中讀取一個字符賦給temp*/ } if(temp=='N'||temp=='n')/*當temp為N或n時*/ break;/*跳出循環*/ if(temp!='Y'&&temp!='y')/*當輸入的temp不為Y、y、N、n時*/ { printf("Wrong!YoucanonlyputY(N)ory(n)\nPleaseputagain(Y/N):");fflush(stdin); temp=getch(); } }}/*fflush(stdin)*/實驗八結構體與共用體目的要求掌握結構體類型變量與數組的定義和使用;學會使用指針變量和結構體指針數組;按實驗內容要求完成全程程序設計后才允許上機。實驗內容與步驟設計一個結構structstudent{longno; /*學號*/charname[10]; /*姓名*/charsex; /*性別*/intage; /*年齡*/floatscore; /*平均成績*/}完成下列任務:輸入實際學生人數n(2<n<4);輸入每個學生的信息,組成結構數組,并輸出;統計男、女生人數并輸出;計算全班平均成績并輸出;將低于全班平均成績的學生信息按行輸出上機要求可劃分為若干個函數,或寫成一個main();要求輸出格式有提示及相應數據。#include<stdio.h>structstudent { longno; /*學號*/ charname[10]; /*姓名*/ charsex; /*性別(gender)*/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 IEC 61643-41:2025 EN-FR Low-voltage surge protective devices - Part 41: Surge protective devices connected to DC low-voltage power systems – Requirements and test methods
- 【正版授權】 ISO/IEC 14496-34:2025 EN Information technology - Coding of audio-visual objects - Part 34: Syntactic description language
- 住宅小區租賃保證金繳納及使用規定合同
- 彩票店節假日促銷活動合同
- 車輛抵押貸款合同規范
- 人才租賃合同:企業高級管理人員租賃合同
- 生態農業財務代理記賬與農產品溯源合同
- 車輛無償租賃給影視制作公司合同
- 工程用鏟車采購協議范本
- 海鮮餐廳入駐海邊酒店食堂的海鮮餐飲租賃合同模板
- 病害與殺菌劑基礎知識
- 體育與健康PPT(中職)全套完整教學課件
- 鐵道車輛制動裝置檢修PPT(高職)完整全套教學課件
- 2022-2023學年樂山市市中區四年級數學第二學期期末教學質量檢測試題含解析
- 法律盡職調查清單(Reits)
- 岳麓山風景名勝區總體規劃成果說明書
- 2023北京西城初二二模生物(試題含答案)
- 肉毒素培訓的學習資料
- 大學期末復習-中獸醫學期末考試重點
- 勞動創造幸福 主題班會課件
- GB/T 18920-2002城市污水再生利用城市雜用水水質
評論
0/150
提交評論