期末復習 C語言知識點歸納_第1頁
期末復習 C語言知識點歸納_第2頁
期末復習 C語言知識點歸納_第3頁
期末復習 C語言知識點歸納_第4頁
期末復習 C語言知識點歸納_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

期末復習C語言知識點歸納

一、概述

1.一個c語言源程序可以由一個或多個函數組成,有且只有

1個nain()函數,可以放在程序中的任何位置.

2.一個C程序不論有幾個函數,都是從nain()函數開始執行.

3.標識符

按照C語言所定義的規則來命名的符號。

規則:由字母、數字、下劃線組成,但第一個字符必須

是字母或下劃線。

例如:area>a234>_1234為合法標識符

456P、a-b、a+b為非法標識符

注意:標識符區分大小寫。

例如:PAGE和page是兩個不同的標識符。

4.c語言有32個關鍵字,關鍵字不能用作用戶標識符。

5.C源程序文件的擴展名”.心。

6.VC++6.。下c語言程序的完整實現過程包括4個基本步驟:

?編輯源程序

?編譯源程序

?構建(鏈接)形成可執行文件(.exe)

?運行可執行文件.

二、數據類型、表達式

1.C語言中,整型、字符型、實型是最基本的數據類型.

2.常量

指在程序運行中,其值不能被改變。

分為整型常量、實型常量、字符常量、字符串常量。

?整型常量

C語言中主要有十進制、八進制、十六進制等。

十進制例如12、-3、32767等。

八進制用數字0開頭,由0-7這8個數字組成。

例如010.016為合法八進制數

127、018為非法八進制數

十六進制用數字0和字母x或X開頭,用0-9表示前10

個數字,字母A-F(可小寫)表示后6個數字。

例如OxAF、0x10、0x34為合法十六進制數

100、ABC、OxAFH為非法十六進制數

注意:C語言中只有十進制數可以為負數。

?實型常量

表示方式有兩種:小數形式和指數形式。

小數形式

例如:0.123、.123、123.都是合法形式。

指數形式

例如:2.3026可用以下任何一種指數表示

0.23026E1,2.3026e0>23.026E-1

但下面的指數形式為非法

E3、.5e3.6、2.3e?2(e和?2間有空格)

?符號常量

用符號名來表示一個常量。

格式:#define符號名常量值

例:已知圓的半徑為5.0,計算圓的面積(圓周率取3.14)。

include<stdio.h>

#definePI3.14

main()

{doubler,s;

r=5.0;

s=PI*r*r;

printf(,,s=%f\n,,,s);

C語言中整型常量的3種表示:8進制以。引導,16進制以

Ox或0X引導,十進制不能以0開頭.

?實型(float或double型)常量在程序中只能用十進制

數,不能用其他進制表示。2種表示形式,普通的和指數

形式,如3e5或者3E5,三者不可省略任何一部分.

?一個字符常量占一個字節存儲空間.用單引號限定,如:

'A'

'\0x4T(為轉義字符,表示以十六進制數41為ASQI碼值

的字符,即應的轉義字符形式).

'\0'(表示空字符,在字符串中用作字符串的結束標志)

11.字符串常量用英文雙引號括起來.如:"helIo\n"

?字符串中的字符個數稱為字符串的長度.空字符串長度為

0.

?字符串存儲中每個字符占一個字節,字符串結尾自動加一

個結束標志符''0’,所以字符串存儲的時候,占用的空

間長度要比串的實際長度多1.

