![c語言程序設(shè)計(jì)教案iii2013年3月_第1頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac01.gif)
![c語言程序設(shè)計(jì)教案iii2013年3月_第2頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac02.gif)
![c語言程序設(shè)計(jì)教案iii2013年3月_第3頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac03.gif)
![c語言程序設(shè)計(jì)教案iii2013年3月_第4頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac04.gif)
![c語言程序設(shè)計(jì)教案iii2013年3月_第5頁](http://file4.renrendoc.com/view/532f037f078d7b08b4ec0a9a3a3acac0/532f037f078d7b08b4ec0a9a3a3acac05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、全國計(jì)算機(jī)等級考試二級Email: 主講:胡曉麗高頻考點(diǎn)Company Logo第12章C語言中用戶標(biāo)識符的作用Top76局部變量的定義及其作用域與生存期Top77全局變量的定義及其作用域與生存期Company LogoTop76局部變量的定義及其作用域與生存期考點(diǎn)局部變量:在函數(shù)或復(fù)合語句內(nèi)容定義的變量,按存儲類別分為:自動(dòng)型寄存器型靜態(tài)型外部參照型局部變量的作用域與生存期靜態(tài)局部變量是在程序開始時(shí)就分配了固定的存儲空間,在程序運(yùn)行時(shí)并不釋放,直到程序運(yùn)行結(jié)束才釋放它所占的空間。靜態(tài)局部變量只能在本程序文件中使用,對未賦值的靜態(tài)局部變量,C編譯程序自動(dòng)對其賦初值為: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月)有以下程序,程序運(yùn)行后的結(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月)以下程序的運(yùn)行結(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考點(diǎn)全局變量:在函數(shù)之外定義的變量稱為外部變量,外部變量是全局變量,可以為本程序中所有其它函數(shù)所公有。有效范圍是從定義變量的位置開始到本源文件結(jié)束。全局變量的作用域與生存期全局變量只有靜態(tài)類別??梢允褂胑xtern 和static兩種說明符。Top76全局變量的定義及其作用域與生存期全局變量的生存期是整個(gè)程序的運(yùn)行期間,因此在
5、整個(gè)運(yùn)行期間都占內(nèi)存。若全局變量和某一函數(shù)的局部變量重名,則在該函數(shù)中,全局變量被屏蔽。Company Logo真題分析(2013年3月)Top76全局變量的定義及其作用域與生存期DCompany Logo真題分析(2013年3月)Top76全局變量的定義及其作用域與生存期DCompany Logo真題分析(2007年4月)以下程序的運(yùn)行結(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月)有以下程序,程序運(yùn)行后的輸出結(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ù)處理和動(dòng)態(tài)存儲分配Top77 不帶參數(shù)的宏替換Top78 帶參數(shù)的宏替換Top79 對編譯預(yù)處理的一些說明Top80 動(dòng)態(tài)存儲分配Company LogoTop77 不帶參數(shù)的宏替換考點(diǎn)一般定義形式為:#define 宏名 字符串說明:宏定義與一般變量定義含義不同,它只作字符替換,并不分配內(nèi)存空間,也不能認(rèn)為是賦值?!?”表示這是一要預(yù)處理命令define為宏定義命令宏名為一個(gè)合法的標(biāo)識符字符串可以是常數(shù)、表達(dá)式或語句,或是多條語句2.宏展開:預(yù)編譯時(shí),用宏體替換宏名-不作語法檢查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ù)后計(jì)算半徑為r 的圓面積s。程序在編譯時(shí)出錯(cuò),出錯(cuò)的原因是A、注釋語句書寫位置錯(cuò)誤B、存放圓半徑的變量r 不應(yīng)該定義為整型C、輸出語句中格式描述符非法D、計(jì)算圓面積的賦值語句中使用了非法變量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、編譯出錯(cuò)#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相當(dāng)于定義了不帶參宏S,代表字符串“(r) PI*r*r” 宏展開:形參用實(shí)參換,其它字符保留宏體及各形參外一般應(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月)有一個(gè)名為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);下面針對該程序的敘述正確的是:編譯出錯(cuò)A.運(yùn)行出錯(cuò)D.運(yùn)行結(jié)果為y=0C.運(yùn)行結(jié)果為y=6B.DCompany LogoTop78 帶參數(shù)的宏替換真題分析(2005年9月)有下列程序,程序運(yùn)行后的輸出結(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、宏替換不占用程序的運(yùn)行時(shí)間DCompany LogoTop79 對編譯預(yù)處理的一些說明考點(diǎn):在C語言中,凡是以“#”開頭的行,都稱為“編譯預(yù)處理”命令行種類宏定義 #define文件包含 #include條件編譯 #if-#else-#endif等格式:“#”開頭占單獨(dú)書寫行語句尾不加分號Company LogoTop79 對編譯預(yù)處理的一些說明真題分析(2013年3月)BCompany LogoTop79 對編譯預(yù)處理的一些說
14、明真題分析(2013年3月)DCompany LogoTop79 對編譯預(yù)處理的一些說明真題分析(2006年4月)下列敘述中正確的是A、預(yù)處理命令行必須位于C 源程序的起始位置B、在C 語言中,預(yù)處理命令行都以#開頭C、每個(gè)C 程序必須在開頭包含預(yù)處理命令行:#includeD、 C 語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能BCompany LogoTop80動(dòng)態(tài)存儲分配靜態(tài)存儲分配:用于存儲數(shù)據(jù)的變量和數(shù)組都是在說明部分定義的,C編譯系統(tǒng)通過定義語句了解它們所需要的空間,并預(yù)先為其分配適當(dāng)?shù)拇鎯卧?。這些存儲單元一經(jīng),在變量或數(shù)組的生存期內(nèi)是固定不變的。動(dòng)態(tài)存儲分配:在程序執(zhí)行期間,通過”
15、申請“得到指定的內(nèi)存單元;當(dāng)有閑置不用的空間時(shí),可以隨時(shí)將其釋放,由系統(tǒng)另作它用。四個(gè)和動(dòng)態(tài)存儲分配有關(guān)的函數(shù):(1)malloc(2)calloc(3)free(4)realloc使用這些函數(shù)時(shí),要包含頭文件”stdlib.h“Company LogoTop80 動(dòng)態(tài)存儲分配(1)malloc函數(shù),其返回值類型為void。調(diào)用形式為:malloc(size)要求size的類型為unsigned int作用:用來分配size個(gè)字節(jié)的存儲空間,返回一個(gè)指針指向存儲區(qū)首地址的基類型為void的地址。例:short int *pi;float *pf;pi=(short *)malloc(2);pf
16、=(float *)malloc(4);說明:(1)因?yàn)閙alloc是void型的,所以需要強(qiáng)制轉(zhuǎn)換類型(2)強(qiáng)制轉(zhuǎn)換類型括號中的不可少,否則就變成了普通類型。if(pi!=NULL) *p=6;if(pf!=NULL) *pf=3.863.8pipfCompany LogoTop80 動(dòng)態(tài)存儲分配注意:由動(dòng)態(tài)存儲分配得到的存儲單元沒有名字,只能靠指針來引用它。一旦指針改變指向,則原存儲單元及所存數(shù)據(jù)都將無法引用。通過調(diào)用malloc函數(shù)所分配的單元?jiǎng)討B(tài)存儲單元中沒有確定的初值。在動(dòng)態(tài)申請存儲空間時(shí),若不能確定數(shù)據(jù)類型所占字節(jié)數(shù),可通過sizeof運(yùn)算符來求得。例如: pi=(int *)ma
17、lloc(sizeof(int); pf=(float *)malloc(sizeof(float);由系統(tǒng)來計(jì)算指定類型所占的字節(jié)數(shù),有利于程序的移植。Company LogoTop80 動(dòng)態(tài)存儲分配(3)calloc函數(shù),返回值類型為void。調(diào)用形式:calloc(n,size)要求n和size都是unsigned int。作用:用來給n個(gè)同一類型的數(shù)據(jù)項(xiàng)分配連續(xù)的存儲空間,每個(gè)數(shù)據(jù)項(xiàng)長度為size字節(jié)。(2)free函數(shù),沒有返回值。調(diào)用形式為:free(p);p必須是指向由動(dòng)態(tài)存儲分配函數(shù)malloc或calloc分配的地址。作用:將使指針p所指的存儲空間釋放,使這部分空間重新歸系統(tǒng)
18、支配。Company Logo通過calloc函數(shù)所分配的存儲單元,系統(tǒng)自動(dòng)賦初值0。例如:char *ps;ps=(char *)calloc(10,sizeof(char);說明:以上函數(shù)調(diào)用語句開辟了10個(gè)連續(xù)的存儲單元,由ps指向存儲單元的首地址。每個(gè)單元可以存儲一個(gè)字符。用calloc函數(shù)開辟的動(dòng)態(tài)存儲單元相當(dāng)于開辟了一個(gè)一維數(shù)組。函數(shù)的第一個(gè)參數(shù)是數(shù)組的大小,第二個(gè)是數(shù)組元素的類型。函數(shù)的返回值就是數(shù)組的首地址。使用該函數(shù)分配的地址,同樣可以用函數(shù)free來釋放。Top80 動(dòng)態(tài)存儲分配Company LogoTop80 動(dòng)態(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指向同一個(gè)存儲單元40Company LogoTop80 動(dòng)態(tài)存儲分配真題分析(2005年9月)已有定義:double *p;,請寫出完整的語句,利用malloc 函數(shù)使p 指向一個(gè)雙精度型的動(dòng)態(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é)點(diǎn)的訪問Top87共用體類型數(shù)據(jù)的定義、初始化Top88共用體類型數(shù)據(jù)的引用Company Logo1.定義結(jié)構(gòu)體的一般形式:struct 結(jié)構(gòu)體變量標(biāo)識名類型名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)體類型說明之后進(jìn)行定義struct student char name8; char sex ; struct data birthday; float score4;std;8個(gè)字節(jié)1個(gè)字節(jié)6個(gè)字節(jié)16個(gè)字節(jié)namesexbirthdayscorestdTop81 結(jié)構(gòu)體變量的定義與初始化2、結(jié)構(gòu)體變量的定義和初始化Com
22、pany Logo(2).說明一個(gè)無名結(jié)構(gòu)體類型的同時(shí)進(jìn)行定義struct char name8; char sex ; struct data birthday; float score4;std;student省略結(jié)構(gòu)體變量名,通常用在不需要再次定義此類型結(jié)構(gòu)體變量的情況。用無名結(jié)構(gòu)體直接定義變量只能一次struct 類型標(biāo)識符 成員名; 類型標(biāo)識符 成員名; .變量名表列;Top81 結(jié)構(gòu)體變量的定義與初始化Company Logo(3).先說明結(jié)構(gòu)體變量類型,再單獨(dú)進(jìn)行變量定義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;初始化可用輸入語句或賦值語句來完成,或在定義時(shí)進(jìn)行初始化賦值。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)體變量,并同時(shí)為其成員year、month、day 依次賦初值2006、10、1:_struct DATA d=2006,10,1;Company LogoTop81 結(jié)構(gòu)體變量的定義與初始化真題分析(2005年4月)以下對結(jié)構(gòu)體類型變量td的定義中,錯(cuò)誤的是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ù)組和指針考點(diǎn)結(jié)構(gòu)體數(shù)組和指針的定義與結(jié)構(gòu)體變量一樣,對于結(jié)構(gòu)體數(shù)組的初始化,與前面數(shù)組賦初值的規(guī)則一樣,只是由于數(shù)組中的每個(gè)元素都是一個(gè)結(jié)構(gòu)體,因此通常將其成員的值依次放在一對大括號中,以便區(qū)分各個(gè)元素。Company LogoTop82 結(jié)構(gòu)體數(shù)組和指針2013-3ACompany LogoDCompany LogoTop82 結(jié)構(gòu)體數(shù)組和指針真題分析(2005年4月)下列程序運(yùn)行后的輸出結(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成員名(*指針變量名).成員名.稱為成員運(yùn)算符-稱為結(jié)構(gòu)指向運(yùn)算符Company Logo(2)對結(jié)構(gòu)體變量中的成員進(jìn)行操作例: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級運(yùn)算符: + - * &DCompany LogoTop83 結(jié)構(gòu)體變量的引用真題分析(2006年4月)有下列程序段,下列選項(xiàng)中表達(dá)式的值為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)有以下程序,程序運(yùn)行后的輸出結(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 類型名標(biāo)識符;例:typedef int INTEGER;INTEGER m,n;m=9;n=0;習(xí)慣用大于字母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ù)編譯時(shí)處理 編譯時(shí)處理簡單字符置換 為已有類型命
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;語句出錯(cuò)
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)體類型-鏈表例:一個(gè)簡單的單鏈表#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é)點(diǎn)相連*/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é)點(diǎn)的類型定義:struct slistint data;struct slist *next;typedef struct slist SLIST;/0head單向鏈表的基本算法:鏈表建立、結(jié)點(diǎn)數(shù)據(jù)域的輸出、結(jié)點(diǎn)的插入和刪除。Top86 結(jié)構(gòu)體類型-鏈表Company LogoTop86 結(jié)構(gòu)體類型-鏈表真
34、題分析(2013年3月程序設(shè)計(jì)題)Company LogoTop86 結(jié)構(gòu)體類型-鏈表真題分析(2013年3月程序設(shè)計(jì)題)#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è)計(jì)題)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è)計(jì)題)N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭 節(jié)點(diǎn)。請編寫函數(shù)fun,它的功能是:找出學(xué)生的最高分,由函數(shù)值返回。 注意: 部分源程序在文件PROG1.C文件中。 請勿改動(dòng)主函數(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è)計(jì)題)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)成一個(gè)如圖所示的帶頭結(jié)點(diǎn)的單向鏈表,在結(jié)點(diǎn)的數(shù)據(jù)域中放入了具有兩個(gè)字符的字符串。Disp()函數(shù)的功能是顯示輸出該單鏈表中所有結(jié)點(diǎn)中的字符串。請?zhí)羁胀瓿蒬isp()函數(shù)Company LogoTop86 結(jié)構(gòu)體類型-鏈表#include typedef struct node /*鏈表結(jié)點(diǎn)結(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é)點(diǎn)的單向鏈表結(jié)構(gòu),指針變量s、p、q 均已正確定義,并用于指向鏈表結(jié)點(diǎn),指針變量s 總是作為頭指針指向鏈表的第一個(gè)結(jié)點(diǎn).若有下列程序
41、段q=s; s=s-next; p=s;while (p-next) p=p-next;p-next=q; q-next=NULL;該程序段實(shí)現(xiàn)的功能是( )。B、首結(jié)點(diǎn)成為尾結(jié)點(diǎn)C、尾結(jié)點(diǎn)成為首結(jié)點(diǎn)A、刪除首結(jié)點(diǎn)D、刪除尾結(jié)點(diǎn)BCompany LogoTop86 結(jié)構(gòu)體類型-鏈表真題分析(2005年4月)有下列結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r 分別指向此鏈表中的三個(gè)連續(xù)結(jié)點(diǎn)struct nodeint data;struct node *next;*p,*q,*r;Company LogoTop86 結(jié)構(gòu)體類型-鏈表現(xiàn)要將q 所指結(jié)點(diǎn)從鏈表中刪除,同時(shí)要保持鏈表的連續(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)合體用途:使幾個(gè)不同類型的變量共占一段內(nèi)存(相互覆蓋)共用體類型定義定義形式:union 共用體名 類型標(biāo)識符 成員名; 類型標(biāo)識符 成員名; .;例 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月)若有下列說明和定義,下列敘述中錯(cuò)誤的是_A、 data 的每個(gè)成員起始地址都相同B、變量data 所占內(nèi)存字節(jié)數(shù)與成員c 所占字節(jié)數(shù)相等C、程序段:data.a=5;printf(%fn,data.c);輸出結(jié)果為5.000000D、 data 可以作為函數(shù)的實(shí)參union dt int a; char b; double c
44、;data;CCompany Logo第15章位運(yùn)算Top88位運(yùn)算符及簡單的位運(yùn)算Top89 位運(yùn)算符的優(yōu)先級Company LogoTop88位運(yùn)算符及簡單的位運(yùn)算C語言提供的6種位運(yùn)算符及其運(yùn)算功能運(yùn)算符含義優(yōu)先級按位求反1(高)右移2&按位與3按位異或4|按位或5(低)Company LogoTop88位運(yùn)算符及簡單的位運(yùn)算擴(kuò)展的賦值運(yùn)算符擴(kuò)展運(yùn)算符表達(dá)式等價(jià)的表達(dá)式a=2a=ab=nb=bn&a&=ba=a&ba=ba=ab|a|=ba=a|bCompany LogoTop88位運(yùn)算符及簡單的位運(yùn)算1.“按位取反”運(yùn)算是唯一一個(gè)單目運(yùn)算符,功能是按運(yùn)算對象的內(nèi)容按位取反。01按位取反
45、10例:0115八進(jìn)制數(shù)01151011001001001101按位取反二進(jìn)制數(shù)0262Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算2.“左移”運(yùn)算是雙目運(yùn)算符,左邊是運(yùn)算對象,右邊是整型表達(dá)式,代表左移的位數(shù)。左移時(shí),右端(低位)補(bǔ)0,左端(高位)移出的部分舍棄。例:char a=6,b;b=a2;6=110=00000110左移2位000110000024左移2位Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算小結(jié):(1)左移時(shí),若左端移出的部分不包含1,則每左移1位,相當(dāng)于乘以2.某些情況下,可以代替乘法運(yùn)算,加快運(yùn)算速度。(2)如果左端移出的部分包含1,這一特性就不
46、再合適了。例:a=64,b;b=a是雙目運(yùn)算符,左邊是運(yùn)算對象,右邊是整型表達(dá)式,代表左移的位數(shù)。右移時(shí),右端(低位)移出的部分舍棄。左端(高位)移入的二進(jìn)制數(shù)分兩種情況(因?yàn)樨?fù)數(shù)在機(jī)器內(nèi)用補(bǔ)碼表示)無符號整數(shù)和正整數(shù),高位補(bǔ)0;負(fù)整數(shù),高位補(bǔ)1例:a=8,b;b=a2;8=00001000左移2位00001000002右移2位Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算3.“右移”運(yùn)算例:a=-8,b;b=a2;-8右移2位111111111111100011-2右移2位=-0000000000001000=1111111111110111=1111111111111000111
47、1111111111000-8Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算小結(jié):(1)右移時(shí),和左移相對應(yīng),若右端移出的部分不包含有效數(shù)字1,則每移出1位,相當(dāng)于除以2.(2)如果左端移出的部分包含1,這一特性就不再合適了。Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算4.”按位與“運(yùn)算功能:把參加運(yùn)算的兩個(gè)數(shù)按對應(yīng)的二進(jìn)制位分別進(jìn)行“與”運(yùn)算,當(dāng)兩個(gè)相應(yīng)的位都是1時(shí),該位為1,否則為0.例:int a=12,b=10,c; c=a&b;12=0000110010=0000101000010000c=8Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算5.”按位異或
48、“運(yùn)算功能:把參加運(yùn)算的兩個(gè)數(shù)按對應(yīng)的二進(jìn)制位分別進(jìn)行“異味或”運(yùn)算,當(dāng)兩個(gè)相應(yīng)的位不同時(shí),該位為1,否則為0.例:int a=12,b=10,c; c=ab;12=0000110010=0000101001100000c=6結(jié)論:如果要使某位的數(shù)翻轉(zhuǎn),只要使其和1進(jìn)行“異或”操作;要使某位保持原數(shù),只要使其和0進(jìn)行異或操作。Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算例:char a=0152,若希望a的高4位不變,低4位取反,則如何操作?015201101010異或0000111110000110結(jié)果為0145Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算6.”按位或
49、“運(yùn)算功能:把參加運(yùn)算的兩個(gè)數(shù)按對應(yīng)的二進(jìn)制位分別進(jìn)行“或”運(yùn)算,當(dāng)兩個(gè)相應(yīng)的位都是0時(shí),該位為0,否則為1.例:int a=12,b=10,c; c=ab;12=0000110010=0000101001110000c=12結(jié)論:如果要使某一位上的數(shù)置成1,其余位不變,則將希望置1的位與1進(jìn)行“或”運(yùn)算,希望保持不變的位與0進(jìn)行“或”運(yùn)算。Company LogoTop89位運(yùn)算符及簡單的位運(yùn)算例:char a=0152,若希望a的高4位不變,低4位置1,則如何操作?015201101010或0000111111110110結(jié)果為0145Top89位運(yùn)算符及簡單的位運(yùn)算真題分析(2013年3
50、月)CTop89位運(yùn)算符及簡單的位運(yùn)算真題分析(2013年3月)ATop89位運(yùn)算符及簡單的位運(yùn)算真題分析(2013年3月)DTop89位運(yùn)算符及簡單的位運(yùn)算真題分析(2013年3月)DCompany LogoTop89位運(yùn)算符及簡單的位運(yùn)算真題分析(2007年4月)有以下程序,程序運(yùn)行后的輸出結(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位運(yùn)算符及簡單的位運(yùn)算真
51、題分析(2005年9月)下列程序的功能是進(jìn)行位運(yùn)算,程序運(yùn)行后的輸出結(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位運(yùn)算符及簡單的位運(yùn)算真題分析(2005年4月)下列程序的輸出結(jié)果是_A、0B、70C、35D、1main( ) int c=35; printf(%dn,c&c);CCompany LogoTop89位運(yùn)算符及簡單的位運(yùn)算真題分析(2007年4月)若變量已經(jīng)正確定義,則以下語句的輸
52、出結(jié)果是A、-1B、0C、1D、32s=32; s=32;printf(“%d”,s);BCompany LogoTop90 位運(yùn)算符的優(yōu)先級考點(diǎn)位運(yùn)算符只能作用于整型或字符型數(shù)據(jù),不能是實(shí)型數(shù)據(jù)。優(yōu)先級順序?yàn)椋?&|Company LogoTop90 位運(yùn)算符的優(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文件的定位與出錯(cuò)的檢測Company LogoTop91 C語言文件的相關(guān)概念
53、文件:存儲在外部介質(zhì)上數(shù)據(jù)的集合,是操作系統(tǒng)數(shù)據(jù)管理的單位。使用數(shù)據(jù)文件的目的1、數(shù)據(jù)文件的改動(dòng)不引起程序的改動(dòng)程序與數(shù)據(jù)分離2、不同程序可以訪問同一數(shù)據(jù)文件中的數(shù)據(jù)數(shù)據(jù)共享3、能長期保存程序運(yùn)行的中間數(shù)據(jù)或結(jié)果數(shù)據(jù)文件分類按文件的邏輯結(jié)構(gòu):記錄文件:由具有一定結(jié)構(gòu)的記錄組成(定長和不定長)流式文件:由一個(gè)個(gè)字符(字節(jié))數(shù)據(jù)順序組成按存儲介質(zhì):普通文件:存儲介質(zhì)文件(磁盤、磁帶等)設(shè)備文件:非存儲介質(zhì)(鍵盤、顯示器、打印機(jī)等)按數(shù)據(jù)的組織形式:文本文件: ASCII文件,每個(gè)字節(jié)存放一個(gè)字符的ASCII碼二進(jìn)制文件:數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣存放Company Logo如 int型數(shù)100
54、000010011100010000內(nèi)存存儲形式0010011100010000二進(jìn)制形式00 00000011000000110000ASCII形式文本文件特點(diǎn):存儲量大、速度慢、便于對字符操作二進(jìn)制文件特點(diǎn):存儲量小、速度快、便于存放中間結(jié)果Top91 C語言文件的相關(guān)概念Company LogoTop91 C語言文件的相關(guān)概念真題分析(2006年9月)下列敘述中正確的是A、C 語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)B、打開一個(gè)已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋C、在一個(gè)程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1 個(gè)數(shù)據(jù)D、當(dāng)對文
55、件的讀(寫)操作完成之后, 必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失DCompany LogoTop91 C語言文件的相關(guān)概念真題分析(2005年9月)下列敘述中錯(cuò)誤的是A、在C 語言中,對二進(jìn)制文件的訪問速度比文本文件快B、在C 語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲數(shù)據(jù)C、語句FILE fp;定義了一個(gè)名為fp 的文件指針D、C 語言中的文本文件以ASC碼形式存儲數(shù)據(jù)CCompany Logo文件結(jié)構(gòu)體FILE 緩沖文件系統(tǒng)為每個(gè)正使用的文件在內(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; /文件當(dāng)前讀寫位置 char *_buff; /文件緩沖區(qū)位置FILE;Top92 文件的打開與關(guān)閉Top92 文件的打開與關(guān)閉(2013-3)DCompany Logo文件類型指針指針變量說明: FILE *fp;用法:文件打開時(shí),系統(tǒng)自動(dòng)建立文件結(jié)構(gòu)體,并把指向它的指針返回來,程序通過這個(gè)指針獲得文件信息,訪問文件文件關(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+” (讀寫)為輸入打開一個(gè)文本/二進(jìn)制文件為輸出打開或建立一個(gè)文本/二進(jìn)制文件為讀/寫打開一個(gè)文本/二進(jìn)制文件為讀/寫建立一個(gè)文本/二進(jìn)制文件為讀/寫打開或建立一個(gè)文本/二進(jìn)制文件向文本/二進(jìn)制文件尾追加數(shù)據(jù)文件使用方式含義Company LogoTop92 文件的打開與關(guān)閉文件關(guān)閉fclose函數(shù)原型:int fclose(FILE *fp)作用:使文件指針變量與文件“脫鉤”,釋放文件結(jié)構(gòu)體和文件指針功能:關(guān)
59、閉fp指向的文件返值:正常關(guān)閉為0;出錯(cuò)時(shí),非0磁盤文件輸出文件緩沖區(qū)輸入文件緩沖區(qū)程序數(shù)據(jù)區(qū)a緩沖文件系統(tǒng):fclose不關(guān)閉文件可能會丟失數(shù)據(jù)Top92 文件的打開與關(guān)閉Company Logo給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。 請?jiān)诔绦虻南聞澗€處填入正確的內(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)六年級口算題卡
- 小學(xué)六年級800道數(shù)學(xué)口算題
- 2025年沈陽貨運(yùn)從業(yè)資格試題及答案詳解
- 2025年太原貨車從業(yè)資格證答題技巧
- 監(jiān)控錄像管理協(xié)議書(2篇)
- 2024-2025學(xué)年高中地理課時(shí)分層作業(yè)13噪聲污染及其防治含解析湘教版選修6
- 2024-2025學(xué)年八年級數(shù)學(xué)上冊第十一章三角形11.2與三角形有關(guān)的角作業(yè)設(shè)計(jì)新版新人教版
- 人事行政助理年終工作總結(jié)
- 公司辦公室工作總結(jié)
- 人力資源部年度個(gè)人工作計(jì)劃
- 某縣城區(qū)地下綜合管廊建設(shè)工程項(xiàng)目可行性實(shí)施報(bào)告
- 《架空輸電線路導(dǎo)線舞動(dòng)風(fēng)偏故障告警系統(tǒng)技術(shù)導(dǎo)則》
- 2024年計(jì)算機(jī)二級WPS考試題庫
- JJF(京) 92-2022 激光標(biāo)線儀校準(zhǔn)規(guī)范
- 普惠金融政策解讀
- 2024年疾控中心支部工作計(jì)劃范本
- 廣東省廣州黃埔區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 法理學(xué)課件馬工程
- 《無菌檢查培訓(xùn)》課件
- 2024-2030年中國香菇行業(yè)銷售狀況及供需前景預(yù)測報(bào)告
- 高中英語必背3500單詞表(完整版)
評論
0/150
提交評論