《C語言程序設計項目式教程》04 計算個人所得稅寫字字帖_第1頁
《C語言程序設計項目式教程》04 計算個人所得稅寫字字帖_第2頁
《C語言程序設計項目式教程》04 計算個人所得稅寫字字帖_第3頁
《C語言程序設計項目式教程》04 計算個人所得稅寫字字帖_第4頁
《C語言程序設計項目式教程》04 計算個人所得稅寫字字帖_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章第四章目計算個人所得稅項四學習目標了解浮點型相關知識掌握結構體的含義掌握結構體數組的定義和使用掌握引入文件的意義具有文件基本操作的能力學習路徑任務一計算個人所得稅后輸出浮點型(1)浮點型概念浮點型用于描述現實生活中的實數,例如1.2、123.45等,基本類型為float??梢愿鶕≈档姆秶蛿祿鹊牟煌ǔG闆r下,將浮點數分為單精度(float)和雙精度(double)。浮點型(2)浮點型常量浮點型也稱為實型。浮點型常量也稱為實數或者浮點數。在C語言中,實數只采用十進制。它有二種形式:十進制小數形式和指數形式。1)十進制數形式:由數碼0~9和小數點組成。2)指數形式:由十進制數,加階碼標志“e”或“E”以及階碼(只能為整數,可以帶符號)組成。其一般格式為:aEn(a為十進制數,n為十進制整數,表示階碼),其值為a×10n。1.0、15.8、5.678、-0.13、500.、-267.8230等均為合法的實數。3.2E5(等于3.2×105),4.7E-2(等于4.7×10-2),0.6E7(等于0.6×107浮點型(3)浮點型變量

C語言中浮點型變量指的就是實數變量(存放可以帶小數的數據的變量),分為兩類:float(單精度型)和double(雙精度型)。

floatd;/*聲明浮點型變量d*/doublereal;/*聲明雙精度型變量real*/格式輸出函數printf()

(1)其中類型符號用以表示輸出數據的類型

C語言中浮點型變量指的就是實數變量(存放可以帶小數的數據的變量),分為兩類:float(單精度型)和double(雙精度型)。

格式輸出函數printf()(2)精度:精度格式符以“.”開頭,后跟十進制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字符,則表示輸出字符的個數;若實際位數大于所定義的精度數,則截去超過的部分。表達式中的類型轉換(1)自動轉換在某種范圍內整型數據可以和字符型數據通用,而整型是浮點型的一種特殊形式。因此,整型、浮點型和字符型數據之間可混合運算。例如:3.45+10+'a'-2.5*'c',是合法的。在混合運算時,編譯系統(tǒng)先將不同數據類型數據自動轉換成同一類型,再進行運算。表達式中的類型轉換自動轉換遵循以下規(guī)則:①若參與運算量的類型不同,則先轉換成同一類型,然后進行運算。②轉換按數據長度增加的方向進行,以保證精度不降低。③所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算。④char型和short型參與運算時,必須先轉換成int型。⑤在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。表達式中的類型轉換(2)強制類型轉換除了自動類型轉換之外,程序設計人員還可以根據運算的要求,在程序中強行將數據的類型進行轉換,稱為強制類型轉換。強制類型轉換是通過類型轉換運算來實現的,其一般格式如下:(類型說明符)(表達式)表達式中的類型轉換格式說明①強制類型轉換符的功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。②類型說明符和表達式都必須加括號(單個變量可以不加括號)。③無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變量的數據長度進行的臨時性轉換,而不改變數據說明時對該變量定義的類型if-else嵌套結構在程序設計中,經常使用級聯(lián)的if-else-if實現多路分支結構一般格式:if(表達式1)

語句1;elseif(表達式2)語句2;elseif(表達式3)語句3;

…elseif(表達式m)語句m;Else

語句m+1if-else嵌套結構在程序設計中,經常使用級聯(lián)的if-else-if實現多路分支結構一般格式:條件語句使用小結一個表達式的返回值都可以用來判斷真假,除非沒有任何返回值的void型和返回無法判斷真假的結構。當表達式的值不等于0時,它就是“真”,否則就是假。一個表達式可以包含其他表達式和運算符,并且基于整個表達式的運算結果可以得到一個真或假的條件值。因此,當一個表達式在程序中被用于檢驗其真或假的值時,就稱為一個條件。條件語句使用小結(1)if語句

if(表達式)語句1;如果表達式的值為非0,則執(zhí)行語句1,否則跳過語句繼續(xù)執(zhí)行下面的語句。如果語句1有多于一條語句要執(zhí)行時,必須使用{和}把這些語句包括在其中,此時條件語句形式為:if(表達式){語句1;}條件語句使用小結(2)if-else語句

除了可以指定在條件為真時執(zhí)行某些語句外,還可以在條件為假時執(zhí)行另外一段代碼。在C語句中利用else語句來達到這個目的。if—else語句格式為:if(表達式)語句1;else語句2條件語句使用小結(3)if-else嵌套

條件語句可以嵌套,這種情況經常碰到,但條件嵌套語句容易出錯,其原因主要是不知道哪個if對應哪個else。其語句格式為:if(表達式1)語句1;

elseif(表達式2)語句2;

elseif(表達式3)

語句3;

……else語句n條件語句使用小結(4)switch-case語句執(zhí)行switch開關語句時,將變量逐個與case后的常量進行比較,若與其中一個相等,則執(zhí)行該常量下的語句,若不與任何一個常量相等,則執(zhí)行default后面的語句。其語句格式為:

switch(變量){case常量1:語句1或空;break;case常量2:語句2或空;break;……case常量n:語句n或空;break;

default:語句n+1或空;

}任務二將稅率表存放在結構體數組中,然后再計算個人所得稅并輸出結構體的意義首先考慮解決下面一個問題,輸入一個學生的學號、姓名、性別、班級以及他的數學、外語和語文的三科課程成績,求出他的總分和平均分。問題分析:通過該項目的問題描述,可知通過順序結構就可以編寫出這個項目的解決程序,用四個字符數組變量分別表示學號、姓名、性別、班級;用三個浮點類型變量表示學生的三科成績,然后通過計算求出總分和平均分并輸出即可。結構體類型的定義

C語言提供了一個重要的構造數據類型——結構體類型,來解決復雜事物表示問題,它將多個數據項集合到一個數據類型中,每個數據項目被稱為數據成員,它們可以是不同的數據類型,既可以是基本數據類型,也可以是另一種構造數據類型。結構體數據類型的一般定義如下:struct

結構體名

{數據類型1成員名1;數據類型2成員名2;數據類型3成員名3;…………數據類型n成員名n;

};結構體類型變量的定義上面聲明了一個結構體類型,它相當于一個模型,其中并無具體數據,只有定義了具有結構體類型的變量之后,才能在其中存放具體的數據。在C語言中,可以使用三種方式定義結構體類型的變量:(1)直接聲明結構體類型變量

這種方式要求在struct后不使用結構體名,例如:struct{……}st1,st[2];結構體類型變量的定義(2)先定義結構體類型,再單獨聲明結構體類型變量這種方式要求先定義結構體類型,再由一條單獨的語句聲明變量,例如:structstudent{……};structstudentst1,st[2];結構體類型變量的定義(3)定義類型的同時聲明變量這種方式將類型的定義和變量的聲明放在一起,例如:structstudent{……}st1,st[2];關鍵字typedef

的用法

在結構體類型變量的第二種聲明方式中,要用關鍵字struct和結構體名共同來聲明變量,尤其當結構體名稱較長時,記憶起來不方便,C語言提供了關鍵字typedef來簡化類型定義,提高程序的可讀性。C語言允許用typedef來說明一種新類型名,其一般格式如下:

typedef

原類型名新類型名結構體變量的引用和初始化(1)結構體變量的引用聲明完一個結構體類型的變量之后,就可以在程序中使用它了。但是,要注意的是:不能將一個結構體變量作為一個整體來直接使用,只能通過引用變量中的成員來實現對結構體變量的使用。引用結構體變量中成員的格式為:

結構體變量名.成員名結構體數組的聲明結構體類型是將多個不同基類型的數據組合在一起表示特定的學生,當需要對一個班級的30名學生數據進行處理的時候,顯然就要用到數組了,這就是結構體數組。結構體數組的每個元素都是具有相同結構類型的下標結構體變量。在實際應用中,經常用結構體數組來表示具有相同數據結構的一類數據。結構體數組的聲明(1)先定義結構體類型,再聲明結構體數組這種方式先定義一個結構體類型,然后用該類型名聲明數組,這是一種間接定義方式。structstudent{charsno[8];charsname[10];charsex[2];charcname[30];};structstudentst[3];結構體數組的聲明(2)在聲明結構體類型的同時聲明結構體數組,這是一種直接聲明方式。

structstudent{charsno[8];charsname[10];charsex[2];charcname[30];}st[30];結構體數組的初始化和其他類型數組一樣,對結構體數組可以進行初始化,其一般格式如下:

struct

結構體類型名{成員定義列表;}結構體數組名={{…},{…},…};structstudent{charsno[8];charsname[10];charsex[2];charcname[30];}st[2]={{"20070101","Zhangsan","1","classone"},{"20070201","Lisi","1","classtwo"}}結構體數組的應用實例例如求出3個學生中最高分數的學生姓名和成績信息。設學生信息只有姓名信息和成績信息兩個成員,學生姓名在數組定義時初始化,輸入學生的成績,要求最后輸出分數最高的學生姓名和成績。數組名作為函數參數

C語言規(guī)定,一個數組名代表數組的內存首地址,即數組的第一個元素的地址,它實際上是一個地址值。要向函數傳遞整個數組時,給出數組名和數組大小就可以了。數組名作函數參數時應注意:(1)應該在調用函數和被調用函數中分別聲明數組,且數據類型必須一致,否則結果將出錯。(2)形參數組可以不指定大小,但需另設一個參數傳遞數組的個數。因為C編譯對形參數組大小不做檢查,只將實參數組首地址傳遞給形參數組。(3)傳遞數組名時,實參數組的內容并沒有復制到形參數組中,而是把數組的首地址傳遞給被調函數。這樣被調函數中的數組就指向內存中相同的數組。任務三計算個人所得稅,長期存放稅率表,并顯示文件概述及基本操作(1)文件的概念

計算機作為一種先進的數據處理工具,它所面對的數據信息量十分龐大。僅依賴于鍵盤輸入和顯示輸出等方式是完全不夠的,通常,解決的辦法就是將這些數據記錄在某些介質上,利用這些存儲介質的特性,攜帶數據或長久地保存數據。這種記錄在外部存儲介質上的數據的集合稱為“文件”。文件概述及基本操作(2)文件的分類C語言中數據文件保存在外部存儲介質上有兩種形式:ASCII碼文件和二進制文件。ASCII碼文件ASCII碼文件也稱為文本文件,由一個個字符首尾相接而成,其中每個字符占1字節(jié),存放的是字符的ASCII碼。二進制文件二進制文件用二進制數代表數據,其中的數據是按其在內存中的存儲形式存放的。當數據以二進制形式輸出到文件中時,數據不經過任何轉換。文件概述及基本操作(3)文件的存取方式

順序存取無論對文件進行讀或寫操作,總是從文件的開頭開始,依先后次序存取文件中的數據。存取完第一字節(jié),才能存取第二字節(jié);存取完第n-1字節(jié),才能存取第n字節(jié)。

隨機存取也稱直接存取,可以直接存取文件中指定的數據??梢灾苯哟嫒≈付ǖ牡趇個字節(jié)(或字符),而不管第i-1字節(jié)是否已經存取。在C語言中,可以通過調用庫函數去指定開始讀寫的字節(jié)號,然后直接對此位置上的數據進行讀寫操作。文件概述及基本操作(4)文件指針對于緩沖區(qū)文件系統(tǒng),一個關鍵的概念就是“文件指針”。文件指針就是一個描述文件狀態(tài)、文件緩沖區(qū)大小、緩沖區(qū)填充程度等信息的一個結構體變量。文件指針結構體類型是由系統(tǒng)定義的,取名為FILE,其詳細的類型聲明如下:

typedef

struct{shortlevel;/*緩沖區(qū)填充程度*/unsignedflags;/*文件狀態(tài)標志*/charfd;/*文件描述*/unsignedcharhold;/*如無緩沖區(qū)不讀取字符*/shortbsize;/*緩沖區(qū)大小*/unsignedchar*buffer;/*緩沖區(qū)傳輸數據*/unsignedchar*curp;/*指針當前位置*/unsignedistemp;/*臨時文件標識*/shorttoken;/*有效性檢查*/}FILE;文件概述及基本操作(5)文件操作的基本步驟1)打開文件用標準庫函數fopen()打開文件,它通知編譯系統(tǒng)三個信息:①需要打開的文件名,②使用文件的方式(讀還是寫等),③使用的文件指針。2)讀寫文件用文件輸入/輸出函數對文件進行讀寫,這些輸入輸出函數與前面介紹的標準輸入輸出函數在功能上有相似之處,但使用上又不盡相同。3)關閉文件文件讀寫完畢,用標準函數fclose()將文件關閉。它的功能是把數據真正寫入磁盤(否則數據可能還在緩沖區(qū)中),切斷文件指針與文件名之間的聯(lián)系,釋放文件指針。如不關閉則多半會丟失數據。文件概述及基本操作(6)文件的打開打開文件時操作文件的第一步驟,如果不能正確打開一個指定文件,讀寫文件就無從談起。C語言中提供了fopen()函數,用于打開一個文件,其格式如下:FILE*fp;fp=fopen("文件名","文件使用方式");文件概述及基本操作文件的使用方式共有12種,下表

