C语言程序设计数组与字符串

上传人:平*** 文档编号:47526538 上传时间:2018-07-02 格式:PPT 页数:124 大小:452.15KB
返回 下载 相关 举报
C语言程序设计数组与字符串_第1页
第1页 / 共124页
C语言程序设计数组与字符串_第2页
第2页 / 共124页
C语言程序设计数组与字符串_第3页
第3页 / 共124页
C语言程序设计数组与字符串_第4页
第4页 / 共124页
C语言程序设计数组与字符串_第5页
第5页 / 共124页
点击查看更多>>
资源描述

《C语言程序设计数组与字符串》由会员分享,可在线阅读,更多相关《C语言程序设计数组与字符串(124页珍藏版)》请在金锄头文库上搜索。

1、程序设计基础(C)第五章 数组与字符串本章内容o 学生需求2 o 一维数组 o 指针概念 o 学生需求3 o 字符串 o 二维数组o 批量数据的组织与使用 n变量定义/声明 n变量初始化 n输入和输出 n相关运算符 n赋值和表达式 n常见使用方法案例需求2o 编写学生信息管理程序,实现: n 命令行交互方式,提示符为“ST2” n 帮助功能,命令符H,显示关于命令的使用说明 n 退出功能,命令符Q,退出程序 n 增加功能,命令符A,参数为学号、成绩 n 删除功能,命令符D,参数为学号 n 查找功能,命令符F,参数为学号 n 列表功能,命令符L,按学号升序列表 n 统计功能,命令符T,平均最大最

2、小等 n 名次功能,命令符S,按成绩从大到小并排名运行示例o ST2A 102 89 o ST2A 101 78.5 o ST2A 103 89 o ST2L o 101 78.5 o 102 89.0 o 103 89.0 o ST2T o Number=3 o Sum=256.5, Ave=85.5 o Max=89.0, Min=78.5o ST2A 101 81 o ST2F 101 o 101 81.0 o ST2D 102 o ST2F 102 o Not Found: 102 o ST2 xyz o Bad Command o ST2Q o Good-Bye.一、一维数组o 数组

