没有合适的资源?快使用搜索试试~ 我知道了~
在C语言中在C语言中.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 45 浏览量
2022-07-03
00:19:32
上传
评论
收藏 255KB DOC 举报
温馨提示
试读
33页
在C语言中在C语言中
资源推荐
资源详情
资源评论
(第六章 函教
第六章 函数
在 C 语言中,语句完成程序要执行的每一步动作,而函数则是实现程序要求的各项任
务或过程。我们可以把程序组织成若干个模块,并分别用函数来实现它们,这样也就允许我
们使用一条函数语句来代替一组语句。在使用函数时我们可以把函数看成一个“黑盒子”,
只要将数据送进去就能得到需要的结果,而函数内部究竟是如何工作的,外部程序是不知道,
也不需要知道的,外部程序仅限于给函数输入什么以及函数输出什么(函数的界面)。函数
提供了编制程序的手段,常用来把复杂的编程问题化为若干易于解决的小问题,使之容易读、
写、理解以及排除错误、修改和维护。
一个 C 程序中必须至少有一个函数,而且必须有一个并且仅有一个以 main 为名,这个
函数称为主函数,主函数是整个程序的入口和正常的出口,正如在前面例子中所看到的那样,
整个程序从主函数开始执行,也在主函数中结束。而其它函数的个数是没有限制的。C 程序
的可执行部分只出现在函数的内部,粗略地看,C 程序是由一个个函数构成的,很多重要的
功能也是以函数语句实现,因此我们也称 C 语言是函数语言。
一般地,我们将程序中大量基本重复的程序段以及功能相对独立的程序段用函数来实现。
事实上,C 语言程序一般是由大量的小函数而不是少量的大函数构成的,即所谓“小函数构
成大程序”。这样的好处是让程序各部分相互充分独立,并且任务单一,因而这些充分独立
的小模块也可以作为一种固定规则的小“构件”,用来构成新的大程序。另外,C 语言的一
个主要特点就是可以建立函数库,可以用所需要的库函数编写程序来完成程序的任务,如我
们已经使用过的系统库函数 printf()、scanf()等等。
本章建议课堂讲授 8 学时,上机 4~8 学时,自学 8 学时。
6.1 常见的系统库函数
C 语言的库函数是系统预先定义好的函数(或宏),它们包含许多常见且通用的初等程
序功能模块,同时也覆盖了操作系统所提供的各种操作。库函数的引入,既扩大了语言本身
的功能,也方便了用户的使用。一般而言库函数都是高效而且可靠的,可以节省我们大量的
时间和精力。
库函数按其功能特征分为若干类。需要注意的是:应用程序在调用 C 语言的库函数时,
应当根据库函数的种类,在程序的开始处加上包含相应头文件的预处理行,例如要调用输入
输出类库函数 printf()时,就应当在程序开始位置加上#include "stdio.h",正如我们在前
面的例子中所做的。
本节仅介绍三类初学者常用的部分库函数,更多的内容可参阅附录 F。
6.1.1 字符与字符串函数
Turbo C 标准函数库具有许多涉及到字符和字符串的函数集。在 C 语言中,字符是一个
单字节的值,而字符串是以空字符(NULL)结尾的字符数组;字符函数要求用头文件
ctype.h 提供它们的说明,字符串函数需要使用头文件 string.h,字符、字符串输入输出函
数则是用 stdio.h 作为它们的头文件。
在 Turbo C 中一个可打印的字符也就是一个能在终端上显示的字符,它们的值在
0x20(空格)到 0x7E(~)之间;控制字符的值在 0 至 0x1F 之间,以及 0x7F,它们是标准 ASCII
(第六章 函教
字符集,另外还有扩展 ASCII 字符集,其码值在 0x80 至 0xFF 之间。(参见附录 D ASCII 字
符集)
在字符函数中字符参数是以整型参数说明的,此时函数只用到了整型参数的低字节。类
似于表达式中的字符量,在调用字符函数时,字符参数会转换为 int 型。
下面是一些简单常用的字符与字符串函数,学习和使用它们有利于体会函数的概念以及
初步掌握系统库函数的运用。
1. tolower()和 toupper()函数
调用方式:int tolower(int ch)
int toupper(int ch)
说明:tolower()和 toupper()的原型都在头文件 ctype.h 中。
功能:如果 ch 是一个字母,函数 tolower()将返回它的小写字母;函数 toupper()将返
回它的大写字母。如果 ch 不是字母则返回字符 ch 本身。
[例 6.1] 下面程序将字符串数组 a 中的每个字符串的第一个字符转换为大写字母(如果
是字母的话),其它的字母都转换为小写字母。
#include "ctype.h"
main()
{
char a[3][3];
int i,j;
for(i=0;i<3;i++) scanf("%s",a[i]);
for(i=0;i<3;i++)
{
j=0;
a[i][j]=toupper(a[i][j]);
while(a[i][++j]) a[i][j]=tolower(a[i][j]);
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++) printf("%c",a[i][j]);
printf("\n");
}
}
运行结果:
foR
iNT
12E /* 以上由键盘输入 */
For
Int
12e
2. gets()和 puts()函数
调用方式:char *gets(char *str)
int puts(char *str)
说明:gets()和 puts()函数的原型都在头文件 stdio.h 中。
功能:gets()函数从标准输入设备(通常是键盘)读取字符并把它们放到 str 指向的字符
(第六章 函教
数组中,它读取字符直至遇到换行符或文件结束符(EOF),换行符或文件结束符被转换为空
字符并作为字符串的结束符,操作成功将返回 str,否则返回空指针;puts()函数把 str 指
向的字符串写到标准输出设备(通常是屏幕)中去,空字符(字符串结束标志)被转换为换行符,
调用成功时返回换行符(ASCII 值),失败时返回 EOF。
[例 6.2] 利用 gets()和 puts()函数输入和输出字符串。
#include "stdio.h"
main()
{
char a[80],*s;
s=gets(a);
while(*s!= '\0 ') s++;
*s= '! ';
*(++s)= '\0 ';
puts(a);
}
运行结果:
Hello /* 键盘输入 */
Hello!
上例程序运行后光标将停在输出结果 Hello!的下一行起首位置。
3. strcat()函数
调用方式:char *strcat(char *str1,char *str2)
说明:strcat()的原型在头文件 string.h 中。
功能:函数 strcat()将字符串 str2 连接到字符串 str1 上,并返回 str1。
[例 6.3]
#include "string.h"
main()
{
static char s1[11]={'C','\0'};
char *s,s2[]=" Program.";
s=strcat(s1,s2);
printf("%s ",s);
printf("%s ",s1);
printf("%s\n",s2);
}
运行结果:
C Program. C Program. Program.
4. strcmp()函数
调用方式:int strcmp(char *str1,char *str2)
说明:strcmp()的原型在头文件 string.h 中。
功能:该函数按先后顺序依次比较两个字符串 str1 和 str2 中的字符,若两个字符串相
等则返回数值 0,否则返回第一对不相等字符的 ASCII 码值之差。
如函数调用 strcmp(str1,str2)对于不同的字符串 str1 和 str2 有不同的返回值:
表 6.1 例举函数调用 strcmp(str1,str2)的返回值
str1
str2
返回值
说明
(第六章 函教
"ABCDEFG"
"ABCDABCDEFG"
4
'E'-'A'=4
"1234567"
"123"
52
'4'-'\0'=52
"fg2BGFewr"
"fg2BGFewr"
0
"1234567"
"987654"
-8
'1'-'9'=-8
"abc"
"abcd"
-100
'\0'-'d'=-100
可以看出在不同的函数参数 str1 和 str2 下函数调用的返回值不同,其含义如下:
表 6.2 strcmp()的返回值含义
函数返回值
含义
小于零
字符串 str1 小于字符串 str2
等于零
字符串 str1 等于字符串 str2
大于零
字符串 str1 大于字符串 str2
5. strcpy()函数
调用方式:char *strcpy(char *str1,char *str2)
说明:strcpy()的原型在 string.h 中。
功能:该函数将字符串 str2 的内容复制到字符串 str1 中,并返回 str1。
[例 6.4]
#include "string.h"
#include "stdio.h"
main()
{
static char s[20]={'H','e','l','l','o',' ','W','o',
'r','l','d','\0'};
char *p="Hi,World!",*str;
str=strcpy(s,p);
puts(s);
puts(p);
puts(str);
}
运行结果:
Hi,World!
Hi,World!
Hi,World!
6. strlen()函数
调用方式:unsigned strlen(char *str)
说明:strlen()的原型在 string.h 中。
功能:该函数用来计算字符串 str 的长度(字符个数,但不包含作为字符串结束标志的
空字符),并返回这个长度。
表 6.3 例举 strlen(str)函数调用
字符串 str 的定义
strlen(str)的返回值
char str[10]={ '1','2', '3','4','5','\0 '};
5
char *str="abc defg";
8
char str[10]={ '\0 '};
0
2 至 6 项所列的是处理字符串的常用函数,由于在 C 语言中系统库函数对数组的操作不
进行边界(数组大小)检查,因而在编程时使用字符串(即字符数组)函数时应确保字符数组的
(第六章 函教
长度足够长,否则程序将难以正确地执行。例如在函数 strcat()中字符数组 str1 应足够长
这样才能够包容 str1 原来的内容以及需要连接的 str2 内容。在使用函数 strcpy()时也应
注意使字符数组 str1 的长度不短于 str2 的长度等。另外,对于字符串的使用还应注意的是
字符串结束符(空字符'\0'),虽然它不是字符串的内容却是字符串的重要组成部分,没有它
字符数组将不成为字符串。因此在使用字符串函数时应注意函数对各字符串结束符的处理。
6.1.2 简单数学函数
Turbo C 库定义了一些数学函数,我们可以利用它们方便地进行数学运算。这些函数大
致可以分成以下几个种类:
·三角函数
·双曲函数
·指数与对数函数
·其它函数
所有这些数学函数的原型都包含在头文件 math.h 当中,因此用到这些数学库函数的程
序都应包含这个头文件。绝大部分数学库函数的返回值都是双精度(double)类型的,这样可
以保证数学运算的精度。这里只介绍其中几个简单的函数。
1. sin()、cos()及 tan()函数
调用方式:double sin(double arg)
double cos(double arg)
double tan(double arg)
功能:函数 sin()、cos()及 tan()分别用于计算弧度参数 arg 的正弦、余弦及正切值。
[例 6.5] 下面程序显示从-1 到 1 以 0.1 为增量递增的值的正弦、余弦及正切值。
#include "math.h"
#include "stdio.h"
main()
{
double v=-1.0;
while((v <= 1.0)
{
printf("arg:%f,sin=%f,cos=%f,tan=%f\n",v,sin(v),cos(v),tan(v));
v += 0.1;
}
2. exp()和 pow()函数
调用方式:double exp(double a)
double pow(double b,double c)
功能:exp()函数返回以自然数 e 为底,函数参数 a 为幂的指数值 e
a
;pow()函数则是返
回 b 的 c 次幂值 b
c
。
3. log()和 log10()函数
调用方式:double log(double x)
double log10(double x)
功能:函数 log()返回函数参数 x 的自然对数值
x
ln
;而函数 log10()则返回以 10 为底
的 x 的对数值
x
10
log
。
剩余32页未读,继续阅读
资源评论
omyligaga
- 粉丝: 54
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (完整)数据库课程设计餐厅点餐说明书-21ab6d3c8beb172ded630b1c59eef8c75ebf952c.doc
- 2023-04-06-项目笔记 - 第一百五十四阶段 - 4.4.2.152全局变量的作用域-152 -2024.06.04
- 松哥解协议松哥解协议松哥解协议松哥解协议松哥解协议
- 618节日618节日618节日
- tensorflow-gpu-2.9.1-cp37-cp37m-win-amd64.whl
- tensorflow-gpu-2.9.0-cp37-cp37m-win-amd64.whl
- tensorflow-gpu-2.9.0-cp39-cp39-win-amd64.whl
- lcd daimalcd daima
- 电影领域-推荐算法-个性化内容-观影决策-电影推荐小程序.zip
- 电气控制PLC考试题库
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功