

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第6章 函數,學習的意義,子模塊1,子模塊2,子模塊n,學習的意義,功能模塊1,功能模塊2,功能模塊n,……,……,……,……,軟件項目,C語言程序,C語言函數,達積木,第6章 函數,本章要求理解模塊化程序設計思想;掌握函數的定義與調用方法;掌握C語言的參數傳遞方式,尤其是數組參數的傳遞特點;掌握變量的作用域和存儲方式。,本章重點函數的定義與調用參數傳遞變量的作用域和存儲方式,本章難點參數傳遞變量的作用域和存儲方式
2、,第6章 函數,6.1 函數概述 6.2 函數的定義 6.3 函數調用與參數傳遞 6.4 函數與指針 6.5 main函數的參數 6.6 函數與變量的作用域 6.7 應用程序舉例,模塊化程序設計方法:人們在求解某個復雜問題時,通常采用逐步分解、分而治之的方法,也就是將一個大問題分解成若干個比較容易求解的小問題,然后分別求解。程序員在設計一個復雜的應用程序時,往往也是把整個程序劃分成若干個功能較為單一的程序模
3、塊,然后分別予以實現,最后再把所有的程序模塊象達積木一樣裝配起來,這種在程序設計中分而治之的策略,被稱為模塊化程序設計方法。,6.1.1 程序化設計方法,6.1 函數概述,6.1 函數概述,例6-1 編寫一個顯示歡迎信息的程序,要求所有的信息均在一個星號組成的矩形框中顯示。,程序輸出如下:****************************Please input your name! ***********
4、******************Xiao Qiang *****************************Welcome to the C world! ****************************,程序代碼如下:#include #include #define USERNAME "XiaoQiang"voi
5、d message(char *s);//函數聲明void main() { char name[10]; message("Please input your name!");//函數調用 scanf("%s",name); if(strcmp(name,USERNAME)==0) message("Welcome to t
6、he C world!"); else message("Error Username");//函數調用 },void message(char *s) //函數定義{ int n,i; n=strlen(s);//求字符串S的長度 for(i=1;i<=n+4;i++) printf("%c",'*
7、'); printf("\n"); printf("* %s *\n",s); for(i=1;i<=n+4;i++) printf("%c",'*'); printf("\n");},6.1 函數概述,程序輸出如下:****************************P
8、lease input your name!****************************XiaoQiang****************************Welcome to the C world!****************************C程序的層次關系,C語言使用函數作為程序的組成單元的優(yōu)點是: 1)簡化程序設計: 將常執(zhí)行的一些操作寫成函數后,可以像利用庫
9、函數一樣 調用。 2)便于調試和維護: 龐大的程序分成若干功能獨立的小模塊,便于管理和調試。,6.1 函數概述,6.1 函數概述,6.1.2 C函數的分類從使用角度劃分 標準函數,即庫函數 (#include)自定義函數 (為解決不同問題而編寫)從函數形式劃分 無參函數 (函數定義時圓括號內為空或者void)有參函數 從函數的結果劃分 無返回值函數 (完成某項任務不向主函數返回函數值
10、)有返回值函數 (返回結果)從函數的存儲類型劃分 外部函數(extern) (可以被其他文件中的函數調用)靜態(tài)函數(static) (只限于本文件中的函數用),6.2.1一般格式,合法標識符,函數返回值類型缺省int型無返回值void,函數體,例 有參函數 int max(int x,int y) { int z; z=x>y?x:y; return(z); },例 無
11、參函數 printstar( ) { printf(“**********\n”); }或 printstar(void ) { printf(“**********\n”); },6.2 函數的定義,6.2 函數的定義,6.2.2 函數返回值C語言通過return語句獲得函數返回值的,其格式如下:return 表達式; 或 return(表達式);,說明: 表達式的值即函數返回值,它應與所
12、定義的函數返回值的類型一致 一個函數可以有多條return語句,執(zhí)行到哪一條return語句,哪一條起作用 return語句的另一作用是終止執(zhí)行函數 為增加程序的可讀性,建議只在函數結尾處使用一次return語句,6.2 函數的定義,6.2.3 形式參數的設計設計形式參數應從函數的功能分析入手,那個數據需要調用函數提供,這就應定義一個形式參數接收該數據 。,例6-3 編寫一個函數求一個3位正整數的逆序數,如123的逆序數是321
13、。 #include int fun(int n);//函數聲明void main(){ int x,y; do { printf(" Enter a number x=?:"); scanf("%d",&x); }while(x999); y=fun(x);//函數調用 printf(&qu
14、ot;Inverse number:%d\n",y);}int fun(int n)//函數定義{ int a,b,c,m;a=n%10;b=n/10%10;c=n/100; m=a*100+b*10+c; return(m);},6.2 函數的定義,6.2.4 函數原型 在使用自定義函數時,除了進行函數的定義外,還需要在調用該函數之前對其進
15、行原型聲明 函數原型聲明和函數定義的區(qū)別函數原型聲明的作用是將函數類型告訴編譯系統(tǒng),使程序在編譯階段對調用函數的合法性進行全面的檢查,避免函數調用時出現參數的個數或類型不一致的運行錯誤。函數定義部分則是函數的實際實現代碼 函數原型聲明的格式:類型符 函數名(形式參數);,說明:(1)函數原型聲明語句最后的分號不能省略,其作用是表示該語句是進行函數聲明而不是函數定義。(2)在原型聲明中,形式參數名可以省略。(3)如果被調用函
16、數的定義出現在調用函數之前,可以不對被調用函數進行原型聲明。(4)如果被調用函數已在所有函數定義之前進行了原型聲明,則在各個調用函數中不必再對該函數進行原型聲明 。,例: 函數說明舉例,void main( ){ float add(float,float); //函數原型聲明 float a, b ,c; scanf ("%f,%f", &a, &b);
17、c = add (a, b); printf ("sum is %f", c);}float add (float x, float y){ float z; z = x + y; return (z);},6.3 函數調用與參數傳遞,6.3.1 函數的調用方式 有參函數調用的格式:函數名(實際參數)無參函數的調用格式:函數名( ) 說明 函數總是在某個函數體
18、中被調用 函數調用可以在結尾處加上分號,單獨作為一條語句 對于有返回值的函數,其調用也可以出現在某條語句中函數的調用過程,四類函數的詳細說明,1、無參數無返回值的函數,定義格式,void 函數名 (void){ 變量聲明部分 執(zhí)行部分},空類型,表明函數無返回值,不可?。?表明無參數,可缺??!,必須為合法的標識符,函數用途,此類函數用于完成某項固定的處理任務,執(zhí)行完成后不向調用者返回函數值。,函數的原型聲
19、明,void 函數名( void ); 或 void 函數名( );,C規(guī)定,對函數調用前必須對其原型加以聲明,否則會出現編錯!,6.3 函數調用與參數傳遞,1、無參數無返回值的函數,函數的調用,函數名( );,注意:不能將這種函數調用賦值給任何變量,因為它沒有返回值。調用時,( )中間不能有void。,實例,#include #include void showerror ( ); //聲明showerr
20、or函數的原型void main ( ){ int a; scanf ("%d", &a); while (a < 0) { showerror( ); scanf ("%d", &a); } printf ("sqrt(a) = %.2f\n", sqrt(a));}
21、void showerror( ) //函數的定義,無參數無返回值{ printf("input error!\n"); //函數體,沒有聲明變量},注意:對函數調用之前,必須要先聲明或先定義,否則編譯錯!,編寫C程序的一般格式,文件包括(如include 等,用于標準庫庫函數原型聲明)常量定義(根據需要而定,如#define PI 3.1415等)變量定義(根據需要而定)用戶
22、自定義函數原型聲明main函數用戶自定義函數,函數的返回,形式,① rerurn (表達式); //有返回值 ② rerutn 表達式; //有返回值 ③ return; //無返回值,使程序控制從被調用函數返回到調用函數中,如果有返回值,同時把返值帶給調用函數。,功能,說明,函數中可以有多個return語句。在無返回值的函數中,return語句的形式只能是第③種形式。
23、,例如:void showyes ( ){ char key; key = getchar ( ); if (strupr(key) != 'Y') return; printf ("YES! ");},函數showyes的功能是: 如果輸入的字符不是'Y'或'y',則什么都不輸出,直接返回,否則,輸出"YES!
24、",標準庫函數,其功能是將小寫字符轉換成大寫字符,2、無參數有返回值的函數,定義格式,返回值類型符 函數名 (void){ 變量聲明部分 執(zhí)行部分},可以為除數組類型外的任何類型,缺省時,默認為int型,表明無參數,可缺??!,必須為合法的標識符,函數用途,此類函數用于完成某項固定的處理任務,執(zhí)行完成后向調用者返回函數值。,函數的原型聲明,返回值類型符 函數名( void ); 或 返回值類型符 函數
25、名( );,函數的調用,函數名( void ); 或 變量 = 函數名( );,2、無參數有返回值的函數,函數的返回,表達式的值即是函數的返回值; 函數體中一般都包含return(表達式)語句, 如果沒有, 函數也會返回一個值。這個值是不可預知的, 將會使程序可能犯有邏輯錯; 一般情況下,表達式值的類型應與函數返回值類型一致; 當return(表達式)語句中的表達式的類型與函數的返回值類型不一致時,編譯器將對表
26、達式進行強制類型轉換, 將表達式的值強制轉換成函數返回值類型, 然后返回給調用者。,格式,rerurn (表達式); 或 rerutn 表達式;,說明,int func ( ){ float f = 5; f = f / 2; return ( f );},函數將返回2,而不是2.5,注意:如果不將函數調用賦值給任何變量,它的返回值將被丟棄!,3、有參數無返回值的函數,定義格式,void 函數名 (類
27、型符1 形參名1, 類型符2 形參名2, … , 類型符n 形參名n ){ 變量聲明部分 執(zhí)行部分},函數用途,此類型的函數主要是根據形參的值來進行某種事務的處理。靈活性上要比無形參的函數強,它更能體現調用函數與被調函數之間的數據聯系。,函數的原型聲明,void 函數名(類型符1 形參名1, 類型符2 形參名2, … , 類型符n 形參名n ); 或 void 函數名(類型
28、符1 , 類型符2 , … , 類型符n );,至少要有一項,形參之間要用逗號“,”分開,指明形參類型,不允許對形參賦初值,3、有參數無返回值的函數,函數調用,函數名( 實參1,實參2,……,實參n );,實參可以是常量、變量、表達式、函數等,注意事項: (1) 實參列表中的實參必須與函數定義時的形參數量相同、類型相符。 (2) 賦值對應關系: 實參1 -> 形參1 實參2 -&g
29、t; 形參2 …… 實參n -> 形參n (3)實參表求值順序(即實參賦值給形參的順序) 因系統(tǒng)而定。TC、BC、VC均是自右向左,也就是說最右邊的實參最先賦值給最右邊的形參, 最左邊的實參最后賦值給最左邊的形參。但VC與TC、BC在具體賦值時稍有不同,注意它們之間的區(qū)別。,3、有參數無返回值的函數,#include void compare (int a, int b);
30、 void main ( ){ int i = 2,j=3; compare ( i, j ); printf ("i = %d,j=%d\n", i,j);}void compare ( int a, int b ) { printf ("a = %d b = %d\n", a, b); if ( a >
31、; b) printf ("a > b\n"); else if (a == b) printf ("a = b\n"); else printf ("a < b\n");},i,j為實參,,,a、b為形參,,原型聲明,3,2,2,4、有參數有返回值的函數,定義格式
32、,返回值類型符 函數名 (類型符1 形參名1, … … , 類型符n 形參名n ){ 變量聲明部分 執(zhí)行部分},函數用途,此類型的函數主要是根據形參的值來進行某種事務的處理,同時可將處理后的結果值返回給調用函數 。它最能體現調用函數與被調函數之間的數據聯系。,函數的原型聲明,返回值類型符 函數名(類型符1 形參名1, …… , 類型符n 形參名n );
33、 或 返回值類型符 函數名(類型符1 , 類型符2 , …… , 類型符n );,4、有參數有返回值的函數,函數調用,函數名( 實參1,實參2,……,實參n ); 或變量名 = 函數名( 實參1,實參2,……,實參n );,#include int max (in t a, int b); //函數的原型聲明void main ( ){ int a, b, c; scanf (&q
34、uot;%d%d", &a, &b); c = max (a, b); //函數調用(a、b為實參) printf ("the biggest number is : %d\n", c);}int max (int a, int b) //函數定義(a、b為形參){ return (a > b ? a : b);},運行結果:5 9↙the big
35、gest number is 9,函數調用和函數說明小結,函數調用,函數語句: 例:printstar ( ); printf (“Hello,World!\n”); 函數表達式: 例: m = max (a, b) * 2; 函數參數: 例: printf (“%d”, max(a,b)); m = max (a, max(b,c));,6.3 函數調用與
36、參數傳遞,函數說明 對被調用函數要求:必須是已存在的函數庫函數: #include 用戶自定義函數: 函數類型說明 函數說明一般形式: 函數類型 函數名(形參類型 [形參名],….. ); 或 函數類型 函數名( );作用:告訴編譯系統(tǒng)函數類型、參數個數及類型,以便檢驗函數定義與函數說明不同函數說明位置:程序的數據說明部分(函數內或外)下列情況下,可
37、不作函數說明 若函數返值是char或int型,系統(tǒng)自動按int型處理 被調用函數定義出現在主調函數之前有些系統(tǒng)(如BC、VC)要求函數說明指出函數返值類型和形參類型,并且對void 和 int 型函數也要進行函數說明,6.3 函數調用與參數傳遞,6.3.2 參數傳遞 參數是函數調用進行信息交互的載體,分形參和實參。形式參數又稱為形參或虛參:定義函數時,寫入函數圓括號內的參數。事實上,形參是一種局部變量,它在函數被調用前并沒有
38、被分配存儲空間,也沒有具體的值。形參僅僅是一個“符號”。 實際參數又稱為實參:調用函數時,寫入函數圓括號內的參數,可以是常量、變量或表達式,它有具體的值。對于實參變量而言,它已經被分配了相應的存儲空間。,函數之間參數的傳遞:調用有參函數,系統(tǒng)根據形參的類型為其分配存儲空間,其內容為形參的值。調用時應該提供與形參匹配的實參,匹配——個數和類型。,例: 交換兩個數(值傳遞方式),#include void swap (int a, i
39、nt b); void main ( ){ int x = 7, y = 11; printf ("before swapped: "); printf ("x=%d, y=%d\n", x, y); swap (x, y); printf ("after swapped: "); printf ("x
40、=%d, y=%d\n", x, y);}void swap (int a, int b){ int temp; temp = a; a = b; b = temp;},運行結果:before swapped: x = 7, y = 11after swapped: x = 7, y = 11,,,7,,,11,,7,Why?,#include void swap
41、(int a, int b); void main ( ){ int x = 7, y = 11; printf ("before swapped: "); printf ("x=%d, y=%d\n", x, y); swap (&x, &y); printf ("after swapped: ");
42、 printf ("x=%d, y=%d\n", x, y);}void swap (int *a, int *b){ int temp; temp = *a; *a = *b; *b = temp;},運行結果:before swapped: x = 7, y = 11after swapped: x = 11, y =7,6.3.3 指針變量作參
43、數(仍為值傳遞),,,,,③ swap,③ swap,③ swap,,③ swap,,,③ swap,6.3 函數調用與參數傳遞,注意:不能試圖通過調用以下函數來交換實參變量的值。程序代碼如下:void swap(int *a,int *b) { int *t; t=a; a=b; b=t; },1、值傳遞方式,方式: 函數調用時,為形參分配單元,并將實參的值復制到形參中;調用結束,形參單元被
44、釋放,實參單元仍保留并維持原值。 特點: ① 形參與實參占用不同的內存單元 ② 單向傳遞 這種參數傳遞過程被形象的稱為“虛實結合”。,6.3 函數調用與參數傳遞,C語言中的參數傳遞是一種單向的“值傳遞”。,6.3 函數調用與參數傳遞,6.3.4 數組參數 當程序中需要處理一批相關數據時,往往用數組。若要實現函數功能時需要獲取一批相關數據作為原始信息,這個時候就可以考慮用數組參數。本節(jié)主要討論的是數組整體作為參數傳
45、遞。單個數組元素作為實參仍然為值傳遞,值傳遞,main( ){ float fun(float a,float b,float c); float a[3]={1,2,3}; float ave=0; ave=fun(a[0],a[1],a[2]); }float fun(float a,float b,float c){ float sum,aver; sum=a+b+c; av
46、er=sum/3.0; return(aver);},求三個數的平均值:,數組元素作為參數,程序的運行:,fun( ),,main( ),,,,,,②執(zhí)行函數體,③返回函數值釋放相應空間,,,數組元素a[0] , a[1],a[2]作實參,,6.3 函數調用與參數傳遞,6.3 函數調用與參數傳遞,一維數組參數(與值傳遞方式不同) 例6-7 定義一個函數max_value用于返回一個10個元素組成的一維整型數組中的最大值。,
47、程序代碼如下:#include #include #include int max_value(int a[]);//函數原型聲明void main(){ int x[10],i; printf("Array:"); srand(time(NULL));//初始化隨機數發(fā)生器 for(i=0;it)t=a[i]; return(t); },6.3 函數
48、調用與參數傳遞,一維數組參數數組參數傳遞 傳遞數組的首地址 通常情況下,數組做函數參數,需要再定義一個整型形參,用于傳遞數組元素個數的信息。,#include main( ){ float fun2(float x[3]); float a[3]={87.5,90,100}; float ave=0; ave=fun2(a); }float fun2(float x[3]){ float sum,aver;
49、 sum=x[0]+x[1]+x[2]; aver=sum/3.0; return(aver);},求三個數的平均值:,數組名作為函數參數,程序的運行:,fun2( ),,main( ),,,,②執(zhí)行函數體,③返回函數值釋放相應空間,①傳地址,,,形參與實參共用地址空間,,x,,,地址傳遞,,地址傳遞,#include main( ){ void swap(int x[2]); int a[2]
50、={4,9}; swap(a); printf(“%d,%d\n”,a[0],a[1]); }void swap(int x[2]){ int t; t=x[0]; x[0]=x[1]; x[1]=t;},兩個數交換數值:,地址傳遞使形參與實參共用地址空間,形參值改變,則實參值也改變,,,②執(zhí)行函數體,③返回函數值釋放相應空間,①傳地址,,程序的運行:,swap( ),,main( ),,
51、,x,,,實參數組必須指定長度,形參數組則不必。 形參數組并沒有另外分配空間,而是共享實參數組的數據。 使用形參數組時不要超過實參數組的長度。,長度2可省,2、地址傳遞方式,定義形式:類型名 形參數組名[] 方式: 函數調用時,將數據的存儲地址(同類型數組名稱)作為參數傳遞給形參 特點: ① 形參與實參占用同樣的存儲單元 ② 雙向傳遞 ③ 實參和形參必須是地址常量或變量,用數組名作為函數參數時還應注意
52、以下幾點: 形參數組和實參數組的類型必須一致,否則將引起錯誤。 形參數組和實參數組的長度可以不相同,因為在調用時,只傳送首地址而不檢查形參數組的長度。 多維數組也可以作為函數的參數。在函數定義時對形參數組可以指定每一維的長度,也可省去第一維的長度。,判斷以下定義形式哪些是正確的?int max(int x[3]) int max(int x[]) int max(x[3])
53、 int max(int x),6.3 函數調用與參數傳遞,例6-8編寫一個實現一維數組排序的函數。 程序代碼如下: #include #include #include void sort(int a[],int n);//函數原型聲明void main(){ int x[10],i; srand(time(NULL)); printf("Before sorti
54、ng:\n"); for(i=0;i<10;i++) { x[i]=rand()%90+10; printf("%3d",x[i]); } sort(x,10);//函數調用 printf("\nAfter sorting:\n"); for(i=0;i<10;i++) printf(
55、"%3d",x[i]);},6.3 函數調用與參數傳遞,void sort(int a[],int n)//排序函數{ int i,j,k,t; for(i=0;ia[j])k=j; if(k!=i) { t=a[i]; a[i]=a[k]; a[k]=t; } }},6.3 函數調用與
56、參數傳遞,多維數組參數 多維形參數組的定義形式為:類型名 形參數組名[][數值]……[數值],即除了最左邊的方括號可能留空外,其余都要填寫數值。調用使用多維數組參數的函數時,與形參數組對應的實參是一個同類型的數組名,也不需要加上任何方括號。例6-10 編寫一個函數用于查找并返回3×4的矩陣中的最大元素。程序代碼如下:#include #include #include int max_value(int a[]
57、[4],int n, int *row, int *col);void main(){ int x[3][4]; int m,i,j,r,c; srand(time(NULL)); for(i=0;i<3;i++) { for(j=0;j<4;j++),6.3 函數調用與參數傳遞,{ x[i][j]=rand()%90+10; printf("
58、;%3d",x[i][j]); } printf("\n"); } m=max_value(x,3,&r,&c); printf("The max value is %d\n",m); printf("The position is %d row, %d column\n",r,c);}int m
59、ax_value(int a[][4],int n, int *row, int *col){ int max,i,j; max=a[0][0]; *row=0; *col=0; for(i=0;i<n;i++) for(j=0;j<4;j++) if(max<a[i][j]) { max=a[i][j]; *row=i; *col
60、=j; } return(max);},實參與形參的小結,6.3.5 函數的嵌套與遞歸調用,C規(guī)定:函數定義不可嵌套,但可以嵌套調用函數,1、函數的嵌套調用,嵌套調用:在調用一個函數的過程中又調用了另外一個函數,叫作函數的嵌套調用。嵌套調用的執(zhí)行過程:從什么地方調用函數,就返回到什么地方。,6.3 函數調用與參數傳遞,函數的嵌套調用,main( )函數,. . .
61、 .調用函數a,a( )函數,. . . .調用函數b,b( )函數,結束,,,,,【例】計算三個數中最大數與最小數的差。,#include int dif (int x, int y, int z); int max (int x, int y, int z); int min (int x, int y, int z);void main ( ){
62、 int a, b, c, d; scanf ("%d%d%d", &a, &b, &c); d = dif (a, b, c); printf ("Max - Min = %d\n", d);},int dif (int x, int y, int z) { return (max(x, y, z) –
63、 min(x, y, z)); }int max (int x, int y, int z) { int r; r = x > y ? x : y; return (r > z ? r : z); }int min (int x, int y, int z) { int r; r = x < y ? x : y; return
64、 (r < z ? r : z); },main( ),調用函數dif,輸出結束,dif函數,max函數,調用函數max,,,,,,調用函數min,,,,,,,min函數,,,6.3 函數調用與參數傳遞,例6-11 編寫一個小學四則運算練習程序,程序可根據用戶的選擇隨機生成加、減、乘、除練習題目,并分析運算結果是否正確。 程序代碼如下:#include #include #include void exam(in
65、t n);void add(void);void sub(void);void mul(void);void division(void);,6.3 函數調用與參數傳遞,void main(){ int n; while(1) { printf("********\n"); printf("*1-ADD *\n"); printf(
66、"*2-SUB *\n"); printf("*3-MUL *\n"); printf("*4-DIV *\n"); printf("*0-EXIT*\n"); printf("********\n"); printf("Please select
67、0-4:"); scanf("%d",&n); if(n4)printf("Invalid number!\n"); else if(n==0)break; else exam(n); }},6.3 函數調用與參數傳遞,void exam(int n){ switch(n) {
68、 case 1:add(); break; case 2:sub(); break; case 3:mul(); break; case 4:division(); }},6.3 函數調用與參數傳遞,void add(void)//求兩隨機整數之和{ int x,y,z,result; srand(time(NULL));//初始化系統(tǒng)隨機數發(fā)生器 x=
69、rand()%100;//產生0~99的隨機整數 y=rand()%100; z=x+y; printf("%d+%d=",x,y); scanf("%d",&result); if(result==z)printf("OK\n"); else printf("Sorry\n%d+%d=%d\n"
70、,x,y,z);},6.3 函數調用與參數傳遞,void sub(void)//求兩隨機整數之差{ int x,y,z,result; srand(time(NULL)); x=rand()%100; y=rand()%100; z=x-y; printf("%d-%d=",x,y); scanf("%d",&result
71、); if(result==z)printf("OK\n"); else printf("Sorry\n%d-%d=%d\n",x,y,z);},6.3 函數調用與參數傳遞,void mul(void)//求兩隨機整數之乘積{ int x,y,z,result; srand(time(NULL)); x=rand()%100; y=ran
72、d()%100; z=x*y; printf("%d*%d=",x,y); scanf("%d",&result); if(result==z)printf("OK\n"); else printf("Sorry\n%d*%d=%d\n",x,y,z);},6.3 函數調用與參數傳遞,void divisio
73、n(void)//求兩隨機整數之商{ int x,y,z,result; srand(time(NULL)); do//產生兩隨機整數使得x能被y整除 { x=rand()%100; y=rand()%100; }while(x%y!=0||y==0); z=x/y; printf("%d/%d=",x,y); scan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論