實驗三綜合程序設計_第1頁
實驗三綜合程序設計_第2頁
實驗三綜合程序設計_第3頁
實驗三綜合程序設計_第4頁
實驗三綜合程序設計_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

2、n函數中指定兩個數的大小,調用swap函數交換兩個數的值輸出。正確的程序輸出: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;任務二 3個數排序利用指針實現輸入a,b,c共3個整數,按大小順序輸出。要求:編寫exchange函數,功能是交換兩個數的值。在main函數中輸入3個數,調用exchange函數實現3個數按大小順序輸出。源程序清單:#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;測試用例:任務三

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;/編寫子函數求某天是該年的幾月幾日 void getDate(int y,int days,int*pm,int *pd)/*y為年份,days為該年的某天,pm指向主調函數中存放某天的月值變量, */* pd指向主調函數中存放某天的日值變量*

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

7、月天數再加上該日期的天數。2月份的天數要判斷閏年。累計可使用循環完成也可利用switch語句無break的特性完成。(2)求某天是該年的幾月幾日思路:循環i從1月開始如果天數days比第i月的天數大則天數days減去第i月的天數否則結束循環。i即為所求月份,days的值為所求日數。每月的天數仍需區分處理。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("輸入年份和天數:"); 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、寫子函數求某天是該年的幾月幾日 void getDate(int y,int days,int *pm,int *pd)/*y為年份,days為該年的某天,pm指向主調函數中存放某天的月值變量, */* pd指向主調函數中存放某天的日值變量*/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:某天計算后的月值 */ d= days; /* d:某天計算后的日值 */ *pm= m ; *pd= d ;/編寫子函數求某年某月某日是該年的第幾天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;/編寫子函數判斷閏年。int isLeap(int year) return ( year%4=0&&year%100!=0 | year%400=0 );4測試用例設計任務四 電費計算 ex02_14.cpp問題描述電力公司根據如下稅率表進行收費,:第1個300千瓦時以每千瓦時

12、9美分計,下一個 300千瓦時(到600千瓦時)以每千瓦時8美分計,再下一個 400千瓦時(到1000千瓦時)以每千瓦時6美分計,超過1000千瓦時的電量以每千瓦時3美分計。(1) 編寫一個函數,計算每個客戶的總用電費用。(2) 寫一個主函數,讀取數據文件用電量.txt中的數據,調用計費函數計算每一個客戶的總用電費用。將結果輸出到另一個數據文件用電費用.txt。 源數據文件由客戶編號和用電量兩列構成,生成的新數據文件列出三列:客戶編號、用電量和總用電費用。(3) 程序還要計算并輸出客戶數量、總耗電千瓦時和總的電費。源程序清單:#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("用電費用.txt","w")=NULL ) printf("can not open file 用電費用.txt!"); return -1; while(!feof(fin) fsca

14、nf(fin,"%d",&w); m=getmoney(w); fprintf(fout,"電費=%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;測試用例:實驗體會實驗過程評價:碰到什么問題?如何解決?1.第二次做指針的實驗,明顯比第一次熟練了,不過細節上的小錯誤還是很多。2.三個數比大小調試用例的時候,發現最小的數總在中間不會跑到最后面去,然后發現要一共比較三次大小才行,交換后的第一第二個數需要重新再比較一次大小才能保證三個數一定是降序排列。在編寫天數中,雖然不報錯但是發現結果也不對,

溫馨提示

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

評論

0/150

提交評論