3、与数列 o 一维数组的定义和引用 o 非数组数组:输入出、累加和、最大值 o 数组与函数:ex5-1.c o 学生信息程序:ex5-2.c o 排序、二分法查找:ex5-3.c o 学生信息程序:ex5-4.c,ex5-5.c数组和数列o 数列:x0、x1、xn o 数组:x0、x1、xnn 数组名下标o 相同:通过一个名称和下标表示各个元素 o 数组:数组名为C标识符,下标总是从0开 始,元素个数必须编程时确定一维数组使用示例o int n; o n=5; o n+; o s+=n; o printf(“%d“,n); o scanf(“%d“, o for (i=1;iai ) o m =

4、 ai; o return m; o 常规应用示例(ex5-1.c)o#define N 5 omain() o o int aN, x, m; o long s; o sca(a,N); o s=sum(a,N); o x=max(a,N); o m=min(a,N); o printf(“Data: “); o prt(a,N); o printf(“Sum=%ldn“,s); o printf(“Max=%d,Min=%dn“,x,m); o程序文件ex5-1.co 函数列表 n sca,prt,sum n max,min,main n 代码:55行 o 运行示例 n 30 10 20

5、50 40 n Data: 30 10 20 50 40 n Sum=150 n Max=50,Min=10o#include ovoid sca(int a, int n) o o int i; o for ( i=0; iai ) o m = ai; o return m; o o#define N 5 omain() o o int aN, x, m; o long s; o sca(a,N); o s=sum(a,N); o x=max(a,N); o m=min(a,N); o printf(“Data: “); o prt(a,N); o printf(“Sum=%ldn“,s);

6、 o printf(“Max=%d,Min=%dn“,x,m); o学生管理设计思路(简化版)o 合理假设:学生数不超过100人 n #define N 100 o 学号:int numN; n 学号为0或负,表示没有学生 o 成绩:int scN; o 当前数组元素个数:int n; n 初始时为0,0nN o 管理方式 n 增加时,数据存贮到下标n处(空闲空间) n 删除时,仅将num数组中相应学号清0函数列表o 命令行常规:prompt,wait,cmdHelp o 常规函数:sum, max, min,find o 管理功能:cmdAdd, cmdDel, cmdFind, cmdLi

7、st, cmdTotal o 子功能:clean(清理) o 主函数:main帮助命令:cmdHelpo void cmdHelp(void) o o printf( “Student Program 2 Help:n“ ); o printf( “ A: Addn“ ); o printf( “ D: Deln“ ); o printf( “ F: Findn“ ); o printf( “ L: Listn“ ); o/*printf( “ T: Totaln“ );*/ o printf( “ H: Helpn“ ); o printf( “ Q: Quitn“ ); o 增加命令:cm

8、dAdd简版o 传递学号与成绩数组,输入新数据并贮存到下标n 处(该空间空闲),返回新的学生数 o int cmdAdd(int num,int sc,int n) o o if ( n=N ) return n; o scanf(“%d%d“, o n=n+1; o return n; o return n+1;常规函数查找并返回下标oint find(int a, int n, int x) o o int i; o for ( i=0; i=0 ) o numi= 0; o return n; o 查找命令:cmdFind(顺序查找)o 传递学号与成绩数组,输入学号,查找该学号并输出相应

9、 信息 o void cmdFind(int num,int sc,int n) o o int x, i; o scanf( “%d“, o i = find( num, n, x ); o if ( i=0 ) o printf( “%d %dn“, numi, sci ); o else o printf( “Not Found: %dn“, x ); o 列表命令:cmdList(未排序)o 传递学号与成绩数组,每行一个学生信息 o void cmdList(int num,int sc,int n) o o int i; o for ( i=0; i“ ); o do o cmd =

10、 getchar(); o while ( cmd= ); /*单引号中含空格*/ o if ( cmd=a o printf( “ST2“ ); o do o cmd = getchar(); o while ( cmd= ); /*含空格*/ o if ( cmd=a o printf( “ D: Deln“ ); o printf( “ F: Findn“ ); o printf( “ L: Listn“ ); o printf( “ H: Helpn“ ); o printf( “ Q: Quitn“ ); o oint cmdAdd(int num,int sc,int n) o o

11、 if ( n=N ) return n; o scanf(“%d%d“, o n=n+1; o return n; o oint cmdDel(int num,int n) o o int x, i; o scanf(“%d“, o i = find( num, n, x ); o if ( i=0 ) o numi= 0; o return n; o ovoid cmdFind(int num,int sc,int n) o o int x, i; o scanf( “%d“, o i = find( num, n, x ); o if ( i=0 ) o printf( “%d %dn“

12、, numi, sci ); o else o printf( “Not Found: %dn“, x ); o ovoid cmdList(int num,int sc,int n) o o int i; o for ( i=0; i #define N 100 prompt wait find cmdHelp cmdAdd cmdDel cmdFind cmdList main运行示例o ST2A 102 89 o ST2a 101 78 o ST2 A103 89 o ST2L o 102 89 o 101 78 o 103 89 o ST2F 102 o 102 89o ST2D 10

13、2 o ST2F 102 o Not Found: 102 o ST2A 101 81 o ST2L o 101 78 o 103 89 o 101 81 o ST2Q o Good-Bye.清理子功能o 传递学号与成绩数组, 消去学号为0的元素,返 回清理后的元素个数 o 遍历循环 n查找学号为0的元素, 下标i n查找后续中学号非0元 素,下标j n下标j搬移到下标I o 先复制再清0 o 如果下标j出界,则 n下标i以后学号均为0, 下标i以前非0o int clean(int num, int sc, int n) o o int i, j; o for ( i=0; i= n ) o

14、 return i; o numi = numj; o sci = scj; o numj = 0; o o return n; o 需改进o 增加命令:缺编辑功能 o 列表命令:缺排序功能 o 名次命令:缺 o 统计命令:缺 o 数据类型:numlong,scfloato 关于清理功能?编辑功能:cmdAddo输入后,先查找同学号元素,再查找已清0元素 oint cmdAdd(int num, int sc, int n) o o int x, s, i; o scanf( “%d%d“, o i = find( num, n, x ); o if ( i=N ) return n; o else i =n+; o numi = x; o sci = s; o return n; oo输入学号与成绩 o查找是否编辑模式 o查找是否有空闲位置 o任何一种查找到? o未找到且元素个数满 o放到下标n处 o同时元素个数n递增1 o复制数据 o返回元素个数排序与查找o 2个数的

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

当前位置:首页 > 中学教育 > 教学课件

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