




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)知識(shí)點(diǎn)及示例知識(shí)點(diǎn)1.C語言的函數(shù)由函數(shù)首部與函數(shù)體組成。示例1:一個(gè)C語言函數(shù)可以沒有函數(shù)首部。 參考答案:×示例2:在定義C語言函數(shù)時(shí),應(yīng)包含函數(shù)
與函數(shù)體。參考答案:首部知識(shí)點(diǎn)2.C語言函數(shù)可以沒有返回值與沒有參數(shù)。示例3:C語言函數(shù)必須有返回值。參考答案:×示例4:C語言函數(shù)不一定有參數(shù)。參考答案:√知識(shí)點(diǎn)3:一個(gè)C語言程序必須包含main函數(shù)(主函數(shù)),在運(yùn)行C程序時(shí),從主函數(shù)開始,到主函數(shù)結(jié)束。示例5:C語言程序可以沒有主函數(shù)。參考答案:×示例6:C語言程序在運(yùn)行時(shí)可以從任意一個(gè)函數(shù)開始。將所有函數(shù)運(yùn)行完畢后結(jié)束。參考答案:×知識(shí)點(diǎn)4:double(*ptr)()用于聲明指向函數(shù)的指針,而double*ptr()用于聲明一個(gè)返回指針的函數(shù)。示例7:double(*f)()中的f表示指針函數(shù)。參考答案:×示例8:int*ptr()用于聲明一個(gè)
。參考答案:返回指針的函數(shù)知識(shí)點(diǎn)5:在函數(shù)內(nèi)部定義的某個(gè)局部變量如果用auto加以聲明,則這樣的變量為自動(dòng)變量;并且函數(shù)形參也是一種自動(dòng)變量。示例9:由
聲明的局部變量為自動(dòng)變量。參考答案:auto示例10:函數(shù)形參不是一種自動(dòng)變量。參考答案:×知識(shí)點(diǎn)6:用static加以修飾的變量為靜態(tài)變量。示例11:用關(guān)鍵字
聲明的變量為靜態(tài)變量。參考答案:static知識(shí)點(diǎn)7:在函數(shù)體內(nèi),如果某個(gè)全局變量與局部變量同名,則局部變量在函數(shù)體內(nèi)將屏蔽掉全局變量。示例12:在函數(shù)體內(nèi),如果某個(gè)全局變量與局部變量同名,則全局變量在函數(shù)體內(nèi)將屏蔽掉局部變量。參考答案:×知識(shí)點(diǎn)8:在C語言中一個(gè)函數(shù)調(diào)用自已(直接或間接地調(diào)用自已),這樣的函數(shù)稱為遞歸函數(shù)。示例13:C語言不允許一個(gè)函數(shù)調(diào)用這個(gè)函數(shù)本身。參考答案:×知識(shí)點(diǎn)9:a++與a--為后綴形式的自加與自減運(yùn)算符,其特點(diǎn)是先將a的值取出參與表達(dá)式進(jìn)行運(yùn)算,然后再將a的值自加1或自減1;++a與--a為前綴形式的自加與自減運(yùn)算符,其特點(diǎn)是先將a的值自加或自減1,然后再將a的值取出參與表達(dá)式進(jìn)行運(yùn)算。示例14:設(shè)inti=2;則表達(dá)式i+++6的值為
。參考答案:8示例15:設(shè)inti=2;則表達(dá)式--i+7的值為
。參考答案:8示例16:閱讀下面程序。#include<stdio.h>intmain(void){ intm=6; if(m-->6) printf("%d\n",m--); elseprintf("%d\n",m++);
return0;}程序的運(yùn)行結(jié)果為:參考答案:5點(diǎn)評(píng):關(guān)系表達(dá)式“m-->6”將先取出m的值6參加關(guān)系比較操作,所以結(jié)果為假,然后m的值再自減1,結(jié)果m的值變?yōu)?;由于“m-->6”為假,所以將執(zhí)行“printf("%d\n",m++);”,最后顯示5。知識(shí)點(diǎn)10:系統(tǒng)要為結(jié)構(gòu)體的每個(gè)成員分配相應(yīng)的存儲(chǔ)空間,每個(gè)成員有自己的空間;而系統(tǒng)為共用體分配存儲(chǔ)空間是按最大的一個(gè)成員占用的存儲(chǔ)空間來進(jìn)行分配,所有成員共享這個(gè)空間。示例17:有如下聲明,則sizeof(elem)的值為
。unionDataType{ longints; charstr[4]; doubled;}elem;參考答案:8示例18:有如下類型聲明,則sizeof(DataType)的值為
。structDataType{ longints; charstr[4]; doubled;}參考答案:16知識(shí)點(diǎn)11:宏可以帶有參數(shù),宏定義過程中不像函數(shù)那樣要進(jìn)行參數(shù)值的計(jì)算、傳遞及結(jié)果返回等操作;宏只是簡單進(jìn)行字符替換,而不進(jìn)行計(jì)算。示例19:有宏定義#defineMAX(x,y)x>y?x:y,則MAX(a+b,a-b)將被替換為:
參考答案:a+b>a-b?a+b:a-b知識(shí)點(diǎn)12:通過關(guān)鍵定extern聲明將外部變量的作用域在本文件范圍內(nèi)擴(kuò)充也可將用作域擴(kuò)充到其他程序文件中。示例20:用關(guān)鍵字extern聲明的變量為
。參考答案:外部變量示例21:關(guān)鍵字extern聲明外部變量。參考答案:√知識(shí)點(diǎn)13:自動(dòng)變量的作用域?yàn)槎x它的函數(shù)體。示例22:自動(dòng)變量的作用域?yàn)槎x它的程序文件。參考答案:×知識(shí)點(diǎn)14:靜態(tài)局部變量用static關(guān)鍵字加以修飾,其特點(diǎn)是函數(shù)撤消后,變量的值仍被保留。示例23:定義靜態(tài)局部變量的函數(shù)執(zhí)行結(jié)束后,變量的值仍被保留。參考答案:√知識(shí)點(diǎn)15:枚舉類型的變量的值只能是指定的若干個(gè)標(biāo)識(shí)符之一。示例24:枚舉類型的變量的值可以為任意標(biāo)識(shí)符。參考答案:×示例25:如下類型聲明與賦值語句合法的。enumColorName{red,yellow,blue,white,black}color;color=green;參考答案:×知識(shí)點(diǎn)16:如指針p指向變量u,則可用*p引用u。示例26:有變量定義與賦值語句:inta=168,*ptr=&a;則*ptr的值為
。參考答案:168知識(shí)點(diǎn)17:條件表達(dá)式也稱問號(hào)表達(dá)式,它的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3它的操作過程為:若表達(dá)式1的值為真(非0),則以表達(dá)式2的值作為該條件表達(dá)式的值;否則取表達(dá)式3的值作為該條件表達(dá)式的值。示例27:有變量定義語句:inta=0;則表達(dá)式a?6:8的值為
。參考答案:8知識(shí)點(diǎn)18:逗號(hào)表達(dá)式的一般形式為:表達(dá)式1,表達(dá)式2,…,表達(dá)式n它的操作過程為:依次計(jì)算表達(dá)式1,表達(dá)式2,…,表達(dá)式n的值,最后以表達(dá)式n的值作為該逗號(hào)表達(dá)式的值。示例28:表達(dá)式(x=0,x++*5,x+168)的值為
。參考答案:169知識(shí)點(diǎn)19:C語言數(shù)組元素的下標(biāo)從0開始。示例29:已定義有數(shù)組:inta[]={1,2,3,4,5,6};則有a[3]的值為
。參考答案:4示例30:已定義有數(shù)組:inta[3][3]={1,2,3,4,5,6,7,8,9};則有a[1][2]的值為
。參考答案:6點(diǎn)評(píng):可將a定義改為:inta[3][3]={ 1,2,3, 4,5,6, 7,8,9};這樣很容易看出a[1][2]的值為6。知識(shí)點(diǎn)19:C語言數(shù)組元素的下標(biāo)從0開始。示例31:有如下程序:#include<stdio.h>intmain(void){ inti,a[3][3]={0,1,2,3,4,5,6,7,8}; ints=0; for(i=0;i<3;i++)s+=a[i][i]; printf("%d\n",s); return0;}運(yùn)行結(jié)果是:參考答案:12點(diǎn)評(píng):for(i=0;i<3;i++)s+=a[i][i];用于求對(duì)角線上元之和,可將a定義改為:inta[3][3]={ 0,1,2, 3,4,5, 6,7,8};這樣很容易對(duì)角線元素之和為12。知識(shí)點(diǎn)20:設(shè)inta[6];則a指向a[0],a+1指向a[1],…,a+i指向a[i],…,存在關(guān)系:*(a+i)=a[i]。示例32:已定義有數(shù)組:inta[9]={1,2,3,4,5,6,7,8,9};則有*(a+8)的值為
。參考答案:9知識(shí)點(diǎn)21:可以將二維數(shù)組解釋為以一維數(shù)組為元素的一維數(shù)組,例如inta[3][4]可看成由a[0],a[1],a[2]所組成,顯然a指向a[0],a+i指向a[i],所以*(a+i)=a[i],此處a[i]既是廣義一維數(shù)組a的一個(gè)元素,又代表一個(gè)長度為4的整型一維數(shù)組,此數(shù)組由{a[i][0],a[i][1],a[i][2],a[i][3]}組成。因此a[i]指向a[i][0],a[i]+j指向a[i][j],所以*(a[i]+j)=a[i][j],進(jìn)而存在關(guān)系:*(*(a+i)+j)=*(a[i]+j)=a[i][j]。示例33:有數(shù)組定義:inta[3][3]={1,2,3,4,5,6,7,8,9};則*(*(a+1)+2)的值為
。參考答案:6點(diǎn)評(píng):*(*(a+1)+2)=a[1][2],將a的定義改為:inta[3][3]={ 1,2,3, 4,5,6, 7,8,9};這樣容易知道*(*(a+1)+2)的值為6。知識(shí)點(diǎn)22:可以將二維數(shù)組解釋為以一維數(shù)組為元素的一維數(shù)組,例如inta[3][4]可看成由a[0],a[1],a[2]所組成,顯然a指向a[0],a+i指向a[i],此處a[i]既是廣義一維數(shù)組a的一個(gè)元素,又代表一個(gè)長度為4的整型一維數(shù)組。如int(*p)[4];則p是指向一個(gè)長度為4的整型一維數(shù)組,可將賦值操作:p=a;存在關(guān)系:*(*(p+i)+j)=*(p[i]+j)=p[i][j]=a[i][j]=*(*(a+i)+j)=*(a[i]+j)示例34:假如有下面類型定義與賦值語句,則p[1][2]的值為
。inta[3][3]={ 1,2,3, 4,5,6, 7,8,9};int(*p)[3];p=a;參考答案:6示例35:假如有下面類型定義與賦值語句,則*(*(p+1)+2)的值為
。inta[3][3]={1,2,3,4,5,6,7,8,9};int(*p)[3];p=a;參考答案:6知識(shí)點(diǎn)23:用關(guān)鍵字static定義靜態(tài)全局變量,靜態(tài)全局變量的的作用域?yàn)槎x它所在的程序文件。示例36:靜態(tài)全局變量的的作用域?yàn)檎麄€(gè)程序。參考答案:×知識(shí)點(diǎn)24:用static修飾一個(gè)局部變量,這樣的變量稱為局部靜態(tài)變量,當(dāng)定義它的函數(shù)被調(diào)用后,本次函數(shù)調(diào)用獲得的值作為下次調(diào)用的初始值。示例37:局部靜態(tài)變量在定義時(shí)用
加以修飾。參考答案:static示例38:局部靜態(tài)變量所在的函數(shù)被調(diào)用后,本次函數(shù)調(diào)用獲得的值不作為下次調(diào)用的初始值。參考答案:×知識(shí)點(diǎn)25:如果多維數(shù)組在定義時(shí)初始化,則只可省略第1維的大小。示例39:后面定義二維數(shù)組是合法的,inta[3][]={1,2,3,4,5,6,7,8,9};參考答案:×示例40:可定義二維數(shù)組:.inta[][3];參考答案:×點(diǎn)評(píng):未初始化數(shù)組,無法確定第1維的大小。知識(shí)點(diǎn)26:C語言的賦值號(hào)“=”為賦值運(yùn)算符,C語言的判斷條件可為一般表達(dá)式,當(dāng)表達(dá)式值為0時(shí)表示條件為假,表達(dá)式值非0時(shí)表示條件為為真。示例41:若有變量說明intch;則while((ch=getchar())!='\n');是正確的C語句。參考答案:√示例42:若有變量說明intc,ch;則while(c=ch=getchar());是正確的C語句。參考答案:√知識(shí)點(diǎn)27:指針變量用于存儲(chǔ)地址值,可被初始化為已定義變量的地址。示例43:charc,*ptr=&c;是正確的C變量說明。參考答案:√示例44:char*ptr=&c,c;是正確的C變量說明。參考答案:×點(diǎn)評(píng):指針ptr被初始化為變量c的地址時(shí),變量c還未定義,所以將出現(xiàn)編譯時(shí)錯(cuò)誤。知識(shí)點(diǎn)28:當(dāng)a與b為整型量時(shí),a/b的值也變整型量,為a除以b的商。示例45:如x為float類型,則x=1,x+11/6的值是3.0。參考答案:×點(diǎn)評(píng):11/6的值為11除以6的商1,所以逗號(hào)表達(dá)式x=1,x+11/6值為最后一個(gè)表達(dá)式x+11/6的值,也就是2.0。知識(shí)點(diǎn)29:對(duì)于如下的for循環(huán)結(jié)構(gòu),當(dāng)表達(dá)式2值非0時(shí),或表達(dá)式2為空時(shí),將繼續(xù)循環(huán)。for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體示例46:for(;;);將循環(huán)無窮多次。參考答案:√示例47:for(inti=0;i=1;i++);只循環(huán)2次。參考答案:×點(diǎn)評(píng):本示例中for循環(huán)中的表達(dá)式2為“i=1”,其值為1,表示邏輯真,所以將循環(huán)無窮多次。知識(shí)點(diǎn)30:對(duì)系統(tǒng)有特殊意義的名詞稱為關(guān)鍵字,應(yīng)記住常用的關(guān)鍵字,例如:auto,break,case,char,do,double,else,enum,extern,float,for,if,int,long,register,return,short,unsigned,static,struct,switch,typedef,union,void,while。示例48:void和static在都是C語言的關(guān)鍵字。參考答案:√知識(shí)點(diǎn)31:float(*p)();定義的p為指向函數(shù)的指針,而float*p();表示p為返回指針的函數(shù)。示例49:int(*p)();定義的p為返回指針的函數(shù)。參考答案:×點(diǎn)評(píng):定義中的(*p)表示p為指針,定義中的其它部分float
(*p)()(用粗體加下劃線表示)指示指針指向函數(shù)。示例50:int*p();定義的p為返回指針的函數(shù)。參考答案:√示例51:int(*p)();定義的p為
。參考答案:指向函數(shù)的指針知識(shí)點(diǎn)32:C語言的函數(shù)名為函數(shù)代碼在內(nèi)存中的起始地址,可被賦值給指向函數(shù)的指針。示例52:有如下聲明:intfun(char);int(*pf)(char);則語句pf=fun;是正確的。參考答案:√示例53:有如下聲明:floatfun(char);int(*pf)(char);則語句pf=fun;是正確的。參考答案:×點(diǎn)評(píng):由于fun()為返回浮點(diǎn)數(shù)的函數(shù),而pf為指向返回整數(shù)的函數(shù)的指針,兩者所表示的函數(shù)類型不同,所以賦值語句pf=fun;是錯(cuò)誤的。知識(shí)點(diǎn)33:對(duì)于C語言的邏輯非運(yùn)算“!”,當(dāng)x為真(也就是x!=0)時(shí),!x為假(也就是!x==0);當(dāng)x為假(也就是x==0)時(shí),!x為真(也就是!x==1);為提高可讀性,在編程時(shí),當(dāng)!x作為條件時(shí),最好寫為x==0;示例54:“!x”與“x==0”等價(jià)。參考答案:√示例55:如下的while循環(huán)語句將循環(huán)無窮多次。intn=1;while(!n);參考答案:×點(diǎn)評(píng):由于n的值為1,表示真,所以!n為假,從而while循環(huán)語句一次也不循環(huán)。知識(shí)點(diǎn)33:對(duì)于C語言的邏輯非運(yùn)算“!”,當(dāng)x為真(也就是x!=0)時(shí),!x為假(也就是!x==0);當(dāng)x為假(也就是x==0)時(shí),!x為真(也就是!x==1);為提高可讀性,在編程時(shí),當(dāng)!x作為條件時(shí),最好寫為x==0;示例56:閱讀下面程序。#include<stdio.h>intmain(void){ intx=0; do{ printf("%d\n",x++); }while(!x); return0;}程序的運(yùn)行結(jié)果為:參考答案:0點(diǎn)評(píng):第1次循環(huán)時(shí),x初值為0,所以將顯示0,然后x自加1變?yōu)?,這時(shí)“!x”為假,結(jié)束循環(huán)。知識(shí)點(diǎn)33:對(duì)于C語言的邏輯非運(yùn)算“!”,當(dāng)x為真(也就是x!=0)時(shí),!x為假(也就是!x==0);當(dāng)x為假(也就是x==0)時(shí),!x為真(也就是!x==1);為提高可讀性,在編程時(shí),當(dāng)!x作為條件時(shí),最好寫為x==0;示例57:閱讀下面程序。#include<stdio.h>intmain(void){ intx=-1; do{ }while(x++); printf("%d\n",x); return0;}程序的運(yùn)行結(jié)果為:參考答案:1點(diǎn)評(píng):第1次循環(huán)時(shí),條件“x++”取值-1,表示條件為真,然后x值自加1,x值變?yōu)?;第2次循環(huán)時(shí),條件“x++”取值0,表示條件為假,然后x值自加1,x值變?yōu)?,結(jié)束循環(huán)。知識(shí)點(diǎn)34:對(duì)于ifelse結(jié)構(gòu),else一般與最接它的if相匹配,編程時(shí)最好采用恰當(dāng)?shù)目s進(jìn)格式。示例58:有如下程序:#include<stdio.h>intmain(void){intx=16,y=30,z=40,flag=9,p=80;
if(x>y)if(z>flag)x=x+z;elseif(!p)x=p+flag;elsex=y+z+p;printf("%d\n",x); return0;}運(yùn)行結(jié)果是:參考答案:16點(diǎn)評(píng):上面程序ifelse結(jié)構(gòu)縮進(jìn)格式恰當(dāng),容易看出else與if的匹配關(guān)系,由于關(guān)系表達(dá)式“x>y”為假,所以直接出跳if結(jié)構(gòu),顯示x的值16。知識(shí)點(diǎn)35:簡單遞歸函數(shù)通常對(duì)應(yīng)數(shù)學(xué)中遞推式,可簡單地將遞推式中的遞推條件用if語句表示來進(jìn)行編程。示例59:試用遞歸編程實(shí)現(xiàn)求階乘n!的函數(shù),并編寫測(cè)試程序。分析:求階乘函數(shù)f(n)=n!=1*2*…*n可用遞推式表示如下:具體遞歸函數(shù)及測(cè)試程序如下:#include<stdio.h>intf(intn){ if(n==0)return1; elsereturnn*f(n-1);}intmain(void){ printf("%d\n",f(6)); return0;}知識(shí)點(diǎn)35:簡單遞歸函數(shù)通常對(duì)應(yīng)數(shù)學(xué)中遞推式,可簡單地將遞推式中的遞推條件用if語句表示來進(jìn)行編程。示例60:對(duì)于Fibonacci數(shù)列:0,1,1,2,3,5,8,13,21,34,…f0=0,f1=1,當(dāng)n>1時(shí)fn=fn-1+fn-2,可用如下遞推式表示:試完成如下實(shí)現(xiàn)Fibonacci的遞歸函數(shù)及測(cè)試程序。#include<stdio.h>intf(intn){ if([1])return0; elseif([2])return1; elsereturnf(n-1)+f(n-2);}intmain(void){ printf("%d\n",f(6)); return0;}參考答案:[1]n==0 [2]n==1知識(shí)點(diǎn)36:對(duì)于字串符,C語言用字符數(shù)組或字符指針來表示,應(yīng)注意字符串以字符'\0'結(jié)束。示例61:有如下程序:#include<stdio.h>char*strcat(chars1[],chars2[]){ inti1=0,i2=0; while(s1[i1]!='\0')i1++; while((s1[i1++]=s2[i2++])!='\0');
returns1;}intmain(void){ chars1[60]="test"; printf("%s\n",strcat(s1,"strcatfunction!")); return0;}運(yùn)行結(jié)果是:參考答案:teststrcatfunction!點(diǎn)評(píng):while(s1[i1]!='\0')i1++;的作用為使i1為字符串s1的結(jié)束符'\0'的下標(biāo),while((s1[i1++]=s2[i2++])!='\0');的作用是將字符串s2連接到字符串s1的后面。知識(shí)點(diǎn)36:對(duì)于字串符,C語言用字符數(shù)組或字符指針來表示,應(yīng)注意字符串以字符'\0'結(jié)束。示例62:有如下程序:#include<stdio.h>char*strcpy(chars1[],chars2[]){ inti1=0,i2=0; while((s1[i1++]=s2[i2++])!='\0');
returns1;}intmain(void){ chars1[60]="test"; printf("%s\n",strcpy(s1,"strcpyfunction!")); return0;}運(yùn)行結(jié)果是:參考答案:strcpyfunction!知識(shí)點(diǎn)37:char*s[m];定義的s為元素值為字符指針的數(shù)組,由于數(shù)組名實(shí)際上為指針常量,所以s本質(zhì)上是一個(gè)二級(jí)指針常量;char**p;定義的p為二級(jí)指針變量,語句p=s;合法,這時(shí)p指向s[0],p+i指向s[i],所以p[i]=*(p+i)=s[i]。示例63:有如下程序:#include<stdio.h>intmain(void){ char*s[3]={"123","456","789"}; char**p=s; for(inti=0;i<3;i++)
printf("%s",*(p+i)); printf("\n");
return0;}運(yùn)行結(jié)果是:參考答案:123456789點(diǎn)評(píng):注意*(p+i)=p[i]=s[i]知識(shí)點(diǎn)38:switch語句執(zhí)行時(shí),首先計(jì)算switch的判斷表達(dá)式,并以此值去依次找與之相等的case標(biāo)號(hào)值,找到后就將流程轉(zhuǎn)到該標(biāo)號(hào)處,執(zhí)行后面各語句。示例64:有如下程序:#include<stdio.h>intmain(void){ intn=1,x=0,y=0; switch(n) { case0: y++; case1: x++; break; case2: x++; y++;
} printf("%d,%d\n",x,y);
return0;}運(yùn)行結(jié)果是:參考答案:1,0點(diǎn)評(píng):由于n=0,所以從case0后面的語句開始執(zhí)行,執(zhí)行到break時(shí)跳出switch結(jié)構(gòu)。知識(shí)點(diǎn)39:對(duì)于求n個(gè)數(shù)的最大值與最小值,通常掃描各個(gè)數(shù),分別記下當(dāng)前能得到的最大數(shù)與最小數(shù)。示例65:編程求一個(gè)數(shù)組中元素的最大值與最小值。參考答案:#include<stdio.h>intmain(void){ constintn=10; inta[]={10,20,16,18,9,6,8,89,1,12}; intmax=a[0],min=a[0]; for(inti=1;i<n;i++) { if(a[i]>max)max=a[i]; if(a[i]<min)min=a[i];
} printf("max=%dmin=%d\n",max,min);
return0;}知識(shí)點(diǎn)39:對(duì)于求n個(gè)數(shù)的最大值與最小值,通常掃描各個(gè)數(shù),分別記下當(dāng)前能得到的最大數(shù)與最小數(shù)。示例66:下面程序的功能為求10個(gè)數(shù)的最小值,試完成程序。#include<stdio.h>intmain(void){ intm; staticinta[10]={198,138,516,8,12,-3,-8,1,8,0}; m=[1]; for(inti=1;i<10;i++) if([2])m=a[i]; printf("%d\n",m); return0;}參考答案:[1]a[0] [2]a[i]<m知識(shí)點(diǎn)39:對(duì)于求n個(gè)數(shù)的最大值與最小值,通常掃描各個(gè)數(shù),分別記下當(dāng)前能得到的最大數(shù)與最小數(shù)。示例67:有如下程序:#include<stdio.h>intmain(void){ inta[3][3]={1,2,3,4,5,6,7,8,9}; intm=a[0][0]; for(inti=0;i<3;i++) for(intj=0;j<3;j++) if(a[i][j]<m)m=a[i][j]; printf("%d\n",m); return0;}運(yùn)行結(jié)果是:參考答案:1點(diǎn)評(píng):由if(a[i][j]<m)m=a[i][j];表示m為當(dāng)前各個(gè)數(shù)中的最小者。知識(shí)點(diǎn)40:通常求累加和時(shí),用于求和的變量被初始化為0。示例67:下面程序的功能是計(jì)算1+2+3+…+100,將程序補(bǔ)充完整。#include<stdio.h>intmain(void){ ints=[1]; for(intn=1;n<=100;n++) s=s+[2]; printf("%d\n",s); return0;}參考答案:[1]0 [2]n知識(shí)點(diǎn)41:通常求連乘積時(shí),用于求積的變量被初始化為1。示例67:下面程序的功能是計(jì)算階乘n!,將程序補(bǔ)充完整。#include<stdio.h>intf(intn){ intt=[1]; for(inti=1;i<=n;i++) t=t*[2];
returnt;}intmain(void){ printf("%d\n",f(6)); return0;}參考答案:[1]1 [2]i知識(shí)點(diǎn)41:通常求連乘積時(shí),用于求積的變量被初始化為1。示例68:編程通過函數(shù)計(jì)算數(shù)組中各元素的平均值。#include<stdio.h>floataverage(inta[],intn){ floats=0; for(inti=0;i<n;i++) s+=a[i]; returns/n;}intmain(void){ inta[6]={2,4,6,8,10,18}; floatmean; mean=average(a,6); printf("mean=%f\n",mean); return0;}知識(shí)點(diǎn)42:對(duì)于動(dòng)態(tài)內(nèi)存分配函數(shù)void*malloc(unsignedintsize);在編程時(shí)應(yīng)將函數(shù)強(qiáng)制轉(zhuǎn)換為特定指針類型,并用sizeof()函數(shù)求存儲(chǔ)單元所點(diǎn)空間大小。示例69:下面程序的功能為先建立線性鏈表,然后再顯示線性鏈表各元素的值,將程序補(bǔ)充完整。#include<stdio.h>#include<stdlib.h>typedefstructNode{ intdata; structNode*next;}Node;intmain(void){ Node*head=NULL,*rear=NULL,*p;//head表示頭指針,rear表尾指針,p為臨時(shí)指針變量
inta[]={1,2,3,4,5,6}; for(inti=0;i<6;i++) { //建立線性鏈表
p=([1])malloc([2])); p->data=a[i]; p->next=NULL; if(head==NULL) { //在空鏈表中插入節(jié)點(diǎn),所插入節(jié)點(diǎn)為惟一節(jié)點(diǎn)
head=rear=p; //頭尾指針指向同一節(jié)點(diǎn)
} else { //將p追加到rear所指示結(jié)點(diǎn)的后面
rear->next=p; //p為rear的后繼
rear=p; //p指向新的尾節(jié)點(diǎn)
} }知識(shí)點(diǎn)42:對(duì)于動(dòng)態(tài)內(nèi)存分配函數(shù)void*malloc(unsignedintsize);在編程時(shí)應(yīng)將函數(shù)強(qiáng)制轉(zhuǎn)換為特定指針類型,并用sizeof()函數(shù)求存儲(chǔ)單元所點(diǎn)空間大小。示例69:下面程序的功能為先建立線性鏈表,然后再顯示線性鏈表各元素的值,將程序補(bǔ)充完整。
p=[3]; //p指向第一個(gè)節(jié)點(diǎn)
while(p!=NULL) { //顯示線性鏈表
printf("%d",p->data); p=[4]; //p移向后繼
} printf("\n"); return0;}參考答案:[1]Node* [2]sizeof(Node) [3]head [4]p->next知識(shí)點(diǎn)43:C語言用%表示兩個(gè)整數(shù)的求余運(yùn)算,m%n==0表示m能被n所整除。示例70:編程實(shí)現(xiàn)輸出1000以內(nèi)能同時(shí)被5,7和11所整除的所有正整數(shù)。參考答案:#include<stdio.h>intmain(void){ for(intn=1;n<=1000;n++) { if(n%5==0&&n%7==0&&n%11==0) printf("%d",n); } printf("\n"); return0;}知識(shí)點(diǎn)44:在用getchar()函數(shù)輸入字符時(shí),換行符被當(dāng)著字符‘\n’被getchar()所接收。示例71:從鍵盤上連續(xù)輸入若干個(gè)字符(以回車換行符為結(jié)束標(biāo)記),統(tǒng)計(jì)其中包含的英文字母字符的個(gè)數(shù),數(shù)字字符的個(gè)數(shù),以及其他字符的個(gè)數(shù)。參考答案:#include<stdio.h>intmain(void){ intch=getchar(); intn_letter=0,n_digit=0,n_other=0; while(ch!='\n') { if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')n_letter++; elseif(ch>='0'&&ch<='9')n_digit++; elsen_other++; ch=getchar(); } printf("Letter:%dDigit:%dOther:%d\n",n_letter,n_digit,n_other); return0;}知識(shí)點(diǎn)44:在用getchar()函數(shù)輸入字符時(shí),換行符被當(dāng)著字符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 1218-2020固定資產(chǎn)投資項(xiàng)目節(jié)能后評(píng)價(jià)導(dǎo)則
- DB31/ 848-2014有色金屬壓力鑄造單位產(chǎn)品能源消耗限額
- 2024年電壓測(cè)量儀器項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- JAVA網(wǎng)絡(luò)編程試題及答案解析
- 直播平臺(tái)主播傭金結(jié)算標(biāo)準(zhǔn)補(bǔ)充合同
- 2025年中國半導(dǎo)體機(jī)器人自動(dòng)化行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 影視后期制作與海外發(fā)行服務(wù)合同
- 智能交通系統(tǒng)主體結(jié)構(gòu)施工與智能交通管理合同
- 澳大利亞移民臨時(shí)倉儲(chǔ)租賃及倉儲(chǔ)服務(wù)優(yōu)化合同
- 電視劇組群眾演員意外保障合同補(bǔ)充條款
- 機(jī)載直流用電設(shè)備電源特性要求及試驗(yàn)方法
- 自發(fā)冠脈夾層診療指南解讀
- 養(yǎng)老院老人入(出)院流程圖
- 健康照護(hù)教材課件匯總完整版ppt全套課件最全教學(xué)教程整本書電子教案全書教案課件合集
- 最新-臨時(shí)救助申請(qǐng)審核審批表模板
- 《有效溝通》PPT課件-(2)
- 三級(jí)醫(yī)院服務(wù)能力指南2022
- 家庭室內(nèi)裝飾裝修工程驗(yàn)收單
- 青春紅綠燈教學(xué)設(shè)計(jì)中小學(xué)心理健康心理游戲腳本
- 《城鎮(zhèn)土地使用稅納稅申報(bào)表》
- 三年級(jí)數(shù)學(xué)下冊(cè)口算脫式豎式練習(xí)題
評(píng)論
0/150
提交評(píng)論