如:charch[]={t(Hello55};實際串的長度為5,但數組空

間長度為6。

?變量

指在程序運行過程中其值可以改變的量。

變量的命名必須符合標識符的命名規則,且不能和C語言

中關鍵字同名。(例如:main是關鍵字)

例如:a、b、ab為合法變量

define、printf為非法變量

注意:ab是一個整體,含義不同于a乘以b。

?有符號整型變量用英文singned表示,存儲時最高一位是

符號位,無符號整型變量用英文unsigned表示.

?字符型變量的數據類型標識符是符號char,每個字符型

變量只能存儲一個字符.

例如:‘A‘、七'、5都是合法的字符常量。

”A"、‘abc'都是非法的字符常量。

?常見的轉義字符:

\n回車換行\\反斜杠

\'單引號'"雙引號

\ddd三位八進制\xhh二位十六進制

\0空值

例1:'\rf表示回車換行、”表示一個單引號

例2:301'表示字符'A''\x41'表示字符'A'

?字符變量

用關鍵字char定義,可以同時賦初值。

例1定義兩個字符變量ch1和ch2o

charch1,ch2;

例2定義兩個字符變量a和b,初值分別為T和'2'。

chara=T,b='2';

?getchar函數和putchar函數

分別用來輸入字符和輸出字符。

?字符的輸入和輸出

使用scant和printf時,格式符均為%c。

例1從鍵盤上輸入一個字符保存在ch中。

charch;

ch=getchar();

例2charc1='A',c2;

c2=c1+1;

putchar(c2);

輸出結果是‘B'。

例3輸出一個回車換行符。

putchar('\n');

例:從鍵盤上輸入一串字符,最后以'!'為結束標志。分別

統計大寫字母,小寫字母、數字出現的次數。

#include<stdio.h>

main()

charch;

intn1=0,n2=0,n3=0;

printf("請輸入一串字符以!結束:\n");

ch=getchar();

while(ch!='!')

if(ch>='A'&&chv=Z)

n1++;

if(ch>='a'&&ch<='z')

n2++;

if(ch>='0'&&ch<='9')

n3++;

ch=getchar();

)

printf("大寫字母出現次數是%d\n",n1);

printf("小寫字母出現次數是%d\n",n2);

printf("數字出現次數是%d\rT,n3);

?VC++6.0下,int型數據占4個字節,float型數據占4

個字節,double型數據占8個字節,.char型數據占1

個字節.

?算術運算符

+、-、*、/、%(求余數)

例如:3+21.2*3.25%31/2

求余運算符熾能用于整型數據的相除求余數,結果為整數.

如:7%.0為非法表達式,7/2結果為3,7呢結果為1

運算規則

1)如果運算數類型一致,則結果為運算數的類型。所有實數

運算都是以雙精度進行.

2)如果運算數類型不一致,則系統自動轉換,使運算符

兩邊類型一致后再進行運算。

char和short參與運算先轉換成同int.

賦值運算中,賦值號右側量的類型將轉換成左側的類型.

例11.0/2.0結果為0.5

例21/2結果為0

例315/3.0結果為5.0

?強制類型轉換

格式:(類型名)(表達式)

例4(int)3.234結果為3

例5(float)(10%3)結果為1.000000

?關系運算符

>,>=,<,<=的優先級相同且高于==,!=的優先級.

關系運算符的優先級低于算術運算符高于賦值運算符.

關系運算符是左結合性.

?關系表達式的值為真則是1,假為0.

?邏輯運算符!高于路和11,高于算術運算符.&S和11是左

結合的,!是右結合的.

?注意陽及||運算的短路現象。

8&的短路運算:

(表達式1)8&(表達式2),若(表達式1)的值為0,

則表達式2將不被計算,整個8a的結果為0。

11的短路運算:

(表達式1)11(表達式2),若(表達式1)的值為1,

則表達式2將不被計算,整個11的結果為1。

?數學關系式0<x<10在C語言中的表達:

(0<x)8&(x<10)或(Xx8&x<10

?賦值表達式

格式:變量名=表達式

例如:a=10a=a+1a=b=7+1為合法表達式

a+b=8a=7+1=b為非法表達式

整個表達式的值等于最左邊變量的值。

例如:a=b=c=8*8整個表達式最后的值為64

?復合賦值表達式

復合運算符:+=、-=、*=、/=、%=

例如:n=n+1表達式可寫成n+=1

n=n%3表達式可寫成n%=3

n*=m+3表達式可寫成n=n*(m+3)

例1假設變量a初值為9,計算下列表達式。

a+=a-=a+a

解答:

1)計算a+a,結果為18,a值未變。

