![c語言程序設(shè)計教案iii2013年3月_第1頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac01.gif)
![c語言程序設(shè)計教案iii2013年3月_第2頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac02.gif)
![c語言程序設(shè)計教案iii2013年3月_第3頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac03.gif)
![c語言程序設(shè)計教案iii2013年3月_第4頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac04.gif)
![c語言程序設(shè)計教案iii2013年3月_第5頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、全國計算機等級考試二級Email: 主講:胡曉麗高頻考點Company Logo第12章C語言中用戶標識符的作用Top76局部變量的定義及其作用域與生存期Top77全局變量的定義及其作用域與生存期Company LogoTop76局部變量的定義及其作用域與生存期考點局部變量:在函數(shù)或復(fù)合語句內(nèi)容定義的變量,按存儲類別分為:自動型寄存器型靜態(tài)型外部參照型局部變量的作用域與生存期靜態(tài)局部變量是在程序開始時就分配了固定的存儲空間,在程序運行時并不釋放,直到程序運行結(jié)束才釋放它所占的空間。靜態(tài)局部變量只能在本程序文件中使用,對未賦值的靜態(tài)局部變量,C編譯程序自動對其賦初值為:0Company Logo
2、真題分析(2013年3月)Top76局部變量的定義及其作用域與生存期BCompany Logo真題分析(2013年3月)Top76局部變量的定義及其作用域與生存期DCompany Logo真題分析(2006年9月)有以下程序,執(zhí)行后的結(jié)果是A、5,5B、5,11 C、11,11 D、11,5Top76局部變量的定義及其作用域與生存期main( ) int j=1,m=1,k;k=fun(j,m);printf(“%d”,k);k=fun(j,m);printf(“%dn”,k);fun(int x,int y)static int m=0,i=2;i+=m+1;m=i+x+y;return m
3、;BCompany Logo真題分析(2013年3月)有以下程序,程序運行后的結(jié)果是A、45B、50C、60D、55Top76局部變量的定義及其作用域與生存期int fun(int x ,int n) static int sum=0,i;for(i=0;in;i+ +) sum+ =xi;return sum;main( ) int a =1,2,3,4,5,b =6,7,8,9,s=0;s=fun(a,5)+fun(b,4); printf(%dn,s);CCompany Logo真題分析(2005年4月)以下程序的運行結(jié)果是Top76局部變量的定義及其作用域與生存期fun(int a)
4、int b=0; static int c=3;b+ +; c+ +;return(a+b+c);main( ) int i, a=5;for(i=0;i3;i+ +)printf(%d%d,i,fun(a);printf(n);010111212Company Logo考點全局變量:在函數(shù)之外定義的變量稱為外部變量,外部變量是全局變量,可以為本程序中所有其它函數(shù)所公有。有效范圍是從定義變量的位置開始到本源文件結(jié)束。全局變量的作用域與生存期全局變量只有靜態(tài)類別。可以使用extern 和static兩種說明符。Top76全局變量的定義及其作用域與生存期全局變量的生存期是整個程序的運行期間,因此在
5、整個運行期間都占內(nèi)存。若全局變量和某一函數(shù)的局部變量重名,則在該函數(shù)中,全局變量被屏蔽。Company Logo真題分析(2013年3月)Top76全局變量的定義及其作用域與生存期DCompany Logo真題分析(2013年3月)Top76全局變量的定義及其作用域與生存期DCompany Logo真題分析(2007年4月)以下程序的運行結(jié)果是_ Top76全局變量的定義及其作用域與生存期int k=0;void fun(int m) m+=k; k+=m; printf(m=%dn k=%d ,m,k+);main() int i=4; fun(i+); printf(i=%d k=%dn,
6、i,k);m=4 k=4 i=5 k=5Company Logo真題分析(2007年4月)有以下程序,程序運行后的輸出結(jié)果是A、24B、28C、32D、36Top76全局變量的定義及其作用域與生存期#include “stdio.h”int a=4;int f(int n)int t=0; static int a=5;if(n%2) int a=6; t+=a+;else int a=7; t+=a+;return t+a+;main()int s=a,i=0;for(;i2;i+)s+=f(i);printf(“%dn”,s);BCompany Logo真題分析(2013年3月)Top76
7、全局變量的定義及其作用域與生存期DCompany Logo第13 章 編譯預(yù)處理和動態(tài)存儲分配Top77 不帶參數(shù)的宏替換Top78 帶參數(shù)的宏替換Top79 對編譯預(yù)處理的一些說明Top80 動態(tài)存儲分配Company LogoTop77 不帶參數(shù)的宏替換考點一般定義形式為:#define 宏名 字符串說明:宏定義與一般變量定義含義不同,它只作字符替換,并不分配內(nèi)存空間,也不能認為是賦值?!?”表示這是一要預(yù)處理命令define為宏定義命令宏名為一個合法的標識符字符串可以是常數(shù)、表達式或語句,或是多條語句2.宏展開:預(yù)編譯時,用宏體替換宏名-不作語法檢查3.引號中的內(nèi)容與宏名相同也不置換例
8、#define PI 3.14159 printf(“2*PI=%fn”,PI*2);宏展開:printf(“2*PI=%fn”,3.14159*2);4.宏定義可嵌套,不能遞歸例 #define MAX MAX+10 ()5.宏定義中使用必要的括號()例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2;宏展開:var= 80+40 *2;例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2;宏展開:var= 80+40 *2;( )( )Company LogoTop78 不
9、帶參數(shù)的宏替換真題分析(2013年3月)ACompany LogoTop78 不帶參數(shù)的宏替換真題分析(2005-9)下列程序的功能是:給r 輸入數(shù)據(jù)后計算半徑為r 的圓面積s。程序在編譯時出錯,出錯的原因是A、注釋語句書寫位置錯誤B、存放圓半徑的變量r 不應(yīng)該定義為整型C、輸出語句中格式描述符非法D、計算圓面積的賦值語句中使用了非法變量Dmain( )/* Beginning */ int r; float s;scanf(%d,&r);s=*r*r;printf(s=%fn,s);Company LogoTop78 不帶參數(shù)的宏替換真題分析(2005-4)下列程序的輸出結(jié)果是A、192B、
10、29C、25D、編譯出錯#define P 3void F(int x) return(P*x*x); main( ) printf(%dn,F(3+5); ACompany LogoTop78 帶參數(shù)的宏替換帶參數(shù)宏定義一般形式: #define 宏名(參數(shù)表) 宏體例 #define S (r) PI*r*r相當于定義了不帶參宏S,代表字符串“(r) PI*r*r” 宏展開:形參用實參換,其它字符保留宏體及各形參外一般應(yīng)加括號()例 #define S(a,b) a*b . area=S(3,2);宏展開: area=3*2;不能加空格例 #define POWER(x) x*x x=4;
11、 y=6; z=POWER(x+y);宏展開:z=x+y*x+y;一般寫成: #define POWER(x) (x)*(x)宏展開: z=(x+y)*(x+y);Company LogoTop78 帶參數(shù)的宏替換真題分析(2013年3月)ACompany LogoTop78 帶參數(shù)的宏替換真題分析(2013年3月)BCompany LogoTop78 帶參數(shù)的宏替換真題分析(2007年4月)有一個名為init.txt的文件,內(nèi)容如下#define HDY(A,B) A/B#define PRINT(Y) printf(“y=%dn”,Y)有以下程序#include “stdio.h”#inc
12、lude “init.txt”main()int a=1,b=2,c=3,dd=4,k;k=HDY(a+c,b+d);PRINT(k);下面針對該程序的敘述正確的是:編譯出錯A.運行出錯D.運行結(jié)果為y=0C.運行結(jié)果為y=6B.DCompany LogoTop78 帶參數(shù)的宏替換真題分析(2005年9月)有下列程序,程序運行后的輸出結(jié)果是A、64,28B、4,4C、4,3D、64,64#define f(x)=(x*x)main( ) int i1,i2;i1=f(8)/f(4); i2=f(4+4)/f(2+2);prinft(%d,%dn,i1,i2);CCompany LogoTop7
13、8 帶參數(shù)的宏替換真題分析(2005年4月)下列敘述中正確的是A、預(yù)處理命令行必須位于源文件的開頭B、在源文件的一行上可以有多條預(yù)處理命令C、宏名必須用大寫字母表示D、宏替換不占用程序的運行時間DCompany LogoTop79 對編譯預(yù)處理的一些說明考點:在C語言中,凡是以“#”開頭的行,都稱為“編譯預(yù)處理”命令行種類宏定義 #define文件包含 #include條件編譯 #if-#else-#endif等格式:“#”開頭占單獨書寫行語句尾不加分號Company LogoTop79 對編譯預(yù)處理的一些說明真題分析(2013年3月)BCompany LogoTop79 對編譯預(yù)處理的一些說
14、明真題分析(2013年3月)DCompany LogoTop79 對編譯預(yù)處理的一些說明真題分析(2006年4月)下列敘述中正確的是A、預(yù)處理命令行必須位于C 源程序的起始位置B、在C 語言中,預(yù)處理命令行都以#開頭C、每個C 程序必須在開頭包含預(yù)處理命令行:#includeD、 C 語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能BCompany LogoTop80動態(tài)存儲分配靜態(tài)存儲分配:用于存儲數(shù)據(jù)的變量和數(shù)組都是在說明部分定義的,C編譯系統(tǒng)通過定義語句了解它們所需要的空間,并預(yù)先為其分配適當?shù)拇鎯卧?。這些存儲單元一經(jīng),在變量或數(shù)組的生存期內(nèi)是固定不變的。動態(tài)存儲分配:在程序執(zhí)行期間,通過”
15、申請“得到指定的內(nèi)存單元;當有閑置不用的空間時,可以隨時將其釋放,由系統(tǒng)另作它用。四個和動態(tài)存儲分配有關(guān)的函數(shù):(1)malloc(2)calloc(3)free(4)realloc使用這些函數(shù)時,要包含頭文件”stdlib.h“Company LogoTop80 動態(tài)存儲分配(1)malloc函數(shù),其返回值類型為void。調(diào)用形式為:malloc(size)要求size的類型為unsigned int作用:用來分配size個字節(jié)的存儲空間,返回一個指針指向存儲區(qū)首地址的基類型為void的地址。例:short int *pi;float *pf;pi=(short *)malloc(2);pf
16、=(float *)malloc(4);說明:(1)因為malloc是void型的,所以需要強制轉(zhuǎn)換類型(2)強制轉(zhuǎn)換類型括號中的不可少,否則就變成了普通類型。if(pi!=NULL) *p=6;if(pf!=NULL) *pf=3.863.8pipfCompany LogoTop80 動態(tài)存儲分配注意:由動態(tài)存儲分配得到的存儲單元沒有名字,只能靠指針來引用它。一旦指針改變指向,則原存儲單元及所存數(shù)據(jù)都將無法引用。通過調(diào)用malloc函數(shù)所分配的單元動態(tài)存儲單元中沒有確定的初值。在動態(tài)申請存儲空間時,若不能確定數(shù)據(jù)類型所占字節(jié)數(shù),可通過sizeof運算符來求得。例如: pi=(int *)ma
17、lloc(sizeof(int); pf=(float *)malloc(sizeof(float);由系統(tǒng)來計算指定類型所占的字節(jié)數(shù),有利于程序的移植。Company LogoTop80 動態(tài)存儲分配(3)calloc函數(shù),返回值類型為void。調(diào)用形式:calloc(n,size)要求n和size都是unsigned int。作用:用來給n個同一類型的數(shù)據(jù)項分配連續(xù)的存儲空間,每個數(shù)據(jù)項長度為size字節(jié)。(2)free函數(shù),沒有返回值。調(diào)用形式為:free(p);p必須是指向由動態(tài)存儲分配函數(shù)malloc或calloc分配的地址。作用:將使指針p所指的存儲空間釋放,使這部分空間重新歸系統(tǒng)
18、支配。Company Logo通過calloc函數(shù)所分配的存儲單元,系統(tǒng)自動賦初值0。例如:char *ps;ps=(char *)calloc(10,sizeof(char);說明:以上函數(shù)調(diào)用語句開辟了10個連續(xù)的存儲單元,由ps指向存儲單元的首地址。每個單元可以存儲一個字符。用calloc函數(shù)開辟的動態(tài)存儲單元相當于開辟了一個一維數(shù)組。函數(shù)的第一個參數(shù)是數(shù)組的大小,第二個是數(shù)組元素的類型。函數(shù)的返回值就是數(shù)組的首地址。使用該函數(shù)分配的地址,同樣可以用函數(shù)free來釋放。Top80 動態(tài)存儲分配Company LogoTop80 動態(tài)存儲分配真題分析(2007年4月)以下程序的輸出結(jié)果是#
19、includemain()char *s1,*s2,m;s1=s2=(char*)malloc(sizeof(char);*s1=15; *s2=20; m=*s1+*s2;printf(%dn,m);s1與 s2指向同一個存儲單元40Company LogoTop80 動態(tài)存儲分配真題分析(2005年9月)已有定義:double *p;,請寫出完整的語句,利用malloc 函數(shù)使p 指向一個雙精度型的動態(tài)存儲單元p=(double *)malloc(sizeof(double)Company Logo第14章結(jié)構(gòu)體、共用體和用戶定義Top81結(jié)構(gòu)體變量的定義與初始化Top82結(jié)構(gòu)體數(shù)組和指針
20、Top83結(jié)構(gòu)體變量的引用Top84結(jié)構(gòu)體與函數(shù)Top85用戶定義類型的定義方法與應(yīng)用Top86鏈表結(jié)點的訪問Top87共用體類型數(shù)據(jù)的定義、初始化Top88共用體類型數(shù)據(jù)的引用Company Logo1.定義結(jié)構(gòu)體的一般形式:struct 結(jié)構(gòu)體變量標識名類型名1 結(jié)構(gòu)成員名表1;類型名2 結(jié)構(gòu)成員名表2;。類型名n 結(jié)構(gòu)成員名表n;;struct dataint year ;int month ;int day;struct student char name8; char sex ; struct data birthday; float score4;;int year,month,d
21、ay;struct student char name8; char sex ; struct int year;int monthint day birthday; float score4;;Top81 結(jié)構(gòu)體變量的定義與初始化Company Logo(1).緊跟著結(jié)構(gòu)體類型說明之后進行定義struct student char name8; char sex ; struct data birthday; float score4;std;8個字節(jié)1個字節(jié)6個字節(jié)16個字節(jié)namesexbirthdayscorestdTop81 結(jié)構(gòu)體變量的定義與初始化2、結(jié)構(gòu)體變量的定義和初始化Com
22、pany Logo(2).說明一個無名結(jié)構(gòu)體類型的同時進行定義struct char name8; char sex ; struct data birthday; float score4;std;student省略結(jié)構(gòu)體變量名,通常用在不需要再次定義此類型結(jié)構(gòu)體變量的情況。用無名結(jié)構(gòu)體直接定義變量只能一次struct 類型標識符 成員名; 類型標識符 成員名; .變量名表列;Top81 結(jié)構(gòu)體變量的定義與初始化Company Logo(3).先說明結(jié)構(gòu)體變量類型,再單獨進行變量定義struct char name8; char sex ; struct data birthday; flo
23、at score4;;studentstruct student std;Top81 結(jié)構(gòu)體變量的定義與初始化Company LogoTop81 結(jié)構(gòu)體變量的定義與初始化(1)給結(jié)構(gòu)體變量賦初值struct stduentchar name8;char sex;struct data birthday;float score4;std=“LIMING”,M,1962,5,10,88.0,76.5,85.5,90.0;初始化可用輸入語句或賦值語句來完成,或在定義時進行初始化賦值。Company LogoTop81 結(jié)構(gòu)體變量的定義與初始化真題分析(2013年3月)DCompany LogoTop
24、81 結(jié)構(gòu)體變量的定義與初始化真題分析(2007年4月)設(shè)有說明struct DATEint year;int month; int day;請寫出一條定義語句,該語句定義d為上述結(jié)構(gòu)體變量,并同時為其成員year、month、day 依次賦初值2006、10、1:_struct DATA d=2006,10,1;Company LogoTop81 結(jié)構(gòu)體變量的定義與初始化真題分析(2005年4月)以下對結(jié)構(gòu)體類型變量td的定義中,錯誤的是A、typedef struct aa int n;float m; AA; AA td;B、struct aa int n;float m;td;stru
25、ct aa td;D、Struct int n;float m;td;C、struct int n; float m; aa; struct aa td;CCompany LogoTop82 結(jié)構(gòu)體數(shù)組和指針考點結(jié)構(gòu)體數(shù)組和指針的定義與結(jié)構(gòu)體變量一樣,對于結(jié)構(gòu)體數(shù)組的初始化,與前面數(shù)組賦初值的規(guī)則一樣,只是由于數(shù)組中的每個元素都是一個結(jié)構(gòu)體,因此通常將其成員的值依次放在一對大括號中,以便區(qū)分各個元素。Company LogoTop82 結(jié)構(gòu)體數(shù)組和指針2013-3ACompany LogoDCompany LogoTop82 結(jié)構(gòu)體數(shù)組和指針真題分析(2005年4月)下列程序運行后的輸出結(jié)果是
26、stuct NODE int k;struct NODE *link;main( ) struct NODE m5,*p=m,*q=m+4;int i=0;while(p! =q) p-k=+ +i; p+ +;q-k=i+ +; q-;q-k=i;for(i=0;i成員名(*指針變量名).成員名.稱為成員運算符-稱為結(jié)構(gòu)指向運算符Company Logo(2)對結(jié)構(gòu)體變量中的成員進行操作例:struct stduentchar name8;char sex;struct data birthday;float score4;std,per5,*ps;ps=&std;scanf(“%s”,st
27、);for(i=0;iname);for(i=0;i4;i+)scanf(“%d”,&persi.birthday.year);for(i=0;i4;i+)for(j=0;j2級運算符: + - * &DCompany LogoTop83 結(jié)構(gòu)體變量的引用真題分析(2006年4月)有下列程序段,下列選項中表達式的值為11 的是struct st int x;int *y;*pt;int a =l,2,b =3,4;struct st c2 = 10,a,20,b;pt=c;A、*pt yB、pt xC、+ +pt xD、(pt+ +)-xCCompany LogoTop84 結(jié)構(gòu)體
28、與函數(shù)真題分析(2007-4)有以下程序,程序運行后的輸出結(jié)果是A、 2,3B、2,4C、1,4D、1,2#include “stdio.h”typedef struct int b,p; Avoid f(A c) /* 注意c是結(jié)構(gòu)變量名*/int j;c.b+=1; c.p+=2;main()int i;A a=1,2;f(a);printf(“%d,%dn”,a.b,a.p);DTop84 結(jié)構(gòu)體與函數(shù)D真題分析(2013-3)Top84 結(jié)構(gòu)體與函數(shù)D真題分析(2013-3)Top84 結(jié)構(gòu)體與函數(shù)D真題分析(2013-3)Company LogoTop84 結(jié)構(gòu)體與函數(shù)B真題分析(2
29、013-3)Company LogoTop84 結(jié)構(gòu)體與函數(shù)D真題分析(2013-3)Company LogoTop85 用戶定義類型的定義方法和應(yīng)用typedef 類型名標識符;例:typedef int INTEGER;INTEGER m,n;m=9;n=0;習慣用大于字母int m,n;m=9;n=0;例:typedef char * CHARP;CHARP p;char * p;說明:1.typedef 沒有創(chuàng)造新數(shù)據(jù)類型2.typedef 是定義類型,不能定義變量3.typedef 與 define 不同 define typedef預(yù)編譯時處理 編譯時處理簡單字符置換 為已有類型命
30、名 Top85 用戶定義類型的定義方法和應(yīng)用真題分析(2013年3月)DTop85 用戶定義類型的定義方法和應(yīng)用真題分析(2013年3月)ATop85 用戶定義類型的定義方法和應(yīng)用真題分析(2013年3月)BTop85 用戶定義類型的定義方法和應(yīng)用真題分析(2013年3月)DCompany LogoTop85 用戶定義類型的定義方法和應(yīng)用真題分析(2007年4月)有以下程序段,以下敘述中正確的是typedef struct node int data; struct node *next; *NODENODE p;A、p是指向struct node結(jié)構(gòu)變量的指針的指針B、 NODEp;語句出錯
31、C、 p是指向struct node結(jié)構(gòu)變量的指針D、 p是struct node結(jié)構(gòu)變量CCompany LogoTop85 用戶定義類型的定義方法和應(yīng)用真題分析設(shè)有以下語句,則下列敘述中正確的是A、可以用TT定義結(jié)構(gòu)體變量B、TT是結(jié)構(gòu)類型的變量C、可以用CIN定義結(jié)構(gòu)體變量D、CIN是struct TT類型的變量typedef struct TTchar c;int a4;CIN;CCompany LogoTop86 結(jié)構(gòu)體類型-鏈表1.結(jié)構(gòu)體中含有可以指向本結(jié)構(gòu)體的指針成員struct linkchar ch;struct link *p;a;1000100110021003a.cha
32、.p地址Company LogoTop86 結(jié)構(gòu)體類型-鏈表例:一個簡單的單鏈表#include stdio.hstruct nodeint data;struct node *next;typedef struct node NODETYPE;main()NODETYPE a,b,c,*h,*p;a.data =10;b.data =20;c.data =30;h=&a;/*將結(jié)點相連*/a.next =&b; b.next =&c; c.next =0;p=h;while(p)printf(%4d,p-data );p=p-next ;printf(n);100010041008100Ba
33、.dataa.next10108010881084b.datab.nextc.datac.next2030hFF88FF8BP100010081080010001000101008201080300abc1000h10001008108010081080Company Logo3.單向鏈表結(jié)點的類型定義:struct slistint data;struct slist *next;typedef struct slist SLIST;/0head單向鏈表的基本算法:鏈表建立、結(jié)點數(shù)據(jù)域的輸出、結(jié)點的插入和刪除。Top86 結(jié)構(gòu)體類型-鏈表Company LogoTop86 結(jié)構(gòu)體類型-鏈表真
34、題分析(2013年3月程序設(shè)計題)Company LogoTop86 結(jié)構(gòu)體類型-鏈表真題分析(2013年3月程序設(shè)計題)#include #include #define N 8struct slist double s; struct slist *next;typedef struct slist STREC;double fun( STREC *h )STREC * creat( double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC);p-s=0; while(is=si; i+; p-next=q; p
35、=q; p-next=0; return h;outlist( STREC *h) STREC *p; p=h-next; printf(head); do printf(-%4.1f,p-s);p=p-next; while(p!=0); printf(nn);Company LogoTop86 結(jié)構(gòu)體類型-鏈表真題分析(2013年3月程序設(shè)計題)main() double sN=85,76,69,85,91,72,64,87,ave;STREC *h; h=creat( s ); outlist(h); ave=fun( h ); printf(ave= %6.3fn,ave);doubl
36、e fun( STREC *h )STREC *p;double ave=0;int count=0;p=h-next ;while(p!=0)ave+=p-s;p=p-next;count+;return ave/count;Top86 結(jié)構(gòu)體類型-鏈表真題分析(2013年3月程序設(shè)計題)N名學生的成績已在主函數(shù)中放入一個帶頭節(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭 節(jié)點。請編寫函數(shù)fun,它的功能是:找出學生的最高分,由函數(shù)值返回。 注意: 部分源程序在文件PROG1.C文件中。 請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入 你編寫的若干語句。 #include #i
37、nclude #define N 8 struct slist double s; struct slist *next; ; typedef struct slist STREC; double fun( STREC *h ) STREC * creat( double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC);p-s=0; while(is=si; i+; p-next=q; p=q; p-next=0; return h; Top86 結(jié)構(gòu)體類型-鏈表真題分析(2013年3月程序設(shè)計題)outlist( S
38、TREC *h) STREC *p; p=h-next; printf(head); do printf(-%2.0f,p-s);p=p-next; while(p!=0); printf(nn); main() double sN=85,76,69,85,91,72,64,87, max; STREC *h; h=creat( s ); outlist(h); max=fun( h ); printf(max=%6.1fn,max); double fun( STREC *h ) STREC *p;double max;p=h-next ;max=p-s ;p=p-next ;while(p
39、!=NULL)if(p-s max)max=p-s ;p=p-next ;return max; Company LogoTop86 結(jié)構(gòu)體類型-鏈表真題分析(2013年3月)DCompany LogoTop86 結(jié)構(gòu)體類型-鏈表真題分析(2006年9月)下列程序中fun()函數(shù)的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。Disp()函數(shù)的功能是顯示輸出該單鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿蒬isp()函數(shù)Company LogoTop86 結(jié)構(gòu)體類型-鏈表#include typedef struct node /*鏈表結(jié)點結(jié)構(gòu)* char
40、sub3;struct node *next;Node;Node fun(char s) *建立鏈表* void disp(Node *h) Node *p;p=h next;while( 【19】 )printf(%sn,P sub); p= 【20】 ; main( ) Node *hd;hd=fun( ); disp(hd); printf(n);p!=NULLp-nextTop86 結(jié)構(gòu)體類型-鏈表真題分析(2006年9月)程序中已構(gòu)成如下圖所示的不帶頭結(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q 均已正確定義,并用于指向鏈表結(jié)點,指針變量s 總是作為頭指針指向鏈表的第一個結(jié)點.若有下列程序
41、段q=s; s=s-next; p=s;while (p-next) p=p-next;p-next=q; q-next=NULL;該程序段實現(xiàn)的功能是( )。B、首結(jié)點成為尾結(jié)點C、尾結(jié)點成為首結(jié)點A、刪除首結(jié)點D、刪除尾結(jié)點BCompany LogoTop86 結(jié)構(gòu)體類型-鏈表真題分析(2005年4月)有下列結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r 分別指向此鏈表中的三個連續(xù)結(jié)點struct nodeint data;struct node *next;*p,*q,*r;Company LogoTop86 結(jié)構(gòu)體類型-鏈表現(xiàn)要將q 所指結(jié)點從鏈表中刪除,同時要保持鏈表的連續(xù),下列不能
42、完成指定操作的語句是_A、 p-next=q-next;B、p-next=p-next-next;C、p-next=r;D、 p=q-nextDCompany LogoTop87 共用體數(shù)據(jù)類型的定義與初始化構(gòu)造數(shù)據(jù)類型,也叫聯(lián)合體用途:使幾個不同類型的變量共占一段內(nèi)存(相互覆蓋)共用體類型定義定義形式:union 共用體名 類型標識符 成員名; 類型標識符 成員名; .;例 union data int i; char ch; float f; ;fchi類型定義不分配內(nèi)存Company LogoTop87 共用體數(shù)據(jù)類型的定義與初始化真題分析(2006年9月)若有下列定義和語句,則下列語句
43、正確的是A、 x=10.5;B、x.c=101C、y=x;D、printf(“%dn”,x);union data int i; char c; float f; x;int y;BCompany LogoTop87 共用體數(shù)據(jù)類型的定義與初始化真題分析(2005年4月)若有下列說明和定義,下列敘述中錯誤的是_A、 data 的每個成員起始地址都相同B、變量data 所占內(nèi)存字節(jié)數(shù)與成員c 所占字節(jié)數(shù)相等C、程序段:data.a=5;printf(%fn,data.c);輸出結(jié)果為5.000000D、 data 可以作為函數(shù)的實參union dt int a; char b; double c
44、;data;CCompany Logo第15章位運算Top88位運算符及簡單的位運算Top89 位運算符的優(yōu)先級Company LogoTop88位運算符及簡單的位運算C語言提供的6種位運算符及其運算功能運算符含義優(yōu)先級按位求反1(高)右移2&按位與3按位異或4|按位或5(低)Company LogoTop88位運算符及簡單的位運算擴展的賦值運算符擴展運算符表達式等價的表達式a=2a=ab=nb=bn&a&=ba=a&ba=ba=ab|a|=ba=a|bCompany LogoTop88位運算符及簡單的位運算1.“按位取反”運算是唯一一個單目運算符,功能是按運算對象的內(nèi)容按位取反。01按位取反
45、10例:0115八進制數(shù)01151011001001001101按位取反二進制數(shù)0262Company LogoTop89位運算符及簡單的位運算2.“左移”運算是雙目運算符,左邊是運算對象,右邊是整型表達式,代表左移的位數(shù)。左移時,右端(低位)補0,左端(高位)移出的部分舍棄。例:char a=6,b;b=a2;6=110=00000110左移2位000110000024左移2位Company LogoTop89位運算符及簡單的位運算小結(jié):(1)左移時,若左端移出的部分不包含1,則每左移1位,相當于乘以2.某些情況下,可以代替乘法運算,加快運算速度。(2)如果左端移出的部分包含1,這一特性就不
46、再合適了。例:a=64,b;b=a是雙目運算符,左邊是運算對象,右邊是整型表達式,代表左移的位數(shù)。右移時,右端(低位)移出的部分舍棄。左端(高位)移入的二進制數(shù)分兩種情況(因為負數(shù)在機器內(nèi)用補碼表示)無符號整數(shù)和正整數(shù),高位補0;負整數(shù),高位補1例:a=8,b;b=a2;8=00001000左移2位00001000002右移2位Company LogoTop89位運算符及簡單的位運算3.“右移”運算例:a=-8,b;b=a2;-8右移2位111111111111100011-2右移2位=-0000000000001000=1111111111110111=1111111111111000111
47、1111111111000-8Company LogoTop89位運算符及簡單的位運算小結(jié):(1)右移時,和左移相對應(yīng),若右端移出的部分不包含有效數(shù)字1,則每移出1位,相當于除以2.(2)如果左端移出的部分包含1,這一特性就不再合適了。Company LogoTop89位運算符及簡單的位運算4.”按位與“運算功能:把參加運算的兩個數(shù)按對應(yīng)的二進制位分別進行“與”運算,當兩個相應(yīng)的位都是1時,該位為1,否則為0.例:int a=12,b=10,c; c=a&b;12=0000110010=0000101000010000c=8Company LogoTop89位運算符及簡單的位運算5.”按位異或
48、“運算功能:把參加運算的兩個數(shù)按對應(yīng)的二進制位分別進行“異味或”運算,當兩個相應(yīng)的位不同時,該位為1,否則為0.例:int a=12,b=10,c; c=ab;12=0000110010=0000101001100000c=6結(jié)論:如果要使某位的數(shù)翻轉(zhuǎn),只要使其和1進行“異或”操作;要使某位保持原數(shù),只要使其和0進行異或操作。Company LogoTop89位運算符及簡單的位運算例:char a=0152,若希望a的高4位不變,低4位取反,則如何操作?015201101010異或0000111110000110結(jié)果為0145Company LogoTop89位運算符及簡單的位運算6.”按位或
49、“運算功能:把參加運算的兩個數(shù)按對應(yīng)的二進制位分別進行“或”運算,當兩個相應(yīng)的位都是0時,該位為0,否則為1.例:int a=12,b=10,c; c=ab;12=0000110010=0000101001110000c=12結(jié)論:如果要使某一位上的數(shù)置成1,其余位不變,則將希望置1的位與1進行“或”運算,希望保持不變的位與0進行“或”運算。Company LogoTop89位運算符及簡單的位運算例:char a=0152,若希望a的高4位不變,低4位置1,則如何操作?015201101010或0000111111110110結(jié)果為0145Top89位運算符及簡單的位運算真題分析(2013年3
50、月)CTop89位運算符及簡單的位運算真題分析(2013年3月)ATop89位運算符及簡單的位運算真題分析(2013年3月)DTop89位運算符及簡單的位運算真題分析(2013年3月)DCompany LogoTop89位運算符及簡單的位運算真題分析(2007年4月)有以下程序,程序運行后的輸出結(jié)果是A、3B、4C、5D、6#include “stdio.h”main()unsigned char a=2,b=4,c=5,d;d=a|b; d&=c; printf(“%dn”,d);01000010|011001101010&0010BCompany LogoTop89位運算符及簡單的位運算真
51、題分析(2005年9月)下列程序的功能是進行位運算,程序運行后的輸出結(jié)果是A、4 3B、7 3C、7 0D、4 0main( ) unsigned char a,b;a=73; b=4 & 3;printf(%d%dn,a,b);A11101100001011011100&1100Company LogoTop89位運算符及簡單的位運算真題分析(2005年4月)下列程序的輸出結(jié)果是_A、0B、70C、35D、1main( ) int c=35; printf(%dn,c&c);CCompany LogoTop89位運算符及簡單的位運算真題分析(2007年4月)若變量已經(jīng)正確定義,則以下語句的輸
52、出結(jié)果是A、-1B、0C、1D、32s=32; s=32;printf(“%d”,s);BCompany LogoTop90 位運算符的優(yōu)先級考點位運算符只能作用于整型或字符型數(shù)據(jù),不能是實型數(shù)據(jù)。優(yōu)先級順序為: &|Company LogoTop90 位運算符的優(yōu)先級真題分析設(shè)有以下語句,執(zhí)行后c的值為A、6B、7C、8D、9int a=1,b=2,c;c=a(b2);100000011001DCompany Logo第16章文件Top91C語言文件的相關(guān)概念Top92文件的打開和關(guān)閉Top93文件的讀寫Top94文件的定位與出錯的檢測Company LogoTop91 C語言文件的相關(guān)概念
53、文件:存儲在外部介質(zhì)上數(shù)據(jù)的集合,是操作系統(tǒng)數(shù)據(jù)管理的單位。使用數(shù)據(jù)文件的目的1、數(shù)據(jù)文件的改動不引起程序的改動程序與數(shù)據(jù)分離2、不同程序可以訪問同一數(shù)據(jù)文件中的數(shù)據(jù)數(shù)據(jù)共享3、能長期保存程序運行的中間數(shù)據(jù)或結(jié)果數(shù)據(jù)文件分類按文件的邏輯結(jié)構(gòu):記錄文件:由具有一定結(jié)構(gòu)的記錄組成(定長和不定長)流式文件:由一個個字符(字節(jié))數(shù)據(jù)順序組成按存儲介質(zhì):普通文件:存儲介質(zhì)文件(磁盤、磁帶等)設(shè)備文件:非存儲介質(zhì)(鍵盤、顯示器、打印機等)按數(shù)據(jù)的組織形式:文本文件: ASCII文件,每個字節(jié)存放一個字符的ASCII碼二進制文件:數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣存放Company Logo如 int型數(shù)100
54、000010011100010000內(nèi)存存儲形式0010011100010000二進制形式00 00000011000000110000ASCII形式文本文件特點:存儲量大、速度慢、便于對字符操作二進制文件特點:存儲量小、速度快、便于存放中間結(jié)果Top91 C語言文件的相關(guān)概念Company LogoTop91 C語言文件的相關(guān)概念真題分析(2006年9月)下列敘述中正確的是A、C 語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)B、打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋C、在一個程序中當對文件進行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1 個數(shù)據(jù)D、當對文
55、件的讀(寫)操作完成之后, 必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失DCompany LogoTop91 C語言文件的相關(guān)概念真題分析(2005年9月)下列敘述中錯誤的是A、在C 語言中,對二進制文件的訪問速度比文本文件快B、在C 語言中,隨機文件以二進制代碼形式存儲數(shù)據(jù)C、語句FILE fp;定義了一個名為fp 的文件指針D、C 語言中的文本文件以ASC碼形式存儲數(shù)據(jù)CCompany Logo文件結(jié)構(gòu)體FILE 緩沖文件系統(tǒng)為每個正使用的文件在內(nèi)存開辟文件信息區(qū)文件信息用系統(tǒng)定義的名為FILE的結(jié)構(gòu)體描述FILE定義在stdio.h中typedef struct int _fd; /文件號 int
56、 _cleft; /緩沖區(qū)中剩下的字符數(shù) int _mode; /文件操作方式 char *_next; /文件當前讀寫位置 char *_buff; /文件緩沖區(qū)位置FILE;Top92 文件的打開與關(guān)閉Top92 文件的打開與關(guān)閉(2013-3)DCompany Logo文件類型指針指針變量說明: FILE *fp;用法:文件打開時,系統(tǒng)自動建立文件結(jié)構(gòu)體,并把指向它的指針返回來,程序通過這個指針獲得文件信息,訪問文件文件關(guān)閉后,它的文件結(jié)構(gòu)體被釋放文件名文件使用方式文件類型指針C程序操作系統(tǒng)磁盤Top92 文件的打開與關(guān)閉Company LogoTop92 文件的打開與關(guān)閉打開文件fop
57、en函數(shù)原型: FILE *fopen(char *name,char *mode)功能:按指定方式打開文件返值:正常打開,為指向文件結(jié)構(gòu)體的指針;打開失敗,為NULL例 文件打開與測試 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp=NULL) printf(“File open error!n”); exit(0); 例 FILE *fp; fp= fopen (“c:fengyibkctest.dat”,”r”); 例 FILE *fp; char *filename=“c:fengyibkctest.dat” fp= fopen(filename,”r”);
58、 Company LogoTop92 文件的打開與關(guān)閉“r+/rb+” (讀寫)“a/ab” (追加)“w/wb” (只寫)“r/rb” (只讀)“w+/wb+” (讀寫)“a+/ab+” (讀寫)為輸入打開一個文本/二進制文件為輸出打開或建立一個文本/二進制文件為讀/寫打開一個文本/二進制文件為讀/寫建立一個文本/二進制文件為讀/寫打開或建立一個文本/二進制文件向文本/二進制文件尾追加數(shù)據(jù)文件使用方式含義Company LogoTop92 文件的打開與關(guān)閉文件關(guān)閉fclose函數(shù)原型:int fclose(FILE *fp)作用:使文件指針變量與文件“脫鉤”,釋放文件結(jié)構(gòu)體和文件指針功能:關(guān)
59、閉fp指向的文件返值:正常關(guān)閉為0;出錯時,非0磁盤文件輸出文件緩沖區(qū)輸入文件緩沖區(qū)程序數(shù)據(jù)區(qū)a緩沖文件系統(tǒng):fclose不關(guān)閉文件可能會丟失數(shù)據(jù)Top92 文件的打開與關(guān)閉Company Logo給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點數(shù),然后將其顯示在屏幕上。 請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include #includ
60、e void fun(char *s, int a, double f) /*found*/ _1_ fp; char str100, str1100, str2100; int a1; double f1; fp = fopen(file1.txt, w); fprintf(fp, %s %d %fn, s, a, f); /*found*/ _2_ ; fp = fopen(file1.txt, r); /*found*/ fscanf(_3_,%s%s%s, str, str1, str2); fclose(fp); a1 = atoi(str1); f1 = atof(str2); p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學六年級口算題卡
- 小學六年級800道數(shù)學口算題
- 2025年沈陽貨運從業(yè)資格試題及答案詳解
- 2025年太原貨車從業(yè)資格證答題技巧
- 監(jiān)控錄像管理協(xié)議書(2篇)
- 2024-2025學年高中地理課時分層作業(yè)13噪聲污染及其防治含解析湘教版選修6
- 2024-2025學年八年級數(shù)學上冊第十一章三角形11.2與三角形有關(guān)的角作業(yè)設(shè)計新版新人教版
- 人事行政助理年終工作總結(jié)
- 公司辦公室工作總結(jié)
- 人力資源部年度個人工作計劃
- 某縣城區(qū)地下綜合管廊建設(shè)工程項目可行性實施報告
- 《架空輸電線路導(dǎo)線舞動風偏故障告警系統(tǒng)技術(shù)導(dǎo)則》
- 2024年計算機二級WPS考試題庫
- JJF(京) 92-2022 激光標線儀校準規(guī)范
- 普惠金融政策解讀
- 2024年疾控中心支部工作計劃范本
- 廣東省廣州黃埔區(qū)2023-2024學年八年級上學期期末數(shù)學試卷(含答案)
- 法理學課件馬工程
- 《無菌檢查培訓(xùn)》課件
- 2024-2030年中國香菇行業(yè)銷售狀況及供需前景預(yù)測報告
- 高中英語必背3500單詞表(完整版)
評論
0/150
提交評論