




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
函數與編譯預處理1第一頁,共六十四頁,編輯于2023年,星期五第7章函數與預處理命令7.1概述7.2函數的定義與調用7.3變量作用域與存儲方式7.4編譯預處理2第二頁,共六十四頁,編輯于2023年,星期五7.1概述①程序結構清晰,可讀性好。②減少重復編碼的工作量。③可多人共同編制一個大程序,縮短程序設計周期,提高程序設計和調試的效率。使用函數的好處……C程序源程序文件n函數1函數m……源程序文件1函數1函數n3第三頁,共六十四頁,編輯于2023年,星期五【例7.1】求一個整數的立方。intcube(intx)
/*函數定義*/{return(x*x*x);}main(){intf,a;printf("\nEnteranintegernumber:");scanf("%d",&a);f=cube(a);
printf("%d*%d*%d=%d\n",a,a,a,f);}程序運行情況如下:Enteranintegernumber:
22*2*2=8函數調用程序的執行總是從main函數開始4第四頁,共六十四頁,編輯于2023年,星期五⑴一個C源程序可以由一個或多個源程序文件組成。C編譯系統在對C源程序進行編譯時是以文件為單位進行的。⑵一個C源程序文件可以由一個或多個函數組成。所有函數都是獨立的。主函數可以調用其它函數,其它函數可以相互調用。⑶在一個C程序中,有且僅有一個主函數main。C程序的執行總是從main函數開始,調用其它函數后最終回到main函數,在main函數中結束整個程序的運行。說明5第五頁,共六十四頁,編輯于2023年,星期五⑷函數的種類從函數定義形式分:①有參函數在主調(用)函數和被調(用)函數之間通過參數進行數據傳遞,如:
intcube(intx){…}
②無參函數如:getchar()在調用無參函數時,主調函數不需要將數據傳遞給無參函數。從使用的角度看:①標準函數(庫函數)庫函數是由系統提供的。如:getchar()、sin(x)等。在程序中可以直接調用它們。附錄A列出了C的部分庫函數。②用戶自定義函數如:例7.1中的cube函數。6第六頁,共六十四頁,編輯于2023年,星期五【例7.2】無參函數的定義與調用。voidwelcome(){printf("***********************************\n");printf("WelcometoChina\n");printf("***********************************\n");}main(){welcome();}程序的輸出結果如下:*********************************
WelcometoChina*********************************7第七頁,共六十四頁,編輯于2023年,星期五7.2.1函數的定義函數定義的一般形式函數類型函數名(類型名形式參數1,…
){說明語句
執行語句}例如:求兩個數的最大值。
int
max(intx,inty){intz;z=x>y?x:y;return(z);}類型省略時默認為int類型有形式參數,max為有參函數
8第八頁,共六十四頁,編輯于2023年,星期五intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}intmax(x,y){intx,y;……}或intmax(intx,y){……}或intmax(x,y)intx,y,z;{z=x>y?x:y;return(z);}花括號中也可以為空,這種函數叫空函數。例如:null(){}不能在函數體內定義其他函數,即函數不能嵌套定義。形參也可以這樣定義如下定義都是錯誤的
√9第九頁,共六十四頁,編輯于2023年,星期五函數名(實參表列)在C語言中,把函數調用也作為一個表達式。因此凡是表達式可以出現的地方都可以出現函數調用。例如:①welcome();
②if(iabs(a)>max)max=iabs(a);
③m=max(c,max(a,b));7.2.2函數的調用函數調用的一般形式:10第十頁,共六十四頁,編輯于2023年,星期五intsum(){inti,t=0;for(i=1;i<=100;i++)t+=i;return(t);}main(){ints;s=sum();printf("%d\n",s);}程序輸出結果:5050intsum(intx){inti,t=0;for(i=1;i<=x;i++)t+=i;return(t);}main(){ints;s=sum(100);printf("%d\n",s);}【例7.3】求1~100的累加和。思考:兩個程序有何不同程序輸出結果:5050?11第十一頁,共六十四頁,編輯于2023年,星期五voidswap(int
x,inty){intz;z=x;x=y;y=z; printf("\nx=%d,y=%d",x,y);}main(){inta=10,b=20;swap(a,b);printf("\na=%d,b=%d\n",a,b);}7.2.3函數參數與函數的返回值1.函數的形式參數與實際參數程序輸出結果:x=20,y=10a=10,b=20形式參數(形參)實際參數(實參)【例7.4】編一程序,將主函數中的兩個變量的值傳遞給swap函數中的兩個形參,交換兩個形參的值。單向值傳遞12第十二頁,共六十四頁,編輯于2023年,星期五形參和實參
10
20abswap函數在調用時,形參x,y才被分配存儲空間,從main函數中分別獲實參傳遞的值10,20,此為虛實結合。voidswap(int
x,inty){intz;z=x;x=y;y=z; printf("\nx=%d,y=%d",x,y);}main(){inta=10,b=20;swap(a,b);printf("\na=%d,b=%d\n",a,b);}10
20
xy201013第十三頁,共六十四頁,編輯于2023年,星期五有關形參和實參的說明:
①當函數被調用時才給形參分配內存單元。調用結束,所占內存被釋放。②實參可以是常量、變量或表達式,但要求它們有確定的值。③實參與形參類型要一致。④實參與形參的個數必須相等。在函數調用時,實參的值賦給與之相對應的形參。“單向值傳遞”。14第十四頁,共六十四頁,編輯于2023年,星期五2.函數的類型與函數的返回值說明:①函數的類型決定了函數返回值的類型。若省略函數的類型,系統默認其為int型。②無返回值的函數應將其類型定義為void(空)類型。⑴函數的類型【例7.5】輸出兩個數中的大數。max(intx,inty){intz;z=x>y?x:y;return(z);/*返回z的值*/}main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("maxis%d\n",c);}15第十五頁,共六十四頁,編輯于2023年,星期五函數的返回值是通過return語句帶回到主調函數的。功能:終止函數的運行,返回主調函數,若有返回值,將返回值帶回主調函數。說明:①若函數沒有返回值,return語句可以省略。②return語句中的表達式類型一般應和函數的類型一致,如果不一致,VC系統警告的同時自動將表達式類型轉換為函數類型。⑵函數的返回值return語句格式:return(表達式);
return表達式;return;16第十六頁,共六十四頁,編輯于2023年,星期五【例7.6】計算并輸出圓的面積。s(intr){return3.14*r*r;}main(){intr,area;scanf("%d",&r);printf("%d\n",s(r));}自動轉換為int型思考:若要得到雙精度實型的圓面積,程序應如何修改程序運行情況如下:212?17第十七頁,共六十四頁,編輯于2023年,星期五
7.2.4對被調函數的聲明和函數原型變量要先定義后使用,函數也如此。即被調函數的定義要出現在主調函數的定義之前。如swap函數:允許整型函數(且參數也是整型)的定義出現在主調函數之后。如max函數:如果非整型函數在主調函數之后定義,則應在主調函數中或主調函數之前對被調函數進行聲明。voidswap(intx,inty){…}main(){…swap(a,b);}main(){…c=max(a,b);}max(intx,inty){…}18第十八頁,共六十四頁,編輯于2023年,星期五對被調函數進行聲明的一般形式
函數類型函數名(參數類型1
參數名1,…);或函數類型函數名(參數類型1,參數類型2,…);思考:以下哪種情況需要在主調函數中對被調函數聲明被調函數定義在前,主調函數定義在后。主調函數定義在前,被調函數定義在后,且被調函數的類型不是整型的。被調函數定義在后,但被調函數的類型是整型。第二種形式省略了參數名,此種形式也稱為函數的原型。?19第十九頁,共六十四頁,編輯于2023年,星期五main(){voidcalc(floatx,floaty,charopr);
floata,b;charopr;printf("\nInputexpression:");scanf("%f%c%f",&a,&opr,&b);calc(a,b,opr);}voidcalc(floatx,floaty,charopr){switch(opr){case'+':printf("%5.2f%c%5.2f=%6.2f\n",x,opr,y,x+y);return;case'-':printf("%5.2f%c%5.2f=%6.2f\n",x,opr,y,x-y);return;case'*':printf("%5.2f%c%5.2f=%6.2f\n",x,opr,y,x*y);return;case'/':printf("%5.2f%c%5.2f=%6.2f\n",x,opr,y,x/y);return;default:printf("Operatorerr!\n");}}對被調函數的聲明【例7.7】計算并輸出兩個數的和、差、積、商。第二十頁,共六十四頁,編輯于2023年,星期五7.2.5數組作函數參數1.一維數組元素作函數參數main(){inta[5],i,m;for(i=0;i<5;i++)scanf("%d",&a[i]);m=a[0];for(i=1;i<5;i++)m=min(m,a[i]);printf("%d\n",m);}【例7.8】求5個數中的最小值。intmin(intx,inty){return(x<y?x:y);}用打擂臺方法求最小值。m相當于擂主單向值傳遞21第二十一頁,共六十四頁,編輯于2023年,星期五2.一維數組名作函數參數數組名作為函數參數,在調用函數時,傳遞的是數組的地址,因為數組名表示數組在內存中的起始地址,這種傳遞稱為地址傳遞。例如:數組a在內存中從2000地址開始存放,則a的值為2000。2000是地址值,是指針類型的數據(第8中將介紹指針類型),不能把它看成是整型或其他類型數據。實參是數組名,形參也應定義為數組形式,形參數組的長度可以省略,但[]不能省,否則就不是數組形式了。
【例7.9】用冒泡法將10個整數排序。22第二十二頁,共六十四頁,編輯于2023年,星期五voidsort(int
b[
],intn);voidprintarr(int
b[
]);main(){inta[10]={11,22,63,97,58,80,45,32,73,36};printf("Beforesort:\n");
printarr(a);
sort(a,10);
printf("Aftersort:\n");
printarr(a);}voidprintarr(intb[10]){inti;for(i=0;i<10;i++)printf("%5d",b[i]);printf("\n");}voidsort(int
b[
],intn){inti,j,t;for(i=1;i<n;i++)for(j=0;j<n-i;j++)if(b[j]>b[j+1]){t=b[j];b[j]=b[j+1];b[j+1]=t;}}地址傳遞23第二十三頁,共六十四頁,編輯于2023年,星期五
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
b[0]b[1]b[2]b[3]b[4]b[5]b[6]b[7]b[8]b[9]11226397588045327336(a)排序前a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]b[0]b[1]b[2]b[3]b[4]b[5]b[6]b[7]b[8]b[9]11223236455863738097(b)排序后圖7.3調用sort函數2000b形參b實際是一個可以存放地址的變量a:2000實參賦給形參首地址:
2000首地址:
200024第二十四頁,共六十四頁,編輯于2023年,星期五#include"stdio.h"main(){voidscat(charstr1[],charstr2[]);chars1[50],s2[50];inti,k;printf("Inputs1:");gets(s1);printf("Inputs2:");gets(s2);
scat(s1,s2);printf("Outputs1:%s\n",s1);}voidscat(charstr1[],charstr2[]){inti=0,k=0;for(;str1[i]!=‘\0’;i++;);for(;str2[k]!=‘\0’;i++,k++)str1[i]=str2[k];str1[i]='\0';}scat函數還可簡化為:voidscat(charstr1[],charstr2[]){inti=0,k=0;for(;str1[i];i++);for(;str1[i++]=str2[k++];);}【例7.10】編程序,實現字符串連接。25第二十五頁,共六十四頁,編輯于2023年,星期五以二維數組為例。二維數組名作實參時,對應的形參也應該定義為一個二維數組形式。對形參數組定義時可以指定每一維的大小,也可以省略第一維的大小說明。【例】編程序,將矩陣轉置。設轉置前為a矩陣,轉置后為b矩陣,如下所示:
a=12345678910111215
926
1037
1148
12b=思路:將a[0][0]b[0][0],a[0][1]b[1][0],a[0][2]b[2][0],a[1][0]b[0][1],…,a[i][j]b[j][i],…。2.多維數組作函數參數26第二十六頁,共六十四頁,編輯于2023年,星期五voidturn(); main(){inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};inti,j,b[4][3];
…
turn(a,b);
printf("arrayb:\n");for(i=0;i<4;i++) {for(j=0;j<3;j++)printf("%5d",b[i][j]);printf("\n");}}/*矩陣轉置函數*/voidturn(intarra[][4],intarrb[][3]){intr,c;for(r=0;r<3;r++)for(c=0;c<4;c++)
arrb[c][r]=arra[r][c];}27第二十七頁,共六十四頁,編輯于2023年,星期五7.2.7函數的嵌套調用和遞歸調用main函數{
……
調用函數A;
……}函數A{……
調用函數B;
……}函數B{
……
……
……}1.函數的嵌套調用28第二十八頁,共六十四頁,編輯于2023年,星期五【例7.11】函數的嵌套調用main(){intn=3;printf("%d\n",sub1(n));}sub1(intn){inti,a=0;for(i=n;i>0;i--)a+=sub2(i);returna;}sub2(intn){returnn+1;}程序輸出結果:929第二十九頁,共六十四頁,編輯于2023年,星期五2.函數的遞歸調用(略)(1)遞歸的基本概念遞歸調用:一個函數直接或間接地調用了它本身,就稱為函數的遞歸調用。遞歸函數:在函數體內調用該函數本身。intsub(intx){inty,z;……if(……)z=sub(y);else{……}return;}例如:直接調用sub函數本身30第三十頁,共六十四頁,編輯于2023年,星期五(2)遞歸函數的執行過程【例7.12】編一遞歸函數求n!。思路:以求4的階乘為例:4!=4*3!,3!=3*2!,2!=2*1!,1!=1,0!=1。遞歸結束條件:當n=1或n=0時,n!=1。遞歸公式:n!=1(n=0,1)n×(n-1)!(n>1)31第三十一頁,共六十四頁,編輯于2023年,星期五程序如下:floatfact(intn){floatf=0;if(n<0)printf("n<0,error!");elseif(n==0||n==1)f=1;elsef=fact(n-1)*n;return(f);}main(){intn;floaty;printf("\nInputn:");scanf("%d",&n);y=fact(n);printf("%d!=%-10.0f\n",n,y);}運行情況如下:Inputaintegernumber:44!=2432第三十二頁,共六十四頁,編輯于2023年,星期五遞歸調用過程
回推main()fact(4)fact(3)fact(2)fact(1){{{{{……………
y=fact(4);f=4*fact(3);f=3*fact(2);f=2*fact(1);f=1;
……………return24return6return2return1}}}}}
遞推
33第三十三頁,共六十四頁,編輯于2023年,星期五7.3局部變量和全局變量及其作用域7.3.1變量的作用域1.局部變量及其作用域變量的作用域:變量在程序中可以被使用的范圍。根據變量的作用域可以將變量分為局部變量和全局變量。局部變量(內部變量):在函數內或復合語句內定義的變量以及形參。作用域:函數內或復合語句內。【例7.13】分析下面程序的運行結果及變量的作用域。問題:一個變量在程序的每個函數中都能使用嗎?34第三十四頁,共六十四頁,編輯于2023年,星期五voidsub(inta,intb){intc;a=a+b;b=b+a;c=b-a;printf("sub:\ta=%db=%dc=%d\n",a,b,c);}局部變量main(){
inta=1,b=1,c=1; printf("main:\ta=%db=%dc=%d\n",a,b,c);sub(a,b);printf("main:\ta=%db=%dc=%d\n",a,b,c);
{
inta=2,b=2;printf("comp:\ta=%db=%dc=%d\n",a,b,c);}printf("main:\ta=%db=%dc=%d\n",a,b,c);}局部變量局部變量程序輸出結果:main: a=1b=1c=1sub: a=2b=3c=1main:a=1b=1c=1comp:a=2b=2c=1main: a=1b=1c=135第三十五頁,共六十四頁,編輯于2023年,星期五2.全局變量及其作用域全局變量(外部變量):在函數外部定義的變量。作用域:從定義變量的位置開始到本源文件結束。如在其作用域內的函數或分程序中定義了同名局部變量,則在局部變量的作用域內,同名全局變量暫時不起作用。【例7.14】全局變量和局部變量的作用域。36第三十六頁,共六十四頁,編輯于2023年,星期五inta=5; voidf(intx,inty) {intb,c; b=a+x;c=a-y;printf("%d\t%d\t%d\n",a,b,c);}局部變量main(){intb=6,c=7; f(b,c);printf("%d\t%d\t%d\n",a,b,c);
{inta=9,b=8; printf("%d\t%d\t%d\n",a,b,c);
{
c=10; printf("%d\t%d\t%d\n",a,b,c);
}printf("%d\t%d\t%d\n",a,b,c);
}printf("%d\t%d\t%d\n",a,b,c);}局部變量局部變量程序輸出結果:511-2567987981098105610全局變量37第三十七頁,共六十四頁,編輯于2023年,星期五7.3.2變量的存儲類別及變量的生存期1.變量的生存期與變量的存儲分類變量的生存期:變量在內存中占據存儲空間的時間。思考:1.何時為變量分配內存單元?
2.
將變量分配在內存的什么區域?
3.變量占據內存的時間(生存期)?程序代碼區靜態存儲區動態存儲區存儲分配動態存儲變量靜態存儲變量38第三十八頁,共六十四頁,編輯于2023年,星期五2.變量的存儲類別變量的屬性數據類型:決定為變量分配內存單元的長度;數據的存放形式;數的范圍。存儲類別:決定了變量的生存期;給它分配在哪個存儲區。39第三十九頁,共六十四頁,編輯于2023年,星期五變量定義語句的一般形式存儲類別數據類型變量名1,…,變量名n;auto(自動的)
register(寄存器的)static(靜態的)
extern(外部的)A.自動變量(auto類別)局部變量可以定義為自動變量。main()
{intx,y;…}main()
{autointx,y;…}自動變量等價可省40第四十頁,共六十四頁,編輯于2023年,星期五⑴內存分配調用函數或執行分程序時在動態存儲區為其分配存儲單元,函數或分程序執行結束,所占內存空間即刻釋放。⑵變量的初值定義變量時若沒賦初值,變量的初值不確定,應該賦值;如果在一個程序中函數被多次調用,則每次函數被調用時執行一次賦值操作。⑶生存期
在函數或分程序執行期間。⑷作用域自動變量所在的函數內或分程序內。自動變量41第四十一頁,共六十四頁,編輯于2023年,星期五B.靜態變量(static類別)除形參外,局部變量和全局變量都可以定義為靜態變量。局部靜態變量(或稱內部靜態變量)全局靜態變量(或稱外部靜態變量)靜態變量靜態變量staticinta;main(){floatx,y;…}f(){staticintb=1;……}全局靜態變量局部靜態變量自動變量不能省42第四十二頁,共六十四頁,編輯于2023年,星期五⑴內存分配編譯時,將其分配在內存的靜態存儲區中,程序運行結束釋放該單元。⑵靜態變量的初值若定義時未賦初值,在編譯時,系統自動賦初值為0;若定義時賦初值,則僅在編譯時賦初值一次,程序運行后不再給變量賦初值。⑶生存期整個程序的執行期間。⑷作用域局部靜態變量的作用域是它所在的函數或分程序。全局靜態變量的作用域是從定義處開始到本源文件結束。靜態變量43第四十三頁,共六十四頁,編輯于2023年,星期五44intc;staticinta;main(){floatx,y;…}chars;f(){staticintb=1;……}在函數外定義的變量若沒有用static說明,則是外部變量。外部變量只能隱式定義為extern類別,不能顯式定義。全局靜態變量自動變量局部靜態變量外部變量C.外部變量(extern類別)第四十四頁,共六十四頁,編輯于2023年,星期五
extern
數據類型變量名1,…,變量名n;或
extern
變量名1,…,變量名n;注意:①外部變量聲明用關鍵字extern,而外部變量的定義不能用extern,只能隱式定義。②定義外部變量時,系統要給變量分配存儲空間,而對外部變量聲明時,系統不分配存儲空間,只是讓編譯系統知道該變量是一個已經定義過的外部變量,與函數聲明的作用類似。外部變量(extern類別)的聲明45第四十五頁,共六十四頁,編輯于2023年,星期五【例7.16】在多文件的程序中聲明外部變量。file1.c文件中程序如下:inti;main(){voidf1(),f2(),f3();i=1;f1();printf("\tmain:i=%d",i);f2();printf("\tmain:i=%d",i);f3();printf("\tmain:i=%d\n",i);}voidf1(){i++;printf("\nf1:i=%d",i);}file2.c文件中程序如下:externinti;
voidf2(){inti=3;printf("\nf2:i=%d",i);}voidf3(){i=3;printf("\nf3:i=%d",i);}程序輸出結果:f1:i=2main:i=2f2:i=3main:i=2f3:i=3main:i=3聲明外部變量定義外部變量46第四十六頁,共六十四頁,編輯于2023年,星期五第四十七頁,共六十四頁,編輯于2023年,星期五①局部變量(靜態局部變量與動態局部)靜態局部變量與自動變量(動態局部)的區別:對局部靜態變量來說,當多次調用一個函數時,每次調用完以后,保留其變量的值。而對自動變量來說,當多次調用一個函數時,每次都為其變量賦初值。②全局變量(全局靜態變量與外部變量)全局靜態變量與外部變量的區別在于:全局靜態變量的作用域為所在源文件,而外部變量的作用域為所在源程序。一個源程序由若干個源文件組成幾種變量的區別第四十八頁,共六十四頁,編輯于2023年,星期五例7.15靜態局部變量與自動變量的區別main(){inti;voidf();for(i=1;i<=3;i++)f();}voidf(){autointj=0;++j;printf(“%d\n”,j);}static
輸出:111輸出:123第四十九頁,共六十四頁,編輯于2023年,星期五D.寄存器變量(register類別)<略>只有函數內定義的變量或形參可以定義為寄存器變量。寄存器變量的值保存在CPU的寄存器中。受寄存器長度的限制,寄存器變量只能是char、int和指針類型的變量。【例7.17】寄存器變量的使用。main(){longintsum=0;
registerinti;for(i=1;i<=1000;i++)sum+=i;printf("sum=%ld\n",sum);}程序輸出結果:sum=50050050第五十頁,共六十四頁,編輯于2023年,星期五3.歸納變量的分類按照變量的作用域對變量分類⑴局部變量⑵全局變量按照變量的生存期對變量分類⑴靜態存儲變量包括:局部靜態變量和全局靜態變量⑵動態存儲變量包括:自動變量51第五十一頁,共六十四頁,編輯于2023年,星期五源文件*.c運行文件*.exe目標文件*.obj編譯連接編譯預處理編譯編譯預處理包括:
宏定義文件包含
條件編譯7.4編譯預處理52第五十二頁,共六十四頁,編輯于2023年,星期五7.4編譯預處理(續)源文件*.c運行文件*.exe目標文件*.obj編譯連接main(){floatr,s,c;scanf(“%f”,&r);s=r*r*3.14;c=2*r*3.14;printf(“s=%f,c=%f”,s,c);}?如何修改圓周率53第五十三頁,共六十四頁,編輯于2023年,星期五#define
宏名
字符串宏定義的功能:
在進行編譯前,用字符串原樣替換程序中的宏名。這個替換過程稱為“宏替換”或“宏展開”,字符串也稱為替換文本。
命令的一般格式:7.4.1不帶參數的宏定義7.4編譯預處理(續)54第五十四頁,共六十四頁,編輯于2023年,星期五7.4編譯預處理(續)例如:#definePI
3.14main(){floatr,s,c;scanf(“%f”,&r);s=r*r*PI
;c=2*r*PI
;printf(“s=%f,c=%f”,s,c);}替換3.143.14再進入編譯55第五十五頁,共六十四頁,編輯于2023年,星期五7.4編譯預處理(續)②為了增加程序的可讀性,建議宏名用大寫字母,其他的標識符用小寫字母。③雙引號中有與宏名相同的字符串不進行替換。④已經定義的宏名可以被后定義的宏名引用。在預處理時將層層進行替換。說明:①宏定義的作用域是從定義處開始到源文件結束,但根據需要可用undef命令終止其作用域。形式為:
#undef宏名56第五十六頁,共六十四頁,編輯于2023年,星期五【例7.18】不帶參數的宏定義。源程序:#definePI3.14#defineSPI*r*r#defineV4*S*r/3main(){floatr;printf("\nInputr:");scanf("%f",&r);printf("S=%.2fV=%.2f\n",S,V);}編譯預處理后的程序:main(){floatr;printf("\nInputr:");scanf("%f",&r);printf("S=%.2fV=%.2f\n",3.14*r*r,4*
3.14*r*r
*r/3);}SV再進入編譯57第五十七頁,共六十四頁,編輯于2023年,星期五命令的一般形式7.4.2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CSPSTC 21-2019建筑信息模型(BIM)與物聯網(IOT)技術應用規程
- T/CSIQ 8014.3-2018組串式光伏逆變器技術規范第3部分:直流1 500 V
- T/CSIQ 4101-2017玉器藝術品鑒證質量溯源流程規范
- T/CRIA 19003-2023橡膠手套用泡洗干燥一體機
- T/CRACM 0001-2020埋線針刀技術操作規范
- T/CNESA 1203-2021壓縮空氣儲能系統性能測試規范
- T/CNCA 033-2022礦用鏈臂切頂機通用技術條件
- T/CNACCE 0001-2022團體標準編寫規則
- T/CIIA 023-2022科學數據云平臺運維流程與要求
- T/CHTS 20043-2024路用活化廢胎橡膠粉
- 央企華潤集團杭州片區年度品牌傳播策略案
- 2023年四川省綿陽市中考英語試卷真題(含答案)
- 水電站運維管理
- 微積分基本公式
- 材料的斷裂(1)
- 被子植物門分科檢索表
- 監理預驗收表格(共11頁)
- 中國電信移動終端營銷策略
- 百勝餐飲HIC高效能的輔導
- 《就在今生》班迪達尊者著果儒鐘苑文共譯簡體
- 皇家寵物食品有限公司的營銷策略分
評論
0/150
提交評論