給出了文本文件使用方式的符號和意義以及二進制文件使用方式的符號和意義。文件概述及基本操作(7)文件的關閉當文件的讀寫完成之后,必須將它關閉,否則容易發(fā)生數據不必要的丟失。關閉文件可調用庫函數fclose()來實現,其調用格式如下:fclose(文件指針);文件的讀寫操作(1)文件的字符讀寫操作字符讀寫操作是文本文件的常用操作。C語言提供了fgetc()函數和fputc()函數來實現對文件的字符讀寫功能。

1)fgetc()讀字符函數

fgetc()函數用來從指定的文件讀入一個字符,該文件必須是以讀或寫方式打開的。fgetc函數具體的調用格式如下:2)fputc()寫字符函數fputc函數用來將一個字符寫入指定的文件中,該函數的調用格式為:ch=fgetc(fp);fputc(ch,fp);文件的讀寫操作(2)文件的塊讀寫函數用fgetc()函數和fputc()函數可以用來讀寫文件中的一個字符,如果要讀寫一組數據就必須編寫一個循環(huán)語句段。使用C語言提供的fread()函數和fwrite()函數就可以實現讀取數據塊的功能,它的一般調用格式如下:fread(void*buffer,intsize,intcount,FILE*fp);fwrite(void*buffer,intsize,intcount,FILE*fp);文件的讀寫操作(3)文字的字符串讀寫函數1)fgets()函數fgets()函數的功能是從指定的文件中讀一個字符串到字符數組中,一般調用格式為:2)fputs()函數fputs()函數的功能是向指定的文件寫入一個字符串,其調用格式為:fgets(str,n,fp);fput

溫馨提示

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

評論

0/150

提交評論