實(shí)驗(yàn)三綜合程序設(shè)計(jì)_第1頁
實(shí)驗(yàn)三綜合程序設(shè)計(jì)_第2頁
實(shí)驗(yàn)三綜合程序設(shè)計(jì)_第3頁
實(shí)驗(yàn)三綜合程序設(shè)計(jì)_第4頁
實(shí)驗(yàn)三綜合程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、上海建橋?qū)W院程序設(shè)計(jì)基礎(chǔ)C語言(本科)實(shí)驗(yàn)報(bào)告模塊名稱:第一模塊 簡單C程序設(shè)計(jì)實(shí)驗(yàn)類型:綜合型 實(shí)驗(yàn)環(huán)境:( 415 )機(jī)房 VC+6.0院別:機(jī)電學(xué)院專業(yè):電科B131學(xué)號(hào):1121486學(xué)生姓名:周鵬飛指導(dǎo)老師: 成長生 學(xué)期:2015年-2016第一學(xué)期實(shí)驗(yàn)三 綜合程序設(shè)計(jì) (1) 理解輸出參數(shù)的概念和運(yùn)用場(chǎng)合(2) 理解指針的概念(3) 掌握使用指針變量向主調(diào)函數(shù)傳值的方法(4) 掌握數(shù)據(jù)文件的循環(huán)讀取結(jié)構(gòu)(5) 掌握fprint fsanf等文件操作語句的使用任務(wù)一 改錯(cuò) 兩數(shù)交換打開程序文件error02_04.cpp改正程序中的錯(cuò)誤。Swap函數(shù)的功能是交換兩個(gè)數(shù)的值,在mai

2、n函數(shù)中指定兩個(gè)數(shù)的大小,調(diào)用swap函數(shù)交換兩個(gè)數(shù)的值輸出。正確的程序輸出:a=20,b=10#include<stdio.h>void swap(int *pa,int *pb);int main()int a=10,b=20;swap(a,b);printf("a=%d,b=%dn",a,b);return 0;void swap(int *pa,int *pb)int t; t=pa,pa=pb,pb=t;#include<stdio.h>void swap(int *pa,int *pb);int main()int a=10,b=20;s

3、wap(&a,&b);printf("a=%d,b=%dn",a,b);return 0;void swap(int *pa,int *pb)int t; t=*pa;*pa=*pb;*pb=t;任務(wù)二 3個(gè)數(shù)排序利用指針實(shí)現(xiàn)輸入a,b,c共3個(gè)整數(shù),按大小順序輸出。要求:編寫exchange函數(shù),功能是交換兩個(gè)數(shù)的值。在main函數(shù)中輸入3個(gè)數(shù),調(diào)用exchange函數(shù)實(shí)現(xiàn)3個(gè)數(shù)按大小順序輸出。源程序清單:#include <stdio.h>void exchange(int *pa, int *pb);void main()int a, b,

4、 c;printf("input a b c:");scanf("%d %d %d",&a,&b,&c);if(c>b)exchange(&c,&b);if(b>a)exchange(&b,&a);if(c>b)exchange(&c,&b);printf("%d %d %dn",a,b,c);void exchange(int *pa, int *pb)int temp;temp=*pa; *pa=*pb; *pb=temp;測(cè)試用例:任務(wù)三

5、日期換算 ex02_11.cpp打開程序文件ex02_11.cpp#include <stdio.h>int isLeap(int year);void getDate(int y,int days,int*pm,int *pd);int getDays(int y,int m,int d);int main (void) return 0;/編寫子函數(shù)求某天是該年的幾月幾日 void getDate(int y,int days,int*pm,int *pd)/*y為年份,days為該年的某天,pm指向主調(diào)函數(shù)中存放某天的月值變量, */* pd指向主調(diào)函數(shù)中存放某天的日值變量*

6、/int m,d,i; int day; m= ; /* m:某天計(jì)算后的月值 */ d= ; /* d:某天計(jì)算后的日值 */ *pm= ; *pd= ;/編寫子函數(shù)求某年某月某日是該年的第幾天int getDays(int y,int m,int d) /編寫子函數(shù)判斷閏年。int isLeap(int year) 1要求:(1)編寫子函數(shù)判斷閏年:int isLeap(int year)(2)編寫子函數(shù)求某天是該年的幾月幾日:(3)編寫子函數(shù)求某年某月某日是該年的第幾天(4)main函數(shù)中設(shè)計(jì)步驟驗(yàn)證函數(shù)的正確性2提示(1)求某年某月某日是該年的第幾天思路:累計(jì)從1月到該日期的前一月的每

7、月天數(shù)再加上該日期的天數(shù)。2月份的天數(shù)要判斷閏年。累計(jì)可使用循環(huán)完成也可利用switch語句無break的特性完成。(2)求某天是該年的幾月幾日思路:循環(huán)i從1月開始如果天數(shù)days比第i月的天數(shù)大則天數(shù)days減去第i月的天數(shù)否則結(jié)束循環(huán)。i即為所求月份,days的值為所求日數(shù)。每月的天數(shù)仍需區(qū)分處理。3源程序清單:#include <stdio.h>int isLeap(int year);void getDate(int y,int days,int *pm,int *pd);int getDays(int y,int m,int d);void main () int y,

