




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第十八節(jié) 位運算與文件操作1:通過本節(jié)課的學習,使學生了解位運算的相關概念,掌握位運算的簡單使用,了解文件的相關概念及掌握順序文件的讀取。1.1教學目的:1.了解位運算的相關概念2.掌握位運算的簡單使用3.了解文件的相關概念4.掌握順序文件的讀取1.2教學內容:1.基本位運算與、或、異或、取反、左移、右移2.文件的基本操作:打開、關閉3.文件的簡單讀寫函數(shù)1.3教學重點:文件操作1.4教學方法:講授法、舉例1.5學習方法:練習、實驗二 回顧上一節(jié): 3分鐘編程時的第一句為什么?#include 三 課程知識點講解:具體知識點1: 位運算的概念【20分鐘】知識點講解:位運算就是指進行二進制位的運
2、算知識點講解:按位與、或、異或、取反運算符案例講解:【案例11.1】編寫一個使用按位與、按位或、按位異、按位取反的程序。1 / 13#include<stdio.h>main() char a=5,b=11,x,y,z,w; char c=A;x=a&b;y=a | b;z=ab;w= c;printf(“%d,%d,%d,%dn”,x,y,z,w); 程序運行結果:1,15,14,-66具體知識點2: 【20分鐘】知識點講解:移位運算符移位運算符有兩個“<< ”(左移運算符)和“>>”(右移運算符)。案例講解:編寫一個使用移位運算符的程序。#inc
3、lude<stdio.h>main() int a,b,x,y,z; a=9;b=-9; x=a<<3; y=a>>1; z=b>>1; printf(“%d,%d,%dn”,x,y,z);程序運行結果:72,4,5課堂練習:取一個整數(shù)a從右端開始的47位。 比如, 0000,0000,1101,1001 (八進制331十進制217,47位1101的八進制值是15十進制13) 。編程分析:(1)先使a移4位,使要取出的幾位移到最右端。a>>4 。(2)設置一個低4位全為1,其余為0 的數(shù) (0<<4) 。(3)將上面兩者進
4、行&運算。 程序如下:main() unsigned a,b,c,d; scanf(“%o”,&a); b = a >> 4; c = (0 << 4); d = b & c; printf(“%on%on”,a,b); 課堂練習:將無符號整數(shù)a進行循環(huán)右移,如原來右端3位移到最左端3位(如:11011111101010110111101111110101)。編程分析:不能直接使用“>>”運算符,因為“>>”運算符使左面添0或添1。設需要循環(huán)右移的數(shù)是一個整數(shù)(兩字節(jié)),移動n位。分三步完成。(1)將a的右端n位先放到中間
5、變量b的高n位中(左移16-n位)。 b= a<<(16-n);(2)將a右移n位,其左面n位補0( c=a>>n;)。 (3)將c與b 進行按位或運算(c=a | b)。 程序如下: main() unsigned a,b,c; int n; scanf("a=%o,n=%d",&a,&n); b=a<<(16-n); c=a>>n; c=c|b; printf(“%on%o”,a,c); 老師提問:位運算與數(shù)學計算的關系?具體知識點3:文件的概念 【5分鐘】知識點講解:文件,指一組相關數(shù)據的有序集合。C語言
6、把文件看作一個字節(jié)序列,即由一連串的字節(jié)組成,稱為“流(stream)” ,以字節(jié)為單位訪問,沒有記錄的界限(實際存在界限,例如,在FAT16文件系統(tǒng)中,文件的最大長度是2GB)。文件通常是駐留在外部介質(如磁盤等)上的,在使用時才調入內存中來。從不同的角度可對文件作不同的分類。1按文件所依附的介質來分:有磁盤文件、磁帶文件、內存文件、設備文件等。2按文件的內容區(qū)分:有源程序文件、目標文件、數(shù)據文件等。3按文件中的數(shù)據組織形式來分:數(shù)據文件可分為ASCII碼文件和二進制文件。 ASCII碼文件,又稱為“文本文件”(text),其每一個字節(jié)存放一個ASCII碼。二進制文件,把內存中的數(shù)據按其在內
7、存中的存儲形式存放在磁盤上。具體知識點4:文件的基本操作【35分鐘】知識點講解:文件操作的過程:對磁盤文件的操作必須“先打開,后讀寫,最后關閉”。“打開”文件的含義:以某中方式從磁盤上查找指定的文件或創(chuàng)建一個新文件。FILE * fopen(const char *filename,const char *mode);filename: 文件名(可以包含邏輯驅動器、路徑、文件名、擴展名)mode: 打開方式FILE *:返回值如:FILE *fp;fp = fopen("file1","r");如果成功打開,返回一個指向被打開文件的文件信息區(qū)的起始地址;
8、如果打開失敗,返回一個NULL指針。文件打開方式含 義"r"(只讀)為輸入打開一個文本文件"w"(只寫)為輸出打開一個文本文件"a"(追加)為追加打開一個文本文件"rb"(只讀)為輸入打開一個二進制文件"wb"(只寫)為輸出打開一個二進制文件"ab"(追加)為追加打開一個二進制文件"r+"(讀寫)為讀寫打開一個文本文件"w+"(讀寫)為讀寫創(chuàng)建一個文本文件"a+"(讀寫)為讀寫打開一個文本文件"rb+&qu
9、ot;(讀寫)為讀寫打開一個二進制文件"wb+"(讀寫)為讀寫創(chuàng)建一個二進制文件"ab+"(讀寫)為讀寫打開一個二進制文件文件一旦使用完畢,應用關閉文件函數(shù)把文件關閉,以避免文件的數(shù)據丟失等錯誤。對文件的讀和寫是最常用的文件操作。在語言中提供了多種文件讀寫的函數(shù):字符讀寫函數(shù) :fgetc和fputc字符串讀寫函數(shù):fgets和fputs數(shù)據塊讀寫函數(shù):freed和fwrite格式化讀寫函數(shù):fscanf和fprinf下面分別予以介紹。使用以上函數(shù)都要求包含頭文件stdio.h。知識點講解: 字符讀寫函數(shù)fgetc和fputc1讀字符函數(shù)fgetc功能:
10、是從指定的文件中讀一個字符調用形式:字符變量=fgetc(文件指針);案例講解:讀入文件c1.txt,在屏幕上輸出。編程分析:本例程序的功能是從文件中逐個讀取字符,在屏幕上顯示。程序定義了文件指針fp,以讀文本文件方式打開文件“d: examplec1.txt”,并使fp指向該文件。如打開文件出錯,給出提示并退出程序。程序第10行先讀出一個字符,然后進入循環(huán),只要讀出的字符不是文件結束標志(每個文件末有一結束標志EOF)就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內部的位置指針向后移動一個字符,文件結束時,該指針指向EOF。執(zhí)行本程序將顯示整個文件。程序如下:#include<
11、stdio.h>main() FILE *fp; char ch; if(fp=fopen("d: examplec1.txt","rt")=NULL) printf("nCannot open file strike any key exit!"); getch(); exit(1); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp); 2寫字符函數(shù)fputc功能:把一個字符寫入指定的文件中調用形式為:fputc(字符量,文件指針); 其中,待
12、寫入的字符量可以是字符常量或變量。案例講解:從鍵盤輸入一行字符,寫入一個文件,再把該文件內容讀出顯示在屏幕上。程序如下:#include<stdio.h>main() FILE *fp; char ch; if(fp=fopen("d:jrzhexamplestring","wt+")=NULL) printf("Cannot open file strike any key exit!"); getch(); exit(1); printf("input a string:n"); ch=getcha
13、r(); while (ch!='n') fputc(ch,fp); ch=getchar(); rewind(fp); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf("n"); fclose(fp);知識點講解:字符串讀寫函數(shù)fgets和fputs1讀字符串函數(shù)fgets功能:從指定的文件中讀一個字符串到字符數(shù)組中調用形式為:fgets(字符數(shù)組名,n,文件指針);其中的n是一個正整數(shù)。表示從文件中讀出的字符串不超過 n-1個字符。在讀入的最后一個字符后加上串結束標志'0'。例如:fgets(str,n,fp);的意義是從fp所指的文件中讀出n-1個字符送入字符數(shù)組str中。老師提問:對文件進行操作的基本方法,以及用到的關鍵函數(shù)4 本節(jié)總結 6分鐘考核點 考核點1:簡單的位運算 考核點2:有一定難度的文件操作測試題 測試題1:將一個十進制數(shù)轉化為二進制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 協(xié)議書房屋租賃合同范本
- 合作開餐館合同范本
- 專人制作合同范例
- 單位合理用電合同范本
- 路邊栽樹工程合同范本
- 合伙經商合同范例
- 基于行為活動特征的城市公園熱環(huán)境優(yōu)化研究
- 保溫燈罩采購合同范本
- 合作餐飲小吃合同范例
- 鐵路車皮裝卸合同范本
- 外研版小學英語五年級下冊課文翻譯
- 口語教程4整套課件完整版教學教程最全電子講義教案
- 高壓氧艙課件
- 加德納多元智能測評量表【復制】
- 譯林英語四年級下冊4B各單元教學反思
- QC成果提高大跨度多節(jié)點曲面鋼桁架一次安裝合格率
- 國家電網有限公司十八項電網重大反事故措施(修訂版)
- 環(huán)氧乙烷固定床反應器課程設計
- 班、團、隊一體化建設實施方案
- 如何建構結構性思維 課后測試
- 施工方案(行車拆除)
評論
0/150
提交評論