2)計算a-=18,BPa=a-18,結果為-9,a值變為-9。

3)計算a+=-9,BPa=a+(-9),結果為-18,a值變為-18。

整個表達式最后結果為-18,a最后值為-18。

注意:a=a+1為賦值表達式,而2=2+1;為賦值語句。

?自加和自減運算符

自加和自減只適用于整型變量.

例如:a++和++a等價于a=a+1

b—和—b等價于b=b-1

a++和++a的區別:

假設a的初值為5

表達式a++值為5,最后a值為6。

表達式++a值為6,最后a值為6。

?逗號表達式

格式:表達式1,表達式2,,表達式n

從左至右依次計算每個表達式,最后一個表達式的值即為

整個逗號表達式的值。

例如:表達式i=3,++i,i+5最后結果為9,i最后值為4。

?條件運算由“?“和“:”構成,它是根據條件從兩個表達式中

選擇一個進行計算取值的操作,優先級高于賦值運算符,

低于算術運算和關系運算.

三、輸入輸出函數

?數據輸出printf

格式:printf(格式符,輸出項1,輸出項2,)

格式符功能

%c輸出一個字符

%d輸出十進制整數

%f輸出小數形式浮點數

%e輸出指數形式浮點數

%s輸出一個字符串

數據寬度說明:

1)在%和格式字符之間插入一個整數來指定輸出寬度。

例如:%4d、%5c

2)對于float和double類型的實數,可以用n1.n2形式

n1指定輸出數據的寬度(包括小數點),n2指定小數

點后小數的位數。

例如:%12.3f、%12.0f

例1輸出整型變量a和b的值,數據寬度均為4。

printf(',%4d%4d,,,a,b);

例2輸出單精度變量k的值,保留2位小數。

printf("%.2f',k);

?數據輸入scanf

格式:scanf(格式符,輸入項1,輸入項2,...)

格式符功能

%c輸入一個字符

%d輸入十進制整數

%f輸入單精度數

%lf輸入雙精度數

%s輸入一個字符串

例1從鍵盤上輸入兩個整數,保存在變量a和b中。

scanf(,l%d%d,,,&a,&b);

例2從鍵盤上輸入一個雙精度數,保存在變量data中。

scanf("%lf”,&data);

此處兩例中&是C語言運算符,表示取變量地址。

?復合語句

格式:{語句1語句2….語句n}

例1用復合語句將變量a,b,c依次賦值為最小素數。

{a=2;b=3;c=5;}

例2用復合語句實現變量a和b的值的交換。

{k=a;a=b;b=k;}

?不帶參數的宏次lefinePI3.14159意思是用符號

常量PI(宏名)代替3.14159(宏體),注意:宏定義不是c

語句,后面不加分號.

?帶參數的宏.^defineMx)x*x*x*x

意思是Mx)代替x的4次方,x不用定義,可以在使用中換成

需要的字母.

帶參數的宏的展開,如:

^definen$x)x*x*x*x

printf("W,n$1+1));

M1+1)的宏展開式為:1+1*1+1力+1*1+1計算結果為5

再如:

defineMx)(x)*(x)*(x)*(x)

prinJ1+1));

M1+1)的宏展開式為:(1+1)*(1+1)*(1+1)*(1+1)

計算結果為16

?include命令是編譯預處理的文件包含命令,形式為了

箱nclude〈文件名〉或者箱nclude”文件名",調用標準函

數中的輸入輸出函數,箱nclude"stdio.h",如果調用

數學函數(如sqrt函數、fabs函數等),則應加上

ndude"nath.h"或者制ndude<nath.h>

U!、分支結構

?關系運算符

>、v、>=、<=>==、!=

關系運算的結果只有兩種:真或假

C語言中用1表示真,用。表示假。

例16>=65>一結果均為真,值為1

例26!=6'D'=='d''9'>'F'結果均為假,值為0

?邏輯運算符

&&(與)||(或)!俳)

優先級:非運算>與運算,或運算

非運算規則

操作數結果

真假

假真

與運算規則

操作數1操作數2結果

真真真

真假假

假真假

假假假

或運算規則

操作數1操作數2結果

真真真

真假真

假真真

假假假

例1若變量a值為10,變量b值為16,計算表達式。

a>b||a>sqrt(b)&&b>=16

最后結果為真,表達式的值為1

?if語句的一般形式:

單分支結構:

if(表達式)語句

若表達式為真,則執行語句;否則if語句結束。

二選一結構:

if(表達式)

{語句組1}

else

{語句組2}

表達式的值非0才執行語句組1,否則執行語句組2.

例1從鍵盤上輸入兩個整數,輸出較大的數。

include<stdio.h>

main()

(

intx,y;

printf("請輸入兩個整數:\n");

scanf("%d%d”,&x,&y);

if(x>y)

printf("%d",x);

else

printf("%d”,y);

?條件運算符

格式:表達式1?表達式2:表達式3

若表達式1為真,結果為表達式2;否則為表達式3。

例如:x的初值為5,執行以下語句

y=++x>6?100:200;最后y的值為200

?if語句可嵌套,在花括號里繼續使用.

多選一結構:

if(表達式1)

{語句組1}

elseif(表達式2)

{語句組2}

elseif(表達式3)

{語句組3}

else

{語句組n}

例1根據輸入的學生成績,大于或等于90分為A,60

分以下等級為E,其余每10分一個等級。

#include<stdio.h>

main()

(

intg;

printf(“請輸入一個整數:\n");

scanf("%d",&g);

if(g>=90)printf("A\n”);

elseif(g>=80)printf("B\rT);

elseif(g>=70)printf("C\rT);

elseif(g>=60)printf(',D\n'');

elseprintf("E\n");

)

?sv\itch(表達式)〃sWtch表達式通常為整型或字符型

case常量1:語句組1〃case后面必須是常量

case常量2:語句組2

default:語句組〃也可省略該語句

}

可以使用中break來中止后面語句的執行.

?s對tch表達式通常為整型或字符型值,case中的常量類

型與之對應,case后面的表達式可以是常量或常量表達

式,不能為變量表達式.

switch語句

格式:

switch(表達式)

case常量表達式1:語句1

case常量表達式2:語句2

case常量表達式n-1:語句n-1

default:語句n

)

若表達式的值與表達式1相等,則執行語句1;若與表達

式2相等,則執行語句2……若均不相等則執行語句n。

例1用sw計ch語句重寫學生等級程序。

#include<stdio.h>

main()

{

intg;

printf("請輸入一個整數:\n");

scanf("%d",&g);

swi忙h(g/10)

{

case10:printf("A\n");break;

case9:printf("A\n");break;

case8:printf("B\n");break;

case7:printf("C\n");break;

case6:printf("D\n");break;

default:printf("E\n”);

)

)

程序中break表示跳過后面的分支。

五、循環結構

?while循環

格式:

while(表達式)循環體

若表達式為真,則執行循環體。再判斷表達式,若仍為真

則重復執行循環體直到表達式為假時循環結束。

例1編程計算S=1+2+……100o

#include<stdio.h>

main()

intk=1,s=0;

while(k<=100)

{s=s+k;k=k+1;}

printf("%cT,s);

)

?do-while循環

格式:

do

循環體

while(表達式);

先執行循環體,然后判斷表達式。若為真則重復執行

循環體直到表達式為假時循環結束。

例1用do-while循環計算10!

#include<stdio.h>

main()

(

intk=1;

longs=1;

do

{s=s*k;k++;}

while(k<=10);

printf("%ld",s);

)

注意:while循環和do-while循環的區別

while循環是先判斷表達式,因此循環體有可能一次

也不執行。do-while循環是先執行一次循環體,再判

斷表達式,所以不論表達式為真為假,循環體至少要

執行一次。

?for循環

格式:

for(表達式1;表達式2;表達式3)循環體

先執行表達式1,然后判斷表達式2,若為真則執行

循環體。然后執行表達式3,再判斷表達式2,若仍

為真則重復執行循環體直到表達式2為假時結束。

例1用for循環計算S=1+2+...100。

#include<stdio.h>

main()

intk,sum=O;

for(k=1;k<=100;k++)

sum=sum+k;

printf("%d",sum);

)

例2若一個三位數個位、十位、百位的立方和等于它本身

則稱這個數為水仙花數。例如153是一個水仙花數。

編程輸出所有的水仙花數。

#include<stdio.h>

main()

(

inta,b,c,i;

for(i=100;i<=999;i++)

(

a=i/100;

b=i%100/10;

c=i%10;

if(a*a*a+b*b*b+c*c*c==i)

printf("%d\n",i);

?break語句

適用的場合是sWtch語句中,及循環語句中。

用在循環體內表示強行退出循環。

例1計算S=1+2+3+...n,直到累加和大于5000為止。

#include<stdio.h>

main()

{

inti,s=0;

for(i=1;;i++)

(

s=s+i;

if(s>5000)break;

)

pnntf(,l%d",s);

注意:當有多重循環時,break只能退出最內層循環。

?continue語句

用在循環體中用來跳過本次循環余下的語句,立即開始

下一輪循環,整個循環并未結束。

例1寫出下列程序運行結果。

inti,k=0,s=0;

for(i=1;i<=5;i++)

{

s=s+i;

if(s>5)

{printf(,,i=%d,s=%d,k=%d\n,,,i,s,k);

continue;

)

k=k+s;

printf("i=%d,s=%d,k=%d\n",i,s,k);

)

運行結果:

i=1,s=1,k=1

』2,s=3,k=4

i=3,s=6,k=4

i=4,s=10,k=4

i=5,s=15,k=4

六、數組

?數組是包含多項相同類型數據的一種數據結構,它使用同

一個名字命名,再用下標進行分量標識.數組元素的下標

從0開始,數組長度為n時,最末元素的下標是n-1.

定義一維數組

格式:類型名數組名[元素個數]

例1定義一個包含4個整數的數組a

inta[4];

例2定義一個包含3個雙精度數的數組b

doubleb[3];

注意:C語言中數組的下界從。開始計數。

例如:a[4]的4個元素分別為a[0]、a[1]>a[2],a[3]

?數組有一維數組,二維數組,和多維數組.數組中的每一個

分量稱為一個數組元素。

?一維數組定義格式

數據類型數組名[數組長度];

〃數組長度指數組中可以存放的數據元素的個數,用整數

常量表示,也可用代表一個正整數的符號常量表示

例如:

intarray[10];

C語言規定只能逐個使用數組元素,而不能一次使用整個數

組。

?數值型一維數組的初始化,

用一對大括號將數組的初值括起來。

例如:inta[6]=<10,20,30,40,50,60};

注意:C語言中,不允許初值個數多于數組定義的長度。

inta[]={10,20,30,40,50,60);

給初值的情況下,數組的長度可省略,系統以初值的個數作

為數組的長度。

?對部分元素的初始化,例如:inta[6]={10,20,30}是對前

3個元素的賦值.

例1inta[3]={1,2,3};

此例中a[0]值為1、a川值為2、a[2]值為3

例2inta[5]={0};

此例中數組a的全部元素值均為0

例3inta[3]={1,2,3,4);

此例中由于初值個數多于數組元素個數,所以非法。

例4inta[>{0,0,0,0};

此例中省略數組元素個數,初值為4個。

等價于inta[4]={0};

注意:數組名是一個常量值,不能對它賦值。

例如:inta[3];

a=5;此語句非法,應改為a[0]=5;

?一維數組應用

例1從鍵盤上輸入10個整數,輸出最大數和最小數。

#include<stdio.h>

main()

inta[10],i,max,min;

printf("請輸入10個整數:\n");

for(i=0;i<=9;i++)

scanf("%d",&a[i]);

max=a[0];

min=a[0];

for(i=1;i<=9;i++)

(

if(a[i]>max)max=a[i];

if(a[i]<min)min=a[i];

)

printf("最大數是%d\n",max);

printf("最小數是%d\n",min);

)

例2斐波數列的定義如下:

1、1、2、3、5、8、13、...

編程輸出斐波數列的第40項值。

#include<stdio.h>

main()

{

longa[40];

inti;

a[0]=1;

a[1]=1;

for(i=2;i<=39;i++)

a[i]=a[i-1]+a[i-2];

printf("%ld",a[39]);

?字符型一維數組中每1個元素存放一個字符常量.

如:

charchd^'XxW,'\x21','\x5a'};

該數組中的初值字符為轉義字符。

?字符串

用雙引號將一串字符括起來稱字符串。

C語言中用一維數組來存放,并以'\0'作為結束標志。

'\0’就是0,占用空間但不計入串的實際長度。

例如:字符串"student”的長度為7,占用空間為8

通常利用字符數組存放字符串。如:

charstr[20]={"helIo"};

該字符串的實際長度為5個字符,占用的數組空間長度為20

'\0'是字符串的結束標志.系統在存放一個字符串時,會在

,

串的最后一個字符后添加\0,o

?任何一個一維數組在內存中都占用一段連續的空間.

?用“%”格式輸入字符串時,遇到回車鍵結束,但獲得的字

符中不包含回車鍵本身,而是在字符串末尾添加'\0'.

?使用一個一維scanf()函數使用“%”格式輸入多個字符

串時,輸入的各字符串之間要以空格鍵分隔.

如:charch[20];

scanf(“%二ch);〃從鍵盤輸入一個字符串存入數組ch

?用坊格式符為一個字符數組輸入字符串時,只有第一個

空格之前的字符串被讀入到字符數組中.

如:對上面的ch數組,輸入"Hellow)rld1w則只有空

格前面的“Hell。”被存入數組。

?gets()函數和puts。函數專門用于字符串的輸入輸出,

而且只能對一個字符串進行操作.

gets。函數格式為:

gets(字符數組名);

如:charstr[20];

gets(str);/*從鍵盤輸入一個字符串存入數組ch,輸

入時以回車鍵作為結束符.*/

puts()使用格式與gets()相同.

puts(str);〃輸出str數組中存放的字符串

?字符串常用函數

使用下列函數時要包含頭文件〈string.h>

1)字符串拷貝函數

strcpy(s1,s2)

表示將s2復制到s1中。

2)字符串連接函數

strcat(s1,s2)

表示將s2連接到s1后面形成一個新字符串。

3)字符串長度函數

strlen(s)

計算出s的實際長度不包括‘\0'。

4)字符串比較函數

strcmp(s1,s2)

若s1>s2,函數返回值大于0

若s1=s2,函數返回值等于0

若s1vs2,函數返回值小于0

?字符串應用

例1從鍵盤上輸入一個字符串,輸出它的長度。

#include<stdio.h>

#include<string.h>

main()

char*p,str[100];

P=str;

printf("請輸入一個字符串:\n");

gets(p);

printf("%d",strlen(p));

?定義二維數組

格式:類型名數組名[一維上界][二維上界]

例1定義一個2行2列的整型數組a

inta[2][2];

此例中數組a共有4個元素,分別是a[0][0]>a[0][1]>

a[1][0]>a[1][1]o

例2定義一個4行4列的整型矩陣a

inta[4][4];

?二維數組的初始化

用嵌套的大括號將數組初值括起來。

例1例a[4][3]={{1,2,3},{4,5,6},{7,8.9},{10,11,12)};

例2inta[4][3]={{1,2},{4,5},{7},{10});

此例中系統自動給空缺的地方補0

例3inta[4][3]={{152},{4,5}};

系統自動給后面的行補初值0

例4inta[4][3]={1,2,4,5};

此例中數組a的第一行中元素和第二行的第一個

元素依次為1,2,4,5其余全部為0

?定義二維數組大小

例1inta[][3]={{1,2,3},{4,5},{6},{8});

有4個行花括號,因此說明是4行3歹U。

例2inta[][3]={1,2,3,4,5};表示一個2行3列數組。

?定義并初始化二維數組時,數組的列數不能省略。如:

inta[2][]={{1,2}r{3,4,5}};是錯誤的。

?二維數組應用

例:從鍵盤上輸入5個學生3門課程的成績,分別計算

每個學生的平均分和每門課程的平均分。

#include<stdio.h>

#defineM5

#defineN3

main()

inta[M][N],i,j,sum;

printf("請輸入15個分數(0-100)個)

for(i=0;i<=M-1;i++)

for(j=0;j<=N-1;j++)

scanf("%d",&a[i][j]);

printf("每個學生的平均分\n");

for(i=0;i<=M-1;i++)

(

sum=0;

for(j=0;j<=N-1;j++)

sum=sum+a[i][j];

printf("%4d",sum/N);

)

printf("\n");

printf("每門課程的平均分\n");

for(i=0;i<=N-1;i++)

{

sum=0;

for(j=0;j<=M-1;j++)

sum=sum+a[j][i];

printf("%4d",sum/M);

七、函數

?帶返回值的函數

格式:

類型名函數名(參數列表)

(

語句

return返回值

)

例1已知F(X)=2*X+3,計算F⑴+F⑵+….F(10)的值。

#include<stdio.h>

intf(intx)

(

return2*x+3;

)

main()

inti,sum=O;

for(i=1;i<=10;i++)

sum=sum+f(i);

pnntf("%d",sum);

)

例2編程輸出2至100之間所有的素數之和。

#include<stdio.h>

intisprime(intnum)

(

inti;

for(i=2;i<=num-1;i++)

if(num%i==0)

return0;

return1;

)

main()

(

inti,sum=0;

for(i=2;i<=100;i++)

if(isprime(i)==1)

sum=sum+i;

printf("%d",sum);

例3從鍵盤上輸入兩個整數,分別輸出它們的最大公約數

和最小公倍數。

#include<stdio.h>

intgetmax(inta,intb)

{

intresult;

result=a<b?a:b;

while(a%result!=O||b%result!=O)

result=result-1;

returnresult;

)

intgetmin(inta,intb)

{

intresult=1;

while(result%a!=O||result%b!=O)

result=result+1;

returnresult;

)

main()

inta,b;

printf("請輸入兩個整數:\n");

scanf("%d%d",&a,&b);

printf("最大公約數是%d\n",getmax(a,b));

printf("最小公倍數是%d\rT,getmin(a,b));

)

?不帶返回值的函數

格式:

void函數名(參數列表)

(

語句

)

?函數的遞歸

指一個函數在內部又調用自己的過程。

例:用遞歸的方法計算斐波數列的第40項。

#include<stdio.h>

longf(intn)

(

if(n==1||n==2)

return1;

else

returnf(n-1)+f(n-2);

main()

printf("%ld",f(40));

)

?傳值和傳地址

傳值是指子程序中變量的變化不會影響主程序變量。

傳地址是指子程序中變量的變化會影響主程序變量。

例1交換兩變量a和b的值。(傳值方式)

#include<stdio.h>

voidchange(inta,intb)

(

intt;

{t=a;a=b;b=t;}

)

main()

(

inta=3,b=5;

printf("a=%db=%d\n",a,b);

change(a,b);

printf("a=%db=%d\n",a,b);

運行結果:

a=3b=5

a

溫馨提示

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

評論

0/150

提交評論