《C语言程序设计方案》教案(清华谭浩强)(6)

2019-04-04 22:46

即:x=c[2] x的值为“c” 4.字符串的使用

C语言中,将字符串作为字符串来处理。

规定:一个“字符串结束标志”,以字符‘\\0’,在遇到字符‘\\0’时,表示字符串结束。

1)使用字符串常量进行数组初始化 static char c[ ]={“I am happy”}。 或 static char c[ ]=“I am happy”。

等价于 static char c[ ]={‘I’, ‘ ‘, ‘a’, ‘m’, ‘h’, ‘a’, ‘p’, ‘p’, ‘y’,’\\0’}。 注:(a)系统对字符串常量自动加一个‘\\0’ (b)字符数组并不要求它的最后一个字符为‘\\0’ 2)数组长度始终保证大于字符串实际长度

static char c[10]={“ABCDE”}。 (第5个元素\\0,第6个开始为空字符ASCⅡ为0)

static char c[10]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}。 (后面5个元素为空字符ASCⅡ为0)

例7-6 P131:字符数组引用 例子 打印图形 (J5_1.C)

#define NL printf(\ main()

{ char a[10]={'*','*','*','*','*','*','*','*','*','*'}。 int i,j。 图案层数 for (i=0。i<=4。i++) { NL。 图案前空格 for (j=1。j<=i。j++) printf(\。

for (j=1。j<=10-(2*i-1)。j++) printf(\。 } * 个数 }

*********

******* ***** *** *

5.字符数组的输入输出 1)两种方法:

a)逐个字符输入输出。 用格式符“%c”进行 scanf ( “%c”, &c[i])。 b)整个字符串一次输入输出。用格式符“%s”进行

例: static char c[ ]={“abcde”}。

printf(“ %s” , c ) 。 (为数组名,不能为“ %s” , c[0]) 2)可以用scanf 函数输入一个字符串 static char c[6]。

scanf ( “%s”, c )。

注意:键盘输入不能超过5个字符

c不用加地址符&,即&c;因数组名代表数组的起始地址 6.字符串处理函数

在C的函数库中提供了一些用来处理字符串的函数 (1)scanf 和printf函数在字符串的使用

使用scanf和printf函数对字符串的处理时,调用语句中的输入或输出项使用的是字符数组名。(即使用字符数组名的首地址) 例:main ( ) (j5_9.c) { char s1[3] , s2[5]。 scanf(“%s%s”,s1 , s2 )。 printf(%s\\n%s\\n”, s1 , s2 )。 } 输入:

ABC DEF HK (即:希望s1=“ABC ”s2=“DEF HK” 输出: ABC DEF

说明:C语言规定,scanf函数遇空格或回车就结束本次输入。 (2)puts函数

格式:puts(字符数组) 即: puts(str)

将一个字符串str(以‘\\0’结束的字符序列)输出到终端 (3)gets 函数

格式:gets(字符数组) 即: gets ( str ) 输入:abcde

读取字符串并把它们依次放到str指向的字符数组中去。 得到一个函数值,该函数值是字符数组的起始地址。

str是字符数组的首地址,它读取字符串直到遇到换行符或EOF。

换行符或EOF不进入字符串,被转换为“\\0”,作为字符串结束符 (4)strcat函数

strcat( str1 , str2 )。str1,str2是字符数组

连接两个字符数组中的字符串,把str2接到str1的后面,结果放在字

符数组str1中。

例:static char str1[20]={“ABCD EF”} static char str2[ ]={“gggg”}

执行strcat(str1,str2)的结果为:ABCD EFgggg 书P136 (5)strcpy函数

strcpy( str1 , str2 )。功能:把str2的内容复制到str1中 例:strcpy( str1 , “abcd” )。

strcpy( &a[n] , &a[n+1] )。 作用:将n个字符以后的字符顺序地向前移动一个序号。

说明:a ) str1>=str2

b ) str1必须是数组名,str2可以是数组名或字符串常量 c ) 可以解决字符串常量不能赋值给字符数组

即:str1={“abcde”} 。 str1=str2。(不合法) 可用strcpy(str1,str2) 注:strcpy(str1,str2,2); 是将str2中前面2个字符拷贝到str1中去,然后再加一个‘\\0’。 (6)strcmp函数 strcmp( str1 , str2 )。

功能:把str1与str2的内容进行比较(按ASCII码的大小进行比较) 如果:str1=str2,则函数返回0

如果:str1>str2,则函数返回正整数 如果:str1

strlen( str )测试字符串长度,不包括‘\\0’ (8)strlwr函数

strlwr ( str )将字符串中大写字母换成小写字母 (9)strupr函数

strupr ( str )将字符串中小写字母换成大写字母 7.程序举例:书P138 例7.8 例7.9

五、该章的主要例题:例7.1、例7.2、例7.3、例7.4、例7.5、例7.6、例7.8、例7.9

六、主要习题:7.1、*7.2、7.3、7.5、7.6、*7.9、7.11、*7.13

七、主要上机内容:例7.2、例7.3、例7.4、例7.5、例7.7、例7.8、7.1、7.3、*7.9、7.11

其他:上机实验指导书中内容

第八章 函数与程序结构

1、函数的一般概念:函数形参、实参、返回值,函数的类型;

2、动态存储变量与静态存储变量 3、变量的生存期与作用域

重点:①函数的定义和调用及使用函数的特点。 ②函数间的参数传递(值传递和地址传递)。 ③变量存储作用域、编译预处理的使用。

难点:①函数参数传递(数值、地址)及形参、实参的使用; ②变量存储作用域及自动变量与静态变量的区别。

一、函数概述

一个较大的程序:可由若干程序模块组成,每一模块用来实现一个特定的功能。

——用子程序可实现该模块功能。

——在C语言中:子程序称为:子函数

在C程序中: 可由一个主函数和若干个函数构成。 分为标准库函数和用户自定义函数

函数的作用: 减少重复编写程序段的工作量。 语句 语句 功能 调用 功能 语句 语句 功能 调用 语句 语句

标准库函数:由C语言预先编写的一系列常用函数(系统提供) Turbo C 的标准库——包含400多个常用函数 用户自定义函数:

一般自定义函数和自定义函数库(用户先已编好的)

二、函数定义(子函数的设计) 1.函数定义

格式:类型定义符函数名(形式参数表列) { 函数体 }

说明:1)类型定义符:函数返回值的数据类型 a) int , char , float , double 默认int

b) 函数无数据返回,使用 void 作类型定义符 2)函数名:函数的名称(用户取的:合法的标识符)

3)形式参数表列:函数调用时传递信息的通道 有两种表示方法: a)(参数说明 形式参数) 传统风格 b) (形式参数) 参数说明 例: float add( float x , float y ) float add( x , y ) { x=x+y。 { float x , y 。 return (x) 。 x=x+y 。 } return (x)。 } a). b) 2.函数的返回值

? 一般通过函数中的return语句获得。

? 如果不需要返回值,可以不要return语句。

为了明确表示“不带回值”,可以用“void”定义“无类型” 例: main ( ) /*(打印平方表)*/ { void prin ( int x ) 。 int i 。

for ( i=1 。 i<=10 。 i++) prin ( i ) 。 }

void prin ( x ) int x 。 {

printf(“%d\\t%d\\n”,x,x*x)。 }

三、函数间的参数传递

在一个主调函数调用一个子函数时,须把主调函数的参数传递给子函数,称该参数为“实际参数”。

实参可以是常量、变量、表达式 实参应和形参类型相同或相容 P146 例8.2 (主函数) c=max(a , b)。 (子函数) max(int x , int y)

参数传递形式参数 实际参数

(1)数值传递方式

特点:实参通过复制的方式传递给形参(占用不同的内存空间) 实参地址2形参地址 a x

调用函数的实参:给出具体数据 (2)地址传递方式

特点:参数传递不是数据本身,而是数据的地址(使用同一地址空


《C语言程序设计方案》教案(清华谭浩强)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:西安交通大学计算机程序设计指针实验

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: