C语言基础教程Lesson11

上传人:nt****6 文档编号:45725588 上传时间:2018-06-18 格式:PDF 页数:23 大小:803.11KB
返回 下载 相关 举报
C语言基础教程Lesson11_第1页
第1页 / 共23页
C语言基础教程Lesson11_第2页
第2页 / 共23页
C语言基础教程Lesson11_第3页
第3页 / 共23页
C语言基础教程Lesson11_第4页
第4页 / 共23页
C语言基础教程Lesson11_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C语言基础教程Lesson11》由会员分享,可在线阅读,更多相关《C语言基础教程Lesson11(23页珍藏版)》请在金锄头文库上搜索。

1、Lesson 11 字符串标准函数字符串标准函数 二维数组二维数组 字符串标准函数字符串标准函数 对于所有的函数,注意下面问题:对于所有的函数,注意下面问题: 原型声明在什么头文件?原型声明在什么头文件? 函数功能函数功能 函数的返回值函数的返回值 各函数参数的意义各函数参数的意义 应用应用 字符串转换为数值型字符串转换为数值型 double atof(str) 将将str所指所指字符串字符串转换为双精度值由返回值返回,转换为双精度值由返回值返回, 如无效,返回如无效,返回0 int atoi(str) 将将str所指所指字符串字符串转换为整型数由返回值返回,如转换为整型数由返回值返回,如 无

2、效,返回无效,返回0 long atol(str) 将将str所指所指字符串字符串转换为长整型数由返回值返回,转换为长整型数由返回值返回, 如无效,返回如无效,返回0 原型在原型在stdlib.h中中 #include #include void main() char num120, num220; double d1, d2, sum; printf(“nEnter the first number:“); gets(num1); printf(“Enter ths second number:“); gets(num2); d1 = atof(num1); d2 = atof(num2)

3、; if( d1!=0 printf(“n%s+%s=%.3lfn“, num1, num2, sum); else printf(“无效数据无效数据”); 数值型转换为字符串数值型转换为字符串 char * itoa(int num, char *str, int radix) 把整数把整数num转换成对应字符串,结果放入转换成对应字符串,结果放入str,字,字 符串输出的进制由符串输出的进制由radix确定,它范围是确定,它范围是2到到36 返回返回str。 原型在原型在stdlib.h中中 #include #include main() char p17; itoa(1423, p,

4、16); printf(“%sn“,p); void main( ) int a=1423; char p17; itoa(a, p, 16); printf(“%sn“,p); printf(“%0xn“,a); 大小写转换和字符串拷贝大小写转换和字符串拷贝 char *strlwr(char *str) 把把str所指的字符串本身变为小写字母,返回所指的字符串本身变为小写字母,返回str。 char *strupr(char *str) 把把str所指的字符串变为大写字母,返回所指的字符串变为大写字母,返回str。 char *strcpy(char *str1,char *str2) 把

5、把str2的内容复制到的内容复制到str1中,函数返回中,函数返回str1。 原型在原型在string.h中中 #include #include “string.h“ main() char s80; strcpy(s, “THIS IS A TEST.“); strlwr(s); printf(“%sn“,s); strupr(s); printf(“%sn“,s); /如果要拷贝的数组放不下,会如何?如:数组大小为如果要拷贝的数组放不下,会如何?如:数组大小为8 字符串比较字符串比较 int strcmp(char *str1,char *str2) 逐个比较两个字符串逐个比较两个字符串

6、 返回整型值小于返回整型值小于0:str1小于小于str2 返回整型值大于返回整型值大于0:str1大于大于str2 返回整型值等于返回整型值等于0:str等于等于str2 原型在原型在string.h中中 #include #include “string.h“ main( ) /检测用户密码检测用户密码 char password20; printf(“nEnter password: “); gets(password); while (strcmp(password, “administrators“) != 0) printf(“nInvalid passwordnn“); prin

7、tf(“Enter password, again: “); gets(password); printf(“OK“); 计算字符串长度计算字符串长度 int strlen(char *str) 返回值为串返回值为串str的长度,不包括串结束的长度,不包括串结束 符。符。 原型在原型在string.h中中 #include #include void main( ) int i,n; char str10; gets(str); n = strlen( str ); if( n #include “string.h“ main() char s180, s280; gets(s1); gets

