![程序設計方法第7講_第1頁](http://file4.renrendoc.com/view/200dbdd32d4eea72d126f662b3f14fe6/200dbdd32d4eea72d126f662b3f14fe61.gif)
![程序設計方法第7講_第2頁](http://file4.renrendoc.com/view/200dbdd32d4eea72d126f662b3f14fe6/200dbdd32d4eea72d126f662b3f14fe62.gif)
![程序設計方法第7講_第3頁](http://file4.renrendoc.com/view/200dbdd32d4eea72d126f662b3f14fe6/200dbdd32d4eea72d126f662b3f14fe63.gif)
![程序設計方法第7講_第4頁](http://file4.renrendoc.com/view/200dbdd32d4eea72d126f662b3f14fe6/200dbdd32d4eea72d126f662b3f14fe64.gif)
![程序設計方法第7講_第5頁](http://file4.renrendoc.com/view/200dbdd32d4eea72d126f662b3f14fe6/200dbdd32d4eea72d126f662b3f14fe65.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7講
函
數C語言是通過函數來實現(xiàn)模塊化程序設計的。所以較大的C語言應用程序,往往由一個主函數和若干個函數組成。由主函數調用其它函數,其它函數也可以相互調用。同一個函數可以被一個或多個函數調用任意多次。7.1函數的定義與調用7.2函數的嵌套調用與遞歸調用7.3數組作為函數參數7.4內部變量與外部變量7.5變量的動態(tài)存儲與靜態(tài)存儲
[Return]7.1函數的定義與調用7.1.1函數的定義7.1.2函數的返回值與函數類型7.1.3對被調用函數的說明和函數原型7.1.4函數的調用7.1.5函數的形參與實參[Return]7.1.1函數的定義1.任何函數(包括主函數main())都是由函數說明和函數體兩部分組成。根據函數是否需要參數,可將函數分為無參函數和有參函數兩種。(1)無參函數的一般形式
函數類型函數名(void){說明語句部分;
可執(zhí)行語句部分;
}注意:在舊標準中,函數可以缺省參數表。但在新標準中,函數不可缺省參數表;如果不需要參數,則用“void”表示,主函數main()例外。(2)有參函數的一般形式函數類型函數名(數據類型參數[,數據類型參數2……]){說明語句部分;
可執(zhí)行語句部分;
}有參函數比無參函數多了一個參數表。調用有參函數時,調用函數將賦予這些參數實際的值。為了與調用函數提供的實際參數區(qū)別開,將函數定義中的參數表稱為形式參數表,簡稱形參表。[案例7.1]定義一個函數,用于求兩個數中的大數。/*案例代碼文件名:AL7_1.C功能:定義一個求較大數的函數并在主函數中調用*/#include<stdio.h>int
max(intn1,intn2) /*定義一個函數max()*/{intc;if(n1>n2)c=n1;elsec=n2;returnc;}main(){intnum1,num2,nmax;;
printf("inputtwonumbers:\n");
scanf("%d%d",&num1,&num2);
nmax=max(num1,num2);
printf("max=%d\n",nmax);}return(n1>n2?n1:n2);2.說明(1)函數定義不允許嵌套。在C語言中,所有函數(包括主函數main())都是平行的。一個函數的定義,可以放在程序中的任意位置,主函數main()之前或之后。但在一個函數的函數體內,不能再定義另一個函數,即不能嵌套定義。(2)空函數──既無參數、函數體又為空的函數。其一般形式為:[函數類型]函數名(void){}[Return]7.1.2函數的返回值與函數類型C語言的函數兼有其它語言中的函數和過程兩種功能,從這個角度看,又可把函數分為有返回值函數和無返回值函數兩種。1.函數返回值與return語句有參函數的返回值,是通過函數中的return語句來獲得的。(1)return語句的一般格式:return(返回值表達式);
(2)return語句的功能:返回調用函數,并將“返回值表達式”的值帶給調用函數。注意:調用函數中無return語句,并不是不返回一個值,而是一個不確定的值。為了明確表示不返回值,可以用“void”定義成“無(空)類型”。2.函數類型在定義函數時,對函數類型的說明,應與return語句中、返回值表達式的類型一致。如果不一致,則以函數類型為準。如果缺省函數類型,則系統(tǒng)一律按整型處理。良好的程序設計習慣:為了使程序具有良好的可讀性并減少出錯,凡不要求返回值的函數都應定義為空類型;即使函數類型為整型,也不使用系統(tǒng)的缺省處理。[Return]7.1.3對被調用函數的說明和函數原型在ANSIC新標準中,采用函數原型方式,對被調用函數進行說明,其一般格式如下:函數類型函數名(數據類型[參數名][,數據類型[參數名2]…]);
C語言同時又規(guī)定,在以下2種情況下,可以省去對被調用函數的說明:(1)當被調用函數的函數定義出現(xiàn)在調用函數之前時。因為在調用之前,編譯系統(tǒng)已經知道了被調用函數的函數類型、參數個數、類型和順序。(2)如果在所有函數定義之前,在函數外部(例如文件開始處)預先對各個函數進行了說明,則在調用函數中可缺省對被調用函數的說明。[Return]7.1.4函數的調用
在程序中,是通過對函數的調用來執(zhí)行函數體的,其過程與其它語言的子程序調用相似。C語言中,函數調用的一般形式為:函數名([實際參數表])
切記:實參的個數、類型和順序,應該與被調用函數所要求的參數個數、類型和順序一致,才能正確地進行數據傳遞。在C語言中,可以用以下幾種方式調用函數:(1)函數表達式。函數作為表達式的一項,出現(xiàn)在表達式中,以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。(2)函數語句。C語言中的函數可以只進行某些操作而不返回函數值,這時的函數調用可作為一條獨立的語句。(3)函數實參。函數作為另一個函數調用的實際參數出現(xiàn)。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。7.1.5函數的形參與實參函數的參數分為形參和實參兩種,作用是實現(xiàn)數據傳送。形參出現(xiàn)在函數定義中,只能在該函數體內使用。發(fā)生函數調用時,調用函數把實參的值復制1份,傳送給被調用函數的形參,從而實現(xiàn)調用函數向被調用函數的數據傳送。
[案例7.3]實參對形參的數據傳遞。/*實參對形參的數據傳遞。*//*案例代碼文件名:AL7_3.C*/#include<stdio.h>voidmain(){voids(intn);/*說明函數*/
intn=100;/*定義實參n,并初始化*/s(n);/*調用函數*/
printf("n_s=%d\n",n);/*輸出調用后實參的值,便于進行比較*/}voids(intn){inti;
printf("n_x=%d\n",n);/*輸出改變前形參的值*/for(i=n-1;i>=1;i--)n=n+i;/*改變形參的值*/
printf("n_x=%d\n",n);/*輸出改變后形參的值*/} [程序演示]說明:(1)實參可以是常量、變量、表達式、函數等。無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此,應預先用賦值、輸入等辦法,使實參獲得確定的值。(2)形參變量只有在被調用時,才分配內存單元;調用結束時,即刻釋放所分配的內存單元。因此,形參只有在該函數內有效。調用結束,返回調用函數后,則不能再使用該形參變量。(3)實參對形參的數據傳送是單向的,即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。(4)實參和形參占用不同的內存單元,即使同名也互不影響。[Return]7.2函數的嵌套調用和遞歸調用7.2.1函數的嵌套調用
函數的嵌套調用是指,在執(zhí)行被調用函數時,被調用函數又調用了其它函數。這與其它語言的子程序嵌套調用的情形是類似的,其關系可表示如圖7-1。[案例7.4]計算s=1k+2k+3k+……+Nk/*案例代碼文件名:AL7_4.C功能:函數的嵌套調用*/#include<stdio.h>#defineK4#defineN5longf1(intn,intk) /*計算n的k次方*/{longpower=n;inti;for(i=1;i<k;i++)power*=n;returnpower;}longf2(intn,intk) /*計算1到n的k次方之累加和*/{longsum=0;
inti;
for(i=1;i<=n;i++)sum+=f1(i,k);returnsum;}main(){printf("Sumof%dpowersofintegersfrom1to%d=",K,N);printf("%d\n",f2(N,K));}7.2.2函數的遞歸調用
函數的遞歸調用是指,一個函數在它的函數體內,直接或間接地調用它自身。C語言允許函數的遞歸調用。在遞歸調用中,調用函數又是被調用函數,執(zhí)行遞歸函數將反復調用其自身。每調用一次就進入新的一層。為了防止遞歸調用無終止地進行,必須在函數內有終止遞歸調用的手段。常用的辦法是加條件判斷,滿足某種條件后就不再作遞歸調用,然后逐層返回。理解“回推”和“遞推”過程。[案例7.5]用遞歸法計算n!。/*功能:通過函數的遞歸調用計算階乘*/#include<stdio.h>longpower(intn){longf;if(n>1)f=power(n-1)*n;elsef=1;return(f);}main(){intn;longy;
printf("inputainteagernumber:\n");scanf("%d",&n);y=power(n);
printf("%d!=%ld\n",n,y);} [程序演示]典型的古典問題:Hanoi塔問題(課下理解)[Return]2007年4月1、在C語言中,函數返回值的類型最終取決于()
A)函數定義時在函數首部所說明的函數類型
B)return語句中表達式值的類型
C)調用函數時主函數所傳遞的實參類型
D)函數定義時形參的類型2007年9月1、若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是A)函數的實參和其對應的形參共占同一存儲單元B)形參只是形式上的存在,不占用具體存儲單元C)同名的實參和形參占同一存儲單元D)函數的形參和實參分別占用不同的存儲單元2008年4月1、有以下程序
#include<stdio.h>
int
f(int
x)
{
int
y;
if(x==0||x==1)
return(3);
y=x*x-f(x-2);
return
y;
}
main()
{
int
z;
z=f(3);
printf("%d\n",z);
}程序的運行結果是A)0
B)9
C)6
D)82008年4月2、以下程序的輸出結果是【13】。
#include<stdio.h>
void
fun(int
x)
{
if(x/2>0)
fun(x/2);
printf("%d",x);
}
main()
{
fun(3);
printf("\n");
}132008年9月1、下面的函數調用語句中func函數的實參個數是
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
A)3
B)4
C)5
D)82、有以下程序
#include<stdio.h>
int
fun(int
a,int
b)
{
if(b==0)
return
a;
else
return(fun(--a,--b));
}
main()
{
printf("%d\n",fun(4,2));
}程序的運行結果是
A)1
B)2
C)3
D)42008年9月3、以下敘述中錯誤的是A)用戶定義的函數中可以沒有return語句B)用戶定義的函數中可以有多個return語句,以便可以調用一次返回多個函數值C)用戶定義的函數中若沒有return語句,則應當定義函數為void類型D)函數的return語句中可以沒有表達式2009年3月1、有以下程序#include<stdio.h>int
f(int
x,int
y){
return
((y-x)*x);}main(){
int
a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("%d\n",d);}程序運行后的輸出結果是A)10B)9C)8D)72009年3月2、有以下程序#include<stdio.h>int
fun(int
x,int
y){
if(x==y)
return
(x);
else
return((x+y)/2);}main(){
int
a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結果是A)3B)6C)8D)122009年9月1、有以下程序#include
<stdio.h>void
fun(int
p){
int
d=2;
p=d++;
printf("%d",p);}main(){
int
a=1;
fun(a);
printf("%d\n",a);}程序運行后的輸出結果是A)32B)12C)21D)222009年9月2、有以下程序#include<stdio.h>fun(int
x){
if(x/2>0)
fun(x/2);
printf("%d
",x);}main(){
fun(6);printf("\n");}程序運行后的輸出結果是【】136題盤練習-注意函數類型、參數類型:1-2、7-1、22-2、77-2、78-2、93-2、97-2、98-2函數遞歸調用:6-2(斐波拉契數列)、27-2(迭代法)、52-2、58-2(求階乘)嵌套調用:21-2、43-2(二分法)、99-17.3數組作為函數參數數組用作函數參數有兩種形式:一種是把數組元素(又稱下標變量)作為實參使用;另一種是把數組名作為函數的形參和實參使用。7.3.1數組元素作為函數參數7.3.2數組名作為函數的形參和實參[Return]7.3.1數組元素作為函數參數
數組元素就是下標變量,它與普通變量并無區(qū)別。數組元素只能用作函數實參,其用法與普通變量完全相同:在發(fā)生函數調用時,把數組元素的值傳送給形參,實現(xiàn)單向值傳送。[案例7.6]寫一函數,統(tǒng)計字符串中字母的個數。/*案例代碼文件名:AL7_6.C*//*功能:數組元素作為函數實參*/#include<stdio.h>int
isalp(charc)
{if(c>='a'&&c<='z'||c>='A'&&c<='Z')return(1);elsereturn(0);}main(){inti,num=0; charstr[255];
printf("Inputastring:");
gets(str); for(i=0;str[i]!='\0';i++) if(isalp(str[i]))num++;
puts(str);
printf("num=%d\n",num);} [程序演示]說明:(1)用數組元素作實參時,只要數組類型和函數的形參類型一致即可,并不要求函數的形參也是下標變量。換句話說,對數組元素的處理是按普通變量對待的。(2)在普通變量或下標變量作函數參數時,形參變量和實參變量是由編譯系統(tǒng)分配的兩個不同的內存單元。在函數調用時發(fā)生的值傳送,是把實參變量的值賦予形參變量。[Return]7.3.2數組名作為函數的形參和實參數組名作函數參數時,既可以作形參,也可以作實參。數組名作函數參數時,要求形參和相對應的實參都必須是類型相同的數組(或指向數組的指針變量),都必須有明確的數組說明[案例7.7]已知某個學生5門課程的成績,求平均成績。/*案例代碼文件名:AL7_7.C*/floataver(floata[])/*求平均值函數*/{inti;
floatav,s=0;
for(i=0;i<5;i++)s+=a[i];
av=s/5;
returnav;
}voidmain(){floatsco[5],av;
inti;
printf("\ninput5scores:\n");
for(i=0;i<5;i++)scanf("%f",&sco[i]);
av=aver(sco);/*調用函數,實參為一數組名*/
printf("averagescoreis%5.2f\n",av);
} [程序演示]進一步:思考1:將函數aver改寫成通用的求n個數的平均數?
floataver(floata[],intn)
調用處改為:av=aver(sco
,5);
思考2:如果在函數aver中改變了數組的值,調用函數中是否隨之變化?元素起始地址a[0]
1000a[1]
1002a[2]
1004a[3]
1006a[i]
1008
a[5]
1010a[6]
1012a[7]
1014a[8]
1016a[9]
1018a
數組
元素起始地址sco[0]
1000sco[1]
1002sco[2]
1004sco[3]
1006sco[i]
1008
sco5]
1010sco[6]
1012sco[7]
1014sco[8]
1016sco[9]
1018說明:(1)用數組名作函數參數,應該在調用函數和被調用函數中分別定義數組,且數據類型必須一致,否則結果將出錯。例如,在本案例中,形參數組為a[],實參數組為sco[],它們的數據類型相同。(2)C編譯系統(tǒng)對形參數組大小不作檢查,所以形參數組可以不指定大小。例如,本案例中的形參數組a[]。
[Return]7.4內部變量與外部變量
C語言中所有的變量都有自己的作用域。變量說明的位置不同,其作用域也不同,據此將C語言中的變量分為內部變量和外部變量。7.4.1內部變量7.4.2外部變量[Return]7.4.1內部變量在一個函數內部說明的變量是內部變量,它只在該函數范圍內有效。也就是說,只有在包含變量說明的函數內部,才能使用被說明的變量,在此函數之外就不能使用這些變量了。所以內部變量也稱“局部變量”。例如:intf1(inta)/*函數f1*/{intb,c;
……} /*a,b,c作用域:僅限于函數f1()中*/
intf2(intx)/*函數f2*/{inty,z;
……} /*x,y,z作用域:僅限于函數f2()中*/
main(){intm,n;
……} /*m,n作用域:僅限于函數main()中*/關于局部變量的作用域還要說明以下幾點:1.主函數main()中定義的內部變量,也只能在主函數中使用,其它函數不能使用。同時,主函數中也不能使用其它函數中定義的內部變量。因為主函數也是一個函數,與其它函數是平行關系。這一點是與其它語言不同的,應予以注意。2.形參變量也是內部變量,屬于被調用函數;實參變量,則是調用函數的內部變量。3.允許在不同的函數中使用相同的變量名,它們代表不同的對象,分配不同的單元,互不干擾,也不會發(fā)生混淆。4.在復合語句中也可定義變量,其作用域只在復合語句范圍內。[Return]7.4.2外部變量在函數外部定義的變量稱為外部變量。以此類推,在函數外部定義的數組就稱為外部數組。外部變量不屬于任何一個函數,其作用域是:從外部變量的定義位置開始,到本文件結束為止。外部變量可被作用域內的所有函數直接引用,所以外部變量又稱全局變量。
[案例7.9]輸入長方體的長(l)、寬(w)、高(h),求長方體體積及正、側、頂三個面的面積。/*功能:利用全局變量計算長方體的體積及三個面的面積*/ints1,s2,s3;int
vs(int
a,int
b,intc){intv; v=a*b*c;s1=a*b;s2=b*c;s3=a*c; returnv;}main(){intv,l,w,h;
printf("\ninputlength,widthandheight:");
scanf("%d%d%d",&l,&w,&h);v=vs(l,w,h);
printf("v=%ds1=%ds2=%ds3=%d\n",v,s1,s2,s3);} [程序演示]對于全局變量還有以下幾點說明:(1)在同一源文件中,允許外部變量和內部變量同名。在內部變量的作用域內,外部變量將被屏蔽而不起作用。(2)外部變量的作用域是從定義點到本文件結束。如果定義點之前的函數需要引用這些外部變量時,需要在函數內對被引用的外部變量進行說明。外部變量說明的一般形式為:extern數據類型外部變量[,外部變量2……];
注意:外部變量的定義和外部變量的說明是兩回事。外部變量的定義,必須在所有的函數之外,且只能定義一次。而外部變量的說明,出現(xiàn)在要使用該外部變量的函數內,而且可以出現(xiàn)多次。[案例7.10]外部變量的定義與說明。/*案例代碼文件名:AL7_10.C*/int
vs(int
xl,int
xw){externint
xh;/*外部變量xh的說明*/
intv;
v=xl*xw*xh;/*直接使用外部變量xh的值*/returnv;
}main(){externint
xw,xh;/*外部變量的說明*/
intxl=5;/*內部變量的定義*/
printf("xl=%d,xw=%d,xh=%d\nv=%d",xl,xw,xh,vs(xl,xw));
}intxl=3,xw=4,xh=5;/*外部變量xl、xw、xh的定義*/ [程序演示][Return]7.5變量的動態(tài)存儲與靜態(tài)存儲簡介
在C語言中,對變量的存儲類型說明有以下四種:自動變量(auto)、寄存器變量(register)、外部變量(extern)、靜態(tài)變量(static)。自動變量和寄存器變量屬于動態(tài)存儲方式,外部變量和靜態(tài)內部變量屬于靜態(tài)存儲方式。7.5.1
內部變量的存儲方式7.5.2外部變量的存儲方式[Return]7.5.1內部變量的存儲方式
1.靜態(tài)存儲──靜態(tài)內部變量(1)定義格式:static數據類型內部變量表;(2)存儲特點1)靜態(tài)內部變量屬于靜態(tài)存儲。在程序執(zhí)行過程中,即使所在函數調用結束也不釋放。換句話說,在程序執(zhí)行期間,靜態(tài)內部變量始終存在,但其它函數是不能引用它們的。2)定義但不初始化,則自動賦以"0"(整型和實型)或'\0'(字符型);且每次調用它們所在的函數時,不再重新賦初值,只是保留上次調用結束時的值!2.動態(tài)存儲──自動局部變量(又稱自動變量)(1)定義格式:[auto]數據類型變量表;
(2)存儲特點1)自動變量屬于動態(tài)存儲方式。在函數中定義的自動變量,只在該函數內有效;函數被調用時分配存儲空間,調用結束就釋放。2)定義而不初始化,則其值是不確定的。如果初始化,則賦初值操作是在調用時進行的,且每次調用都要重新賦一次初值。3)由于自動變量的作用域和生存期,都局限于定義它的個體內(函數或復合語句),因此不同的個體中允許使用同名的變量而不會混淆。即使在函數內定義的自動變量,也可與該函數內部的復合語句中定義的自動變量同名。[案例7.13]自動變量與靜態(tài)局部變量的存儲特性。/*案例代碼文件名:AL7_13.C*/voidauto_static(void){inta=0; /*自動變量:每次調用都重新初始化*/staticintb=0; /*靜態(tài)局部變量:只初始化1次*/
printf(“%d,%d\n”,a,b);++a;++b;}main(){inti;for(i=0;i<5;i++)auto_static();} [程序演示]7.5.2外部變量的存儲方式外部變量屬于靜態(tài)存儲方式:(1)靜態(tài)外部變量──只允許被本源文件中的函數引用其定義格式為:static數據類型外部變量表;(2)非靜態(tài)外部變量──允許被其它源文件中的函數引用定義時缺省static關鍵字的外部變量,即為非靜態(tài)外部變量。其它源文件中的函數,引用非靜態(tài)外部變量時,需要在引用函數所在的源文件中進行說明:
extern數據類型外部變量表;注意:在函數內的extern變量說明,表示引用本源文件中的外部變量!而函數外(通常在文件開頭)的extern變量說明,表示引用其它文件中的外部變量。靜態(tài)局部變量和靜態(tài)外部變量同屬靜態(tài)存儲方式,但兩者區(qū)別較大:(1)定義的位置不同。靜態(tài)局部變量在函數內定義,靜態(tài)外部變量在函數外定義。(2)作用域不同。靜態(tài)局部變量屬于內部變量,其作用域僅限于定義它的函數內;雖然生存期為整個源程序,但其它函數是不能使用它的。靜態(tài)外部變量在函數外定義,其作用域為定義它的源文件內;生存期為整個源程序,但其它源文件中的函數也是不能使用它的。(3)初始化處理不同。靜態(tài)局部變量,僅在第1次調用它所在的函數時被初始化,當再次調用定義它的函數時,不再初始化,而是保留上1次調用結束時的值。而靜態(tài)外部變量是在函數外定義的,不存在靜態(tài)內部變量的“重復”初始化問題,其當前值由最近1次給它賦值的操作決定。
2007年4月1、有以下程序inta=4;int
f(intn){intt=0;staticinta=5;if(n%2){inta=6;t+=a++;}
else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;
for(;i<2;i++)s+=f(i);
printf(“%d\n”,s);}程序運行后的輸出結果是()A)24
B)28
C)32
D)362007年4月2、以下程序的運行結果是__________________。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf(“m=%dk=%d”,m,k++);}
main()
{inti=4;
fun(i++);printf(“i=%dk=%d\n”,i,k);
}m=4k=4i=5k=52007年9月1、在一個C語言源程序文件中所定義的全局變量,其作用域為:
A)所在文件的全部范圍
B)所在程序的全部范圍
C)所在函數的全部范圍
D)由具體定義位置和extern說明來決定范圍2007年9月1、有以下程序
#include<stdio.h>
int
a=1;
int
f(int
c)
{static
int
a=2;
c=c+1;
return
(a++)+c;}
main()
{
int
i,k=0;
for(i=0;i<2;i++){int
a=3;k+=f(a);}
k+=a;
printf(“%d\n”,k);
}程序運行結果是
A)14
B)15
C)16
D)172008年4月1、在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是A)auto
和register
B)extern和registerC)auto和static
D)static和register2008年9月1、有以下程序
#include<stdio.h>
void
fun(int
a,int
b)
{
int
t;
t=a;a=b;b=t;
}
main()
{
int
c[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<10;i+=2)
fun(c[i],c[i+1]);
for(i=0;i<10;i++)
printf("%d,",c[i]);
printf("\n");
}程序的運行結果是A)1,2,3,4,5,6,7,8,9,0,
B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,
D)0,1,2,3,4,5,6,7,8,9,2008年9月2、有以下程序
#include
<stdio.h>
void
fun(int
a[],
int
n)
{
int
i,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main()
{
int
k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++)
printf("%d",k[i]);
printf("\n");
}程序的運行結果是A)345678
B)876543
C)1098765
D)3216782008年9月3、有以下程序
#include
<stdio.h>
#define
N
4
void
fun(int
a[][N],int
b[])
{
int
i;
for(i=0;i<N;i++)
b[i]=a[i][i];
}
main()
{
int
x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)
printf("%d,"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 夫妻離婚協(xié)議格式
- 農業(yè)生產風險防范與管理手冊
- 股權質押轉讓協(xié)議書
- 公司食品采購合同
- 政府采購合同示本
- 信息與通信網絡安全管理作業(yè)指導書
- 2025年婁底道路貨運駕駛員從業(yè)資格考試題庫
- 2025年三門峽駕駛資格證模擬考試
- 2025年昆明貨運從業(yè)資格證考試模擬題庫及答案大全
- 電力行業(yè)標準合同(2篇)
- 勞動合同(模版)4篇
- 某水毀公路維修工程施工方案
- 家庭病房工作制度和人員職責
- 道德與法律的關系課件
- 建設工程監(jiān)理合同示范文本GF-2018-0202
- 2022質檢年終工作總結5篇
- 國際商務談判雙語版課件(完整版)
- 物業(yè)管理應急預案工作流程圖
- (高清正版)T_CAGHP 003—2018抗滑樁治理工程設計規(guī)范 (試行)
- 畢業(yè)論文論財務管理是企業(yè)管理的核心
- 清潔化施工無土化安裝施工方案
評論
0/150
提交評論