8、m,d,days; int *pm,*pd;printf("輸入年份和天數(shù):"); scanf("%d%d",&y,&d); getDate(y,d, &m, &d); printf("這天是%d年的%d月%d日n",y,m,d);printf("輸入年月日:"); scanf("%d%d%d",&y,&m,&d); days=getDays(y,m,d);printf("這天是%d年的第%d天n",y,days);/編

9、寫子函數(shù)求某天是該年的幾月幾日 void getDate(int y,int days,int *pm,int *pd)/*y為年份,days為該年的某天,pm指向主調(diào)函數(shù)中存放某天的月值變量, */* pd指向主調(diào)函數(shù)中存放某天的日值變量*/int m,d,i; int day; for(i=1;i<=12;i+) switch(i) case 1: case 3: case 5: case 7: case 8: case 10: case 12:day=31;break; case 2:day=isLeap(y)?29:28;break; case 4: case 6: case 9

10、: case 11:day=30;break; if(days<=day) break; else days=days-day; m= i; /* m:某天計(jì)算后的月值 */ d= days; /* d:某天計(jì)算后的日值 */ *pm= m ; *pd= d ;/編寫子函數(shù)求某年某月某日是該年的第幾天int getDays(int y,int m,int d) int days=0;switch(m-1) case 12:days+=31; case 11:days+=30; case 10:days+=31; case 9:days+=30; case 8:days+=31; case

11、 7:days+=31; case 6:days+=30; case 5:days+=31; case 4:days+=30; case 3:days+=31; case 2:days+=isLeap(y)?29:28; case 1:days+=31; days=days+d;return days;/編寫子函數(shù)判斷閏年。int isLeap(int year) return ( year%4=0&&year%100!=0 | year%400=0 );4測(cè)試用例設(shè)計(jì)任務(wù)四 電費(fèi)計(jì)算 ex02_14.cpp問題描述電力公司根據(jù)如下稅率表進(jìn)行收費(fèi),:第1個(gè)300千瓦時(shí)以每千瓦時(shí)

12、9美分計(jì),下一個(gè) 300千瓦時(shí)(到600千瓦時(shí))以每千瓦時(shí)8美分計(jì),再下一個(gè) 400千瓦時(shí)(到1000千瓦時(shí))以每千瓦時(shí)6美分計(jì),超過1000千瓦時(shí)的電量以每千瓦時(shí)3美分計(jì)。(1) 編寫一個(gè)函數(shù),計(jì)算每個(gè)客戶的總用電費(fèi)用。(2) 寫一個(gè)主函數(shù),讀取數(shù)據(jù)文件用電量.txt中的數(shù)據(jù),調(diào)用計(jì)費(fèi)函數(shù)計(jì)算每一個(gè)客戶的總用電費(fèi)用。將結(jié)果輸出到另一個(gè)數(shù)據(jù)文件用電費(fèi)用.txt。 源數(shù)據(jù)文件由客戶編號(hào)和用電量兩列構(gòu)成,生成的新數(shù)據(jù)文件列出三列:客戶編號(hào)、用電量和總用電費(fèi)用。(3) 程序還要計(jì)算并輸出客戶數(shù)量、總耗電千瓦時(shí)和總的電費(fèi)。源程序清單:#include <stdio.h>int getmon

13、ey(int w);int main () int m,w; FILE *fin; FILE *fout; if(fin=fopen("用電量.txt","r")=NULL) printf("can not open file !"); return -1; if( (fout=fopen("用電費(fèi)用.txt","w")=NULL ) printf("can not open file 用電費(fèi)用.txt!"); return -1; while(!feof(fin) fsca

14、nf(fin,"%d",&w); m=getmoney(w); fprintf(fout,"電費(fèi)=%d",m); fclose(fin); fclose(fout); return 0;int getmoney(int w)int money;if(w<=300)money=9*w;elseif(w<=600)money=300*9+8*(w-300);elseif (w<=1000)money=300*9+300*8+6*(w-600);elsemoney=300*9+300*8+400*6+3*(w-1000);return money;測(cè)試用例:實(shí)驗(yàn)體會(huì)實(shí)驗(yàn)過程評(píng)價(jià):碰到什么問題?如何解決?1.第二次做指針的實(shí)驗(yàn),明顯比第一次熟練了,不過細(xì)節(jié)上的小錯(cuò)誤還是很多。2.三個(gè)數(shù)比大小調(diào)試用例的時(shí)候,發(fā)現(xiàn)最小的數(shù)總在中間不會(huì)跑到最后面去,然后發(fā)現(xiàn)要一共比較三次大小才行,交換后的第一第二個(gè)數(shù)需要重新再比較一次大小才能保證三個(gè)數(shù)一定是降序排列。在編寫天數(shù)中,雖然不報(bào)錯(cuò)但是發(fā)現(xiàn)結(jié)果也不對(duì),

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論