C语言.docx
- 文档编号:25046552
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:39
- 大小:24.02KB
C语言.docx
《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(39页珍藏版)》请在冰豆网上搜索。
C语言
前面我们说的都是无参数无返回值的函数,实际程序中,我们经常使用到带参数有返回值的函数。
一、函数参数传递
1.形式参数和实际参数
函数的调用值把一些表达式作为参数传递给函数。
函数定义中的参数是形式参数,函数的调用者提供给函数的参数叫实际参数。
在函数调用之前,实际参数的值将被拷贝到这些形式参数中。
2.参数传递
先看一个例子:
void a(int); /*注意函数声明的形式*/
main()
{
int num;
scanf(\"%d\",&num);
a(num); /*注意调用形式*/
}
void a(int num_back) /*注意定义形式*/
{
printf(\"%d\\n\",num_back);
}
在主函数中,先定义一个变量,然后输入一个值,在a()这个函数中输出。
当程序运行a(num);这一步时,把num的值赋值给num_back,在运行程序过程中,把实际参数的值传给形式参数,这就是函数参数的传递。
形参和实参可能不只一个,如果多于一个时,函数声明、调用、定义的形式都要一一对应,不仅个数要对应,参数的数据类型也要对应。
void a(int,float);
main()
{
int num1;
float num2;
scanf(\"%d\",&num1);
scanf(\"%f\",&num2);
a(num1,num2);
}
void a(int num1_back,float num2_back)
{
printf(\"%d,%f\\n\",num1_back,num2_back);
}
上面的例子中,函数有两个参数,一个是整型,一个是浮点型,那么在声明、调用、定义的时候,不仅个数要一样,类型也要对应。
如果不对应,有可能使的编译错误,即使没错误,也有可能让数据传递过程中出现错误。
再看一个例子:
void a(int);
main()
{
int num;
scanf(\"%d\",&num);
a(num);
}
void a(int num)
{
printf(\"%d\\n\",num);
}
看上面的例子,形式参数和实际参数的标识符都是num,程序把实际参数num的值传递给形式参数num。
有些人可能就不明白了,既然两个都是num,为什么还要传递呢?
干脆这样不就行了吗:
分类函数,所在函数库为ctype.h
intisalpha(intch)若ch是字母('A'-'Z','a'-'z') 返回非0值,否则返回0
intisalnum(intch)若ch是字母('A'-'Z','a'-'z')或数字('0'-'9') 返回非0值,否则返回0
intisascii(intch)若ch是字符(ASCII码中的0-127)返回非0值,否则返回0
intiscntrl(intch)若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0
intisdigit(intch)若ch是数字('0'-'9')返回非0值,否则返回0
intisgraph(intch)若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0
intislower(intch)若ch是小写字母('a'-'z')返回非0值,否则返回0
intisprint(intch)若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0
intispunct(intch)若ch是标点字符(0x00-0x1F)返回非0值,否则返回0
intisspace(intch)若ch是空格(''),水平制表符('\t'),回车符('\r'),走纸换行('\f'),垂直制表符('\v'),换行符('\n')返回非0值,否则返回0
intisupper(intch)若ch是大写字母('A'-'Z')返回非0值,否则返回0
intisxdigit(intch)若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,否则返回0
inttolower(intch)若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')
inttoupper(intch)若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')
函数名:
abort
功能:
异常终止一个进程
用法:
voidabort(void);
程序例:
#include
#include
intmain(void)
{
printf("Callingabort()\n");
abort();
return0;/*Thisisneverreached*/
}
函数名:
abs
功能:
求整数的绝对值
用法:
intabs(inti);
程序例:
#include
#include
intmain(void)
{
intnumber=-1234;
printf("number:
%dabsolutevalue:
%d\n",number,abs(number));
return0;
}
函数名:
absread,abswirte
功能:
绝对磁盘扇区读、写数据
用法:
intabsread(intdrive,intnsects,intsectno,void*buffer);
intabswrite(intdrive,intnsects,intsectno,void*buffer);
程序例:
/*absreadexample*/
#include
#include
#include
#include
intmain(void)
{
inti,strt,ch_out,sector;
charbuf[512];
printf("InsertadisketteintodriveAandpressanykey\n");
getch();
sector=0;
if(absread(0,1,sector,&buf)!
=0)
{
perror("Diskproblem");
exit
(1);
}
printf("ReadOK\n");
strt=3;
for(i=0;i<80;i++)
{
ch_out=buf[strt+i];
putchar(ch_out);
}
printf("\n");
return(0);
}
函数名:
access
功能:
确定文件的访问权限
用法:
intaccess(constchar*filename,intamode);
函数名:
bar
功能:
画一个二维条形图
用法:
voidfarbar(intleft,inttop,intright,intbottom);
程序例:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
intmidx,midy,i;
/*initializegraphicsandlocalvariables*/
initgraph(&gdriver,&gmode,"");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk)/*anerroroccurred*/
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);/*terminatewithanerrorcode*/
}
midx=getmaxx()/2;
midy=getmaxy()/2;
/*loopthroughthefillpatterns*/
for(i=SOLID_FILL;i
{
/*setthefillstyle*/
setfillstyle(i,getmaxcolor());
/*drawthebar*/
bar(midx-50,midy-50,midx+50,
midy+50);
getch();
}
/*cleanup*/
closegraph();
return0;
}
函数名:
bar3d
功能:
画一个三维条形图
用法:
voidfarbar3d(intleft,inttop,intright,intbottom,
intdepth,inttopflag);
程序例:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
intmidx,midy,i;
/*initializegraphics,localvariables*/
initgraph(&gdriver,&gmode,"");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!
=grOk)/*anerroroccurred*/
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);/*terminatewitherrorcode*/
}
midx=getmaxx()/2;
midy=getmaxy()/2;
/*loopthroughthefillpatterns*/
for(i=EMPTY_FILL;i
{
/*setthefillstyle*/
setfillstyle(i,getmaxcolor());
/*drawthe3-dbar*/
bar3d(midx-50,midy-50,midx+50,midy+50,10,1);
getch();
}
/*cleanup*/
closegraph();
return0;
}
函数名:
cabs
功能:
计算复数的绝对值
用法:
doublecabs(structcomplexz);
程序例:
#include
#include
intmain(void)
{
structcomplexz;
doubleval;
z.x=2.0;
z.y=1.0;
val=cabs(z);
printf("Theabsolutevalueof%.2lfi%.2lfjis%.2lf",z.x,z.y,val);
return0;
}
函数名:
calloc
功能:
分配主存储器
用法:
void*calloc(size_tnelem,size_telsize);
程序例:
#include
#include
intmain(void)
{
char*str=NULL;
/*allocatememoryforstring*/
str=calloc(10,sizeof(char));
/*copy"Hello"intostring*/
strcpy(str,"Hello");
/*displaystring*/
printf("Stringis%s\n",str);
/*freememory*/
free(str);
return0;
}
函数名:
ceil
功能:
向上舍入
用法:
doubleceil(doublex);
程序例:
#include
#include
intmain(void)
{
doublenumber=123.54;
doubledown,up;
down=floor(number);
up=ceil(number);
printf("originalnumber%5.2lf\n",number);
printf("numberroundeddown%5.2lf\n",down);
printf("numberroundedup%5.2lf\n",up);
return0;
}
函数名:
cgets
功能:
从控制台读字符串
用法:
char*cgets(char*str);
程序例:
#include
#include
intmain(void)
{
charbuffer[83];
char*p;
/*There'sspacefor80charactersplustheNULLterminator*/
buffer[0]=81;
printf("Inputsomechars:
");
p=cgets(buffer);
printf("\ncgetsread%dcharacters:
\"%s\"\n",buffer[1],p);
printf("Thereturnedpointeris%p,buffer[0]isat%p\n",p,&buffer);
/*Leaveroomfor5charactersplustheNULLterminator*/
buffer[0]=6;
printf("Inputsomechars:
");
p=cgets(buffer);
printf("\ncgetsread%dcharacters:
\"%s\"\n",buffer[1],p);
printf("Thereturnedpointeris%p,buffer[0]isat%p\n",p,&buffer);
return0;
}
函数名:
delay
功能:
将程序的执行暂停一段时间(毫秒)
用法:
voiddelay(unsignedmilliseconds);
程序例:
/*Emitsa440-Hztonefor500milliseconds*/
#include
intmain(void)
{
sound(440);
delay(500);
nosound();
return0;
}
函数名:
delline
功能:
在文本窗口中删去一行
用法:
voiddelline(void);
程序例:
#include
intmain(void)
{
clrscr();
cprintf("ThefunctionDELLINEdeletes\
thelinecontainingthe\r\n");
cprintf("cursorandmovesalllines\
belowitonelineup.\r\n");
cprintf("DELLINEoperateswithinthe\
currentlyactivetext\r\n");
cprintf("window.Pressanykeyto\
continue...");
gotoxy(1,2);/*Movethecursortothe
secondlineandfirstcolumn*/
getch();
delline();
getch();
return0;
}
函数名:
detectgraph
功能:
通过检测硬件确定图形驱动程序和模式
用法:
voidfardetectgraph(intfar*graphdriver,intfar*graphmode);
程序例:
#include
#include
#include
#include
/*namesofthevariouscardssupported*/
char*dname[]={"requestsdetection",
"aCGA",
"anMCGA",
"anEGA",
"a64KEGA",
"amonochromeEGA",
"anIBM8514",
"aHerculesmonochrome",
"anAT&T6300PC",
"aVGA",
"anIBM3270PC"
};
intmain(void)
{
/*returnsdetectedhardwareinfo.*/
intgdriver,gmode,errorcode;
/*detectgraphicshardwareavailable*/
detectgraph(&gdriver,&gmode);
/*readresultofdetectgraphcall*/
errorcode=graphresult();
if(errorcode!
=grOk)/*anerror
occurred*/
{
printf("Graphicserror:
%s\n",\
grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);/*terminatewithanerror
code*/
}
/*displaytheinformationdetected*/
clrscr();
printf("Youhave%svideodisplay\
card.\n",dname[gdriver]);
printf("Pressanykeytohalt:
");
getch();
return0;
}
函数名:
ecvt
功能:
把一个浮点数转换为字符串
用法:
charecvt(doublevalue,intndigit,int*decpt,int*sign);
程序例:
#include
#include
#include
intmain(void)
{
char*string;
doublevalue;
intdec,sign;
intndig=10;
clrscr();
value=9.876;
string=ecvt(value,ndig,&dec,&sign);
printf("string=%sdec=%d\
sign=%d\n",string,dec,sign);
value=-123.45;
ndig=15;
string=ecvt(value,ndig,&dec,&sign);
printf("string=%sdec=%dsign=%d\n",
string,dec,sign);
value=0.6789e5;/*scientific
notation*/
ndig=5;
string=ecvt(value,ndig,&dec,&sign);
printf("string=%sdec=%d\
sign=%d\n",string,dec,sign);
return0;
}
函数名:
ellipse
功能:
画一椭圆
用法:
voidfarellipse(intx,inty,intstangle,intendangle,
intxradius,intyradius);
程序例:
#include
#include
#include
#include
intmain(void)
{
/*requestautodetection*/
intgdriver=DETECT,gmode,errorcode;
intmidx,midy;
intstangle=0,endangle=360;
intxradius=100,yradius=50;
/*initializegraphics,localvariables*/
initgraph(&gdriver,&gmode,"");
/*readresult
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言