可以.C語言中,任何函數(shù)都可以直接或間接地被自己或其他函數(shù)調(diào)用,包括main函數(shù)(注意我說的是C,不是C++)
創(chuàng)新互聯(lián)客戶idc服務(wù)中心,提供德陽機(jī)房服務(wù)器托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
例如,典型的利用main遞歸實(shí)現(xiàn)逆序輸出
#include?stdio.h
int?main()
{
int?c;
if((c=getchar())?!=?EOF)?//EOF?用Ctrl+Z?或者?F6
{
main();
}
printf("%c",c);
return?0;
}
主函數(shù)不能調(diào)用自己。
主函數(shù)實(shí)際上是有參函數(shù),從操作系統(tǒng)傳入變量,結(jié)束時(shí)有數(shù)值返回操作系統(tǒng)。
int main(int argc, char *argv[]){
return 0;
}
其中:
int argc, char *argv[] 從操作系統(tǒng)傳入
return 0; 返回操作系統(tǒng)
如果你的數(shù)據(jù)不需要同操作系統(tǒng)發(fā)生關(guān)系,你可以寫成自定義函數(shù),主函數(shù)里就一個(gè)語句--調(diào)用這個(gè)自定義函數(shù)。
當(dāng)然可以!
C語言程序的最基本的模塊就是函數(shù),
該程序規(guī)定:任意函數(shù)都可以調(diào)用其它任意一個(gè)函數(shù),包括函數(shù)本身;
1、函數(shù)調(diào)用自己本身, 這種稱為遞歸;
通過遞歸,計(jì)算1+2+3+...+n值的代碼:
2、自定義函數(shù)調(diào)用其它自定義函數(shù)的例子:
這個(gè)例子就是主函數(shù)調(diào)用自定義函數(shù)fun2,然后fun2調(diào)用另一個(gè)自定義函數(shù)fun1;
可以的,前提是,在使用一個(gè)函數(shù)之前必須先對(duì)他進(jìn)行聲明:
//void B();聲明B函數(shù)的存在。
void A()
{
B();//非法,程序執(zhí)行到此時(shí)并不知道B函數(shù)的存在。
}
void B()
{
}
或者
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a++);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
擴(kuò)展資料
從函數(shù)定義的角度看,函數(shù)可分為庫函數(shù)和用戶定義函數(shù)兩種。
(1)庫函數(shù)
由C系統(tǒng)提供,用戶無須定義, 也不必在程序中作類型說明,只需在程序前包含有該函數(shù)原型的頭文件即可在程序中直接調(diào)用。在前面各章的例題中反復(fù)用到printf 、 scanf 、 getchar 、putchar、gets、puts、strcat等函數(shù)均屬此類。
(2)用戶定義函數(shù)
由用戶按需要寫的函數(shù)。對(duì)于用戶自定義函數(shù), 不僅要在程序中定義函數(shù)本身, 而且在主調(diào)函數(shù)模塊中還必須對(duì)該被調(diào)函數(shù)進(jìn)行類型說明,然后才能使用。
其實(shí)是這樣的,主調(diào)函數(shù)會(huì)繼續(xù)執(zhí)行被調(diào)函數(shù)之后的語句。
假設(shè)第一次執(zhí)行travel,判斷root!=NULL,則會(huì)第二次執(zhí)行travel,此處是travel(root-l);。
第二次執(zhí)行的travel語句肯定是要返回的,當(dāng)它返回之后,繼續(xù)執(zhí)行第一次travel中的print_s(root-data);。
然后再執(zhí)行第三次travel,此處是travel(root-r);。
每次travel函數(shù)在if條件滿足,或者下層travel(root-r);返回之后,才會(huì)返回。
同理繼續(xù)向下遞推。
在使用一個(gè)函數(shù)之前必須先對(duì)他進(jìn)行聲明:
//void B();聲明B函數(shù)的存在。void A(){B();//非法,程序執(zhí)行到此時(shí)并不知道B函數(shù)的存在。}void B(){}
或者
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a++);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
擴(kuò)展資料
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a++);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
if(fa(n)==1)
printf("n");
else
printf("y");
system("pause");
exit(0);
}
參考資料:百度百科 - C語言函數(shù)