内容正文:
第6章 数组
第6章 数组
一维数组的定义
一维数组的应用
二维数组
多维数组和字符数组
字符串
综合实例++
2
专用的字符串输入输出函数
标准输入输出函数库(stdio.h)中也有专用的字符串输入输出函数:puts函数和gets函数。
puts函数的使用形式为:puts(字符型数组或字符串常量);
与使用printf函数输出字符串稍有不同,puts函数输出完字符串后会自动换行, 即将标识输入输出位置的光标移动到下一行。
puts(str);可改写为printf("%s
", str);。
标准输入输出函数库(stdio.h)中也有专用的字符串输入输出函数:puts函数和gets函数。
puts函数的使用形式为:puts(字符型数组或字符串常量);
与使用printf函数输出字符串稍有不同,puts函数输出完字符串后会自动换行, 即将标识输入输出位置的光标移动到下一行。
puts(str);可改写为printf("%s
", str);。
3
gets函数
gets函数的使用形式为:gets(字符型数组);
gets函数可以将用户输入的字符串存储到字符型数组中,但与scanf函数不同,gets函数会把空格作为输入字符串的组成部分,只有回车才是字符串输入完毕的标志。
当用户输入Are you ready?↙时,使用语句gets(str);时,字符型数组str中的字符串为"Are you ready?";使用语句scanf("%s", str);,字符型数组str中的字符串为"Are"。
gets函数的使用形式为:gets(字符型数组);
gets函数可以将用户输入的字符串存储到字符型数组中,但与scanf函数不同,gets函数会把空格作为输入字符串的组成部分,只有回车才是字符串输入完毕的标志。
当用户输入Are you ready?↙时,使用语句gets(str);时,字符型数组str中的字符串为"Are you ready?";使用语句scanf("%s", str);,字符型数组str中的字符串为"Are"。
4
字符串处理
例6-16 scanf函数获得用户输入的过程可简单地理解为:用户的输入保存在一个字符型数组中,输入完成后该字符型数组将由scanf函数处理。scanf函数根据格式字符,把字符串转换成相对应类型的数据,并赋给变量。有语句scanf("%d%d", &m, &n);,当用户输入23 52↙时,变量m和n会分别被赋值为23和52。scanf函数由用户输入的字符串得到整数的过程简单模拟如下。
例6-16 scanf函数获得用户输入的过程可简单地理解为:用户的输入保存在一个字符型数组中,输入完成后该字符型数组将由scanf函数处理。scanf函数根据格式字符,把字符串转换成相对应类型的数据,并赋给变量。有语句scanf("%d%d", &m, &n);,当用户输入23 52↙时,变量m和n会分别被赋值为23和52。scanf函数由用户输入的字符串得到整数的过程简单模拟如下。
处理时遇到空格时会结束识别并跳过空格,因此,空格是两个输入数据间的分隔符。
5
例 6-17 比较用户输入的两个字符串的大小。
从左向右依次比较两个字符串对应位置上的字符。如果字符相同,则继续比较。否则,就停止比较。遇到第一个字符串中的结束标志0号字符'\0'时,也停止比较。
计算停止比较时两个字符串中对应字符的差,若大于0,则第一个字符串大;等于0,则两个字符串同样大;小于0,则第一个字符串小。
比较用户输入的两个字符串的大小。
从左向右依次比较两个字符串对应位置上的字符。如果字符相同,则继续比较。否则,就停止比较。遇到第一个字符串中的结束标志0号字符'\0'时,也停止比较。
计算停止比较时两个字符串中对应字符的差,若大于0,则第一个字符串大;等于0,则两个字符串同样大;小于0,则第一个字符串小。
程序中定义了一个2行100列的二维字符型数组str,每个数组元素作为一个普通的一维字符型数组使用,用于存储用户输入的字符串。
6
思考题
分别输入①Hi↙Hello↙②Hi↙Hi↙③Hi↙Hi2↙时,分析循环的执行过程
综合实例——求大整数的阶乘
计算机存储组织数据的方式又称为数据结构,数组是最常用的数据结构。数据结构和算法就是程序。算法通常与数据结构密切相关,这节课以求大整数的阶乘为例来讨论它们之间的关系。
8
例6-18 求大整数的阶乘
求阶乘的算法简单,但由于基本数据类型取值范围的限制,无法求出稍大数的阶乘。无符号长整型的最大取值约为43亿即10位整数;双精度浮点数的最大取值虽然可以达到300位,但它的精度只有16位左右。
一个稍大点整数的阶乘往往成百上千位,显然不能用C语言中的基本数据类型表示。因此,求阶乘时需解决大整数的存储