8、(s2); strcat(s2,s1); printf(“%sn“,s2); /如果如果s1空间不够空间不够? 求子字符串求子字符串 char *strstr(char *str1, char *str2) 在字符串在字符串str1中寻找第一个遇到中寻找第一个遇到str2串的位置,返串的位置,返 回值为指向该位置的指针。没有找到时返回空回值为指向该位置的指针。没有找到时返回空 (NULL)。 #include #include void main( ) char *p; p = strstr(“this is a test.“,“is“); printf(“%s“,p); 确定某字符在子字符串

9、中位置确定某字符在子字符串中位置 char *strchr(char *str1, char ch) 返回字符串中首次出现返回字符串中首次出现ch的位置的指的位置的指 针。没有该字符时返回空针。没有该字符时返回空(NULL)。 strchr(“abcd”,b); 返回字符返回字符b的位置的位置 二维数组二维数组 ; int a23; 注意下标与行列关系注意下标与行列关系 表示数据:表示数据: 共共6个元素个元素 n维数组语法遵循同样规律维数组语法遵循同样规律 a00 a01 a02 a10 a11 a12 内存状态:先行后列内存状态:先行后列 a00 a01 a02 a10 a11 a12 元

10、素大小元素大小 存储空间大小存储空间大小=元素大小元素大小*2*3 二维数组的初始化二维数组的初始化 所赋初值个数与数组元素的个数相同所赋初值个数与数组元素的个数相同 int a43=1,2,3,4,5,6,7,8,9,10,11,12; 赋初值时省略行花括号对赋初值时省略行花括号对 int a43=1,2,4,5; /按内存中顺序复制。按内存中顺序复制。 每行所赋初值个数与数组元素的个数不同每行所赋初值个数与数组元素的个数不同 int a43=1,2,4,5,7,10; 所赋初值行数少于数组行数所赋初值行数少于数组行数 int a43=1,2,4,5; 例:判定给定方阵是否为对称阵例:判定给

11、定方阵是否为对称阵 每个元素都应满足每个元素都应满足 arrayij = arrayji #include #define NUM 3 / 矩阵行列数矩阵行列数 int main( ) int mNUMNUM; /定义二维数组变量定义二维数组变量 int i, j; /* 输入矩阵输入矩阵 */ printf(“Enter %d rows %d cols datas for the maxtrix:n“,NUM,NUM); for (i=0; iNUM; i+) for (j=0; jNUM; j+) scanf(“%d“, 例:判定给定方阵是否为对称阵例:判定给定方阵是否为对称阵 /*修改下

12、面代码会怎样?修改下面代码会怎样? for (i=0; iNUM; i+) for (j=0; jNUM; j+) scanf(“%d“, */ for (j=0; jNUM; j+) for (i=0; iNUM; i+) scanf(“%d“, /* 返显矩阵返显矩阵 */ for (i=0; iNUM; i+) for (j=0; jNUM; j+) printf(“%4d“, mij); printf(“n“); /* 判断矩阵是否对称并输出相应的结果判断矩阵是否对称并输出相应的结果 */ for (i=0; iNUM; i+) for (j=0; ji; j+) if (mij!=m

13、ji) printf(“nThe matrix isnt symmetrical.“); return 0; printf(“nThe matrix is symmetrical.“); return 0; 练练 编程求一个编程求一个100*100矩阵的正对角线上矩阵的正对角线上 的元素之和。的元素之和。100*100矩阵数据由键盘矩阵数据由键盘 输入。输入。 作业作业 L11-1.编写程序完成:键盘输入文本,编写程序完成:键盘输入文本, 输入空行时结束。请输出其中最长的一输入空行时结束。请输出其中最长的一 行。如果同样长的行不止一个,输出其行。如果同样长的行不止一个,输出其 中某一行即可。中

14、某一行即可。 L11-2. 编写程序完成:定义一个二维数编写程序完成:定义一个二维数 组存储一个组存储一个3*5的矩阵,键盘输入矩阵的矩阵,键盘输入矩阵 的数据。将其转存到一个一维数组,从的数据。将其转存到一个一维数组,从 一维数组中按矩阵的格式打印输出矩阵一维数组中按矩阵的格式打印输出矩阵 的数据。的数据。 作业作业 L11-3.求一个求一个5 X 5矩阵中的马鞍数,输矩阵中的马鞍数,输 出它的位置。矩阵数据键盘输入。出它的位置。矩阵数据键盘输入。 所谓马鞍数,是指在行上最小而在列上最大所谓马鞍数,是指在行上最小而在列上最大 的数。如下:的数。如下: 5 6 7 8 9 4 5 6 7 8 3 4 5 2 1 2 3 4 9 0 1 2 5 4 8 1行行1列上的数就是马鞍数。列上的数就是马鞍数。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号