『壹』 c語言中如何調用子程序
例:
#include<stdio.h>
intsushu(intx)
{inti;
for(i=2;i<x;i++)
if(x%i==0)break;
if(i==x)return1;
elsereturn0;
}
main()
{inti,n=0;
for(i=2;i<=1000;i++)
if(sushu(i)==1)n++:
printf("n=%d",n);
}
(1)c語言怎麼在子函數中調用子函數擴展閱讀
使用vfork()新建子進程,然後調用exec函數族
#include<unistd.h>
main()
{
char*argv[]={「ls」,」-al」,」/etc/passwd」,(char*)};
if(vfork()==0)
{
execv(「/bin/ls」,argv);
}else{
printf(「Thisistheparentprocess 」);
}
}
『貳』 求教:c語言子函數調用的方法(詳細點)(例如:A,B,C,D都是子函數,想實現他們之間隨時互相調用,可以么
他們之間可以相互調用,只是傳值的問題,最簡單的就是只調用一個函數,然後你可以以此類推。
max(int x,int y) //聲明函數
{
int z;
z=x>y?x:y;
return(z);
}
main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b); //調用函數
printf("Max is %d",c);
}
利用參數進行值的傳遞。
如果max();需要再調用其他的函數,同樣利用值的傳遞方法,或者無值也可以調用其他函數,函數本身也可以調用自己本身。
令者,如果a函數在執行過程中要調用b函數,而在調用b函數的同時又要調用a函數,這些屬於間接調用,是無終止的,顯然,程序中不應出現這種無終止的遞歸調用,而只應該出現有限次數的、有終止的遞歸調用,這可以用if語句來控制,只有在某一條件成立時候才繼續執行遞歸調用,否則就不再繼續。
希望以上能夠幫助到你
『叄』 在C語言中怎麼將子函數中的數組和函數調用出來
來傳送子函數中的數組有多種方法——可以通過函數返回值返回地址傳遞數組;也可以通過函數輸入參數來傳遞數組;還可以通過全局變數來傳遞數組。
子函數本身可以直接在作用域中進行調用。
1、通過函數返回值返回地址傳遞數組。
聲明函數時需要聲明函數返回值類型為對應數組的地址,此時可以返回數組的地址,結合數組元素的地址關系可以傳遞整個數組,同時可以根據數組的特性傳遞多個參數。
注意:子函數是C語言模塊化編程思想的核心,其方法是通過輸入介面和輸出介面實現對黑盒的調用,故對其內部數據的輸入和調用也需要通過輸入介面、輸出介面和程序的公共區域實現。
『肆』 C語言中 函數使用子函數時一般有哪三個步驟
C語言中想要使用一個自定義函數一般有以下三個步驟:
一、函數聲明:
在開發大型軟體都是採用多人合作開發,一般一個人負責實現幾個功能,這些功能都是通過函數來實現。這總情況下我們一般採用函數聲明和定義分開模式。即函數聲明放在頭文件里。需要用到時包含相應的頭文件及方法庫即可,庫函數就是這種模式。函數的聲明主要是說明函數的名稱以及其所需要的參數類型,參數可以只寫類型不寫變數名,函數定義是需要變數名。
二、函數定義
這一步主要是寫函數功能的實現方法,代碼塊,核心部分。比步可以在函數聲明時進行,即聲明同時定義方法。不過這種方式不適合分享,因為你不一定想分享你的代碼,也許只想分享這個功能。不管哪種方法,在調用函數之前必須進行函數聲明。
三、函數調用
經過以上兩步,我們的函數已經完成。接下來就是使用函數,使用前先搞清楚函數需要有哪些參數,參數一定要傳入合適的類型。第二函數有沒有返回值,返回值的含義。我們可以通過返回值判斷函數的執行情況,一般函數最好有返回值。想清楚後直接調用函數即可。
『伍』 C語言中一個子函數怎麼調用另一個子函數的運算
方法很多。
主要是要將不同類型傳遞給fun2處理。
最簡單float類型最大,fun2的參數類型就定義為float,然後運算結果返回float類型。在main函數用a3,b3,c3接收的時候強轉型。
另一種方法,把變數都轉換成一種類型傳遞。這里用union共用體類型就比較適合。還方便擴展,如果想添加其他類型還可以在union里添加。
我這里代碼就用第二種方法寫。
#include <stdio.h>
typedef union data{
char c;
int i;
float f;
}DA;
void fun1(void);
DA fun2(DA n1,DA n2,int nType);//nType=1:char類型。nType=2:int類型。nType=3:float類型。
int main()
{
fun1();
return 0;
}
void fun1(void)
{
char a1=1,a2=2;
int b1=100,b2=300;
float c1=5.1,c2=6.8;
DA n1,n2;
n1.c=a1,n2.c=a2;
char a3=fun2(n1,n2,1).c;
n1.i=b1,n2.i=b2;
int b3=fun2(n1,n2,2).i;
n1.f=c1,n2.f=c2;
float c3=fun2(n1,n2,3).f;
printf("a3=%c b3=%d c3=%.2f ",a3,b3,c3);
}
DA fun2(DA n1,DA n2,int nType)//nType=1:char類型。nType=2:int類型。nType=3:float類型。
{
DA n3;
switch(nType)
{
case 1:n3.c=n1.c+n2.c;break;
case 2:n3.i=n1.i+n2.i;break;
case 3:n3.f=n1.f+n2.f;break;
}
return n3;
}
『陸』 c語言中,如何將子函數的一個變數值調用到另一個子函數中
主函數里定義
int
a[100];
子函數定義
void
fun(int
in[]);
調用子函數
fun(a);
『柒』 c語言中子函數能不能調用子函數
函數可以調用自身,這叫做函數的遞歸調用
一、基本內容:
C語言中的函數可以遞歸調用,即:可以直接(簡單遞歸)或間接(間接遞歸)地自己調自己。
要點:
1、C語言函數可以遞歸調用。
2、可以通過直接或間接兩種方式調用。目前只討論直接遞歸調用。
二、遞歸條件
採用遞歸方法來解決問題,必須符合以下三個條件:
1、可以把要解決的問題轉化為一個新問題,而這個新的問題的解決方法仍與原來的解決方法相同,只是所處理的對象有規律地遞增或遞減。
說明:解決問題的方法相同,調用函數的參數每次不同(有規律的遞增或遞減),如果沒有規律也就不能適用遞歸調用。
2、可以應用這個轉化過程使問題得到解決。
說明:使用其他的辦法比較麻煩或很難解決,而使用遞歸的方法可以很好地解決問題。
3、必定要有一個明確的結束遞歸的條件。
說明:一定要能夠在適當的地方結束遞歸調用。不然可能導致系統崩潰。
三、遞歸實例
例:使用遞歸的方法求n!
當n>1時,求n!的問題可以轉化為n*(n-1)!的新問題。
比如n=5:
第一部分:5*4*3*2*1 n*(n-1)!
第二部分:4*3*2*1 (n-1)*(n-2)!
第三部分:3*2*1 (n-2)(n-3)!
第四部分:2*1 (n-3)(n-4)!
第五部分:1 (n-5)! 5-5=0,得到值1,結束遞歸。
源程序:
fac(int n)
{int t;
if(n==1)||(n==0) return 1;
else
{ t=n*fac(n-1);
return t;
}
}
main( )
{int m,y;
printf(「Enter m:」);
scanf(「%d」,&m);
if(m<0) printf(「Input data Error!\n」);
else
{y=fac(m);
printf(「\n%d! =%d \n」,m,y);
}
}
四、遞歸說明
1、當函數自己調用自己時,系統將自動把函數中當前的變數和形參暫時保留起來,在新一輪的調用過程中,系統為新調用的函數所用到的變數和形參開辟另外的存 儲單元(內存空間)。每次調用函數所使用的變數在不同的內存空間。
2、遞歸調用的層次越多,同名變數的佔用的存儲單元也就越多。一定要記住,每次函數的調用,系統都會為該函數的變數開辟新的內存空間。
3、當本次調用的函數運行結束時,系統將釋放本次調用時所佔用的內存空間。程序的流程返回到上一層的調用點,同時取得當初進入該層時,函數中的變數和形參 所佔用的內存空間的數據。
4、所有遞歸問題都可以用非遞歸的方法來解決,但對於一些比較復雜的遞歸問題用非遞歸的方法往往使程序變得十分復雜難以讀懂,而函數的遞歸調用在解決這類 問題時能使程序簡潔明了有較好的可讀性;但由於遞歸調用過程中,系統要為每一層調用中的變數開辟內存空間、要記住每一層調用後的返回點、要增加許多額外的 開銷,因此函數的遞歸調用通常會降低程序的運行效率。
五、程序流程
fac(int n) /*每次調用使用不同的參數*/
{ int t; /*每次調用都會為變數t開辟不同的內存空間*/
if(n==1)||(n==0) /*當滿足這些條件返回1 */
return 1;
else
{ t=n*fac(n-1); /*每次程序運行到此處就會用n-1作為參數再調用一次本函數,此處是調用點*/
return t; /*只有在上一句調用的所有過程全部結束時才運行到此處。*/
}
}
『捌』 c語言中,怎麼實現從一個子函數直接跳到另一個子函數
直接調用就可以了。例如:
hanshu1(){
printf("this is hanshu1");
}
hanshu2(){
printf("this is hanshu2");
hanshu1();
}
『玖』 c語言在子函數中調用其他子函數應注意的問題
第一:要保證可以最終退出。
就是說,這樣的調用最終可以回來。
第二:避免循環調用。
就是說當A調用B,然後B又調用A這種情況,一定要有可以跳出的情況,讓某個A或者B在一定條件下不再調用對方就可以返回。
第三:避免調用深度過深。
就是說不能一直調用下去。這個具體能夠調用多少次根據你的硬體/代碼等具體情況確定的。一般來說,1000次是沒有問題的,但是上萬次就基本會出問題了。