




已阅读5页,还剩119页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础(C) 第五章 数组与字符串 本章内容 o 学生需求2 o 一维数组 o 指针概念 o 学生需求3 o 字符串 o 二维数组 o 批量数据的组织与使用 n变量定义/声明 n变量初始化 n输入和输出 n相关运算符 n赋值和表达式 n常见使用方法 案例需求2 o 编写学生信息管理程序,实现: n 命令行交互方式,提示符为“ST2” n 帮助功能,命令符H,显示关于命令的使用说明 n 退出功能,命令符Q,退出程序 n 增加功能,命令符A,参数为学号、成绩 n 删除功能,命令符D,参数为学号 n 查找功能,命令符F,参数为学号 n 列表功能,命令符L,按学号升序列表 n 统计功能,命令符T,平均最大最小等 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.5 o 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 数组与数列 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、xn n 数组名下标 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 = 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.c o 函数列表 n sca,prt,sum n max,min,main n 代码:55行 o 运行示例 n 30 10 20 50 40 n Data: 30 10 20 50 40 n Sum=150 n Max=50,Min=10 o#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); 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, cmdList, cmdTotal o 子功能:clean(清理) o 主函数:main 帮助命令:cmdHelp o 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 增加命令:cmdAdd简版 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 传递学号与成绩数组,输入学号,查找该学号并输出相应 信息 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 = 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 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“, 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 89 o ST2D 102 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以前非0 o int clean(int num, int sc, int n) o o int i, j; o for ( i=0; i= n ) o return i; o numi = numj; o sci = scj; o numj = 0; o o return n; o 需改进 o 增加命令:缺编辑功能 o 列表命令:缺排序功能 o 名次命令:缺 o 统计命令:缺 o 数据类型:numlong,scfloat o 关于清理功能? 编辑功能:cmdAdd o输入后,先查找同学号元素,再查找已清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; o o输入学号与成绩 o查找是否编辑模式 o查找是否有空闲位置 o任何一种查找到? o未找到且元素个数满 o放到下标n处 o同时元素个数n递增1 o复制数据 o返回元素个数 排序与查找 o 2个数的排序 o 3个数的排序 o N个数的排序 o 冒泡法的优化 o 二分法查找 o 示例程序ex5-3.c o 多信息排序 o 多排序 交换2个数的值 o 交换a与b两个数的值 o 临时变量t o 逆时针方向依次赋值 o int a,b,t; o t=a; o a=b; o b=t; 2个数的交换 o 比较/交换 o int a,b,t; o if ( ab ) o o t=a; o a=b; o b=t; o o 先比较再交换 o 比较两个数的值 o 如果与排序顺序相反 o 则交换两个数的值 o 运行后ab成立 3个数的排序 o 任意相邻两数比较并交换 o int a,b,c; o 第1遍的相邻比较/交换 n a与b:比较/交换ab n b与c:比较/交换bc,但ab不保证成立 n 结论:c为a,b,c的最大值 o 第2遍的相邻比较/交换 n a与b:比较/交换ab n 结论:b为a,b的最大值 N个数的排序 o N-1遍的两两相邻比较/交换 o int aN; o 第1遍的相邻比较/交换(共N-1次) n a0与a1:比较/交换 n aN-2与aN-1:比较/交换 o 第2遍比较/交换(共N-2次) n a0与a1:比较/交换 n aN-3与aN-2:比较/交换 o 第N-1遍的比较/交换(共1次) n a0与a1:比较/交换 N个数排序核心代码 o int aN,i,j,t; o for (i=0;iaj+1) o o t=aj; o aj=aj+1; o aj+1=t; o o 变量定义 o 共N-1遍 o 每遍N-1-i次 o 相邻比较 o 如果反序则 o 交换 常规函数:排序 o void sort(int a,int n) o o int i,j,t; o for (i=0;iaj+1) o o t=aj; o aj=aj+1; o aj+1=t; o o o 对a数组的n个元素进 行排序(从小到大) o 简易冒泡法排序 o n-1遍 o n-1-i次 o 相邻比较 o 交换 冒泡法的优化 o 每一遍比较交换之 后判断本遍是否存 在过交换,若无, 则已排序状态,不 必继续循环 o 使用ct对每遍的交 换进行计数 o 每遍n-1-i次比较 的之前,之中与之 后 o int ct; o for ( i=0; iaj+1 ) o o t=aj; o aj=aj+1; o aj+1=t; o ct+; o o if ( ct=0 ) o break; o 查找的优化:二分法/折半法 o 在已排序数组中查找某个值 o 设待查找的下标范围为low至high n 初始时,low=0, high=n-1 n alow至ahigh,从小到大排序 o 下标范围取中值并判断 n midd=(low+high)/2 n 中值:amidd n 前段:alow至amidd-1 n 后段:amidd+1至ahigh 二分法查找函数 o 调用前提:已排序 n 从小到大 o 若找到,返回下标 o 没找到,返回-1 o int find2(int a,int n,int x) o o int low,high,midd; o low=0; high=n-1; o while ( low=0 ) o printf( “a%d=%dn“,i,ai); o else o printf( “Not Found: %dn“,x); o o 输入N个整数,排序后 输出,再输入一个数 ,查找该数在排序后 的位置 程序文件ex5-3.c o 函数列表 n sca,prt,sort n find2,main n 代码:56行 o 运行示例 n 30 80 10 60 20 90 50 40 100 70 n 10 20 30 40 50 60 70 80 90 100 n 60 n a5=60 o#include ovoid sca(int a, int n) o o int i; o for ( i=0; iaj+1) o o t=aj; o aj=aj+1; o aj+1=t; o o oint find2(int a,int n,int x) o o int low,high,midd; o low=0; high=n-1; o while ( low=0 ) o printf( “a%d=%dn“,i,ai); o else o printf( “Not Found: %dn“,x); o 按学号升序的交换条件 o 常规条件:下标j的学号比下标j+1的学号大 n numjnumj+1 o 可选条件:下标j的学号无效 n numj0 o (numjnumj+1 | o numj0 学生信息按学号升序:双信息排序 o void sort_stu(int num,int sc,int n) o o int i,j,t; o for (i=0;inumj+1 | o numj0) o o t=numj;numj=numj+1;numj+1=t; o t=scj; scj=scj+1; scj+1=t; o o o 传递学号 与成绩 o 比较学号 o 空学号在 后 o 交换学号 与成绩 升序优化 ovoid sort_stu(int num,int sc,int n) o o int i, j, t, ct; o for (i=0;inumj+1 | o numj0) o o t=numj;numj=numj+1;numj+1=t; o t=scj; scj=scj+1; scj+1=t; o ct+; o o if ( ct=0 ) break; o o 按成绩从大到小排序 o 同时满足按学号升序与按成绩降序 o num数组与sc数组按学号升序 o 另设s数组为成绩顺序表 o s0记录最高成绩所在下标,s1记录次 高成绩所在下标,依次类推 o 则,scs0为最高成绩,scsn-1 为最低成绩 o 比较scsj与scsj+1 第j名与第j+1名的交换条件 o 第j名的成绩:scsj,第j名的学号:numsj o 常规条件:第j名学生成绩不如第j+1名学生成绩 nscsj0 o (scsj0 学生信息按成绩降序:双排序 ovoid sort_sc(int num,int sc,int s,int n) o o int i,j,t; o for (i=0;i0 ) o t=sj;sj=sj+1;sj+1=t; o o传递排序数组s o初始i下标为第i名 o比较j名与j+1名 的成绩 o交换j名与j+1名 下标 成绩降序的优化 ovoid sort_sc(int num,int sc,int s,int n) o o int i, j, t, ct; o for (i=0;i0 ) o t=sj;sj=sj+1;sj+1=t;ct+; o if ( ct=0 ) break; o o 排名次 o void cmdSort(int num,int sc,int s,int n) o /*调用前提:成绩降序*/ o int i, r; /*r表示名次*/ o for ( i=0; i 0 ) o printf( “%d: %d %dn“, o r, numsi, scsi ); o o 简易清理 o int clean(int num, int n) o o int i; o for ( i=n-1; i=0; i- ) o if ( numi!=0 ) o break; o return i+1; o o 传递学号数组,消去 学号数组中末尾学号 无效的元素,返回清 理后的元素个数 o 前提:学号升序后 o 递减循环 o 若有效,则退出 o 下标0至i为有效 o 个数=i+1 统计功能:cmdTotal o 传递成绩数组,统计并输出。调用条件:清理后 o void cmdTotal(int sc,int n) o o long s; float ave; int x, m; o s = sum( sc, n ); o ave = n0 ? (float)s/n : 0; o x = max( sc, n ); o m = min( sc, n ); o printf( “Number=%dn“, n ); o printf( “Sum=%ld, Ave=%.1fn“, s, ave ); o printf( “Max=%d, Min=%dn“, x, m ); o 帮助命令:cmdHelp o 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: List By Numn“ ); o printf( “ S: Sort By Scoren“ ); o printf( “ T: Totaln“ ); o printf( “ H: Helpn“ ); o printf( “ Q: Quitn“ ); o 函数列表 o cmdAdd:增加/编辑命令 o sort_stu:按学号升序 o sort_sc:按成绩降序 o find2:二分法查找 o cmdHelp:帮助命令 o cmdSort:排名 o clean:简易清理 o cmdTotal:统计功能 命令分支语句 o#define N 100 oint numN, scN, sN, n=0; char cmd; oswitch ( cmd ) o o case A: n=cmdAdd(num,sc,n);break; o case D: n=cmdDel(num,n);break; o case F: cmdFind(num,sc,n);break; o case L: sort_stu(num,sc,n); o cmdList(num,sc,n); break; o case S: sort_sc(num,sc,s,n); o cmdSort(num,sc,s,n); break; o case T: sort_stu(num,sc,n); o n=clean(num,n); o cmdTotal(sc,n); break; o case H: cmdHelp(); o case n:break; o default: printf( “Bad Commandn“ ); o 程序集成(ex5-4.c) omain o prompt o wait o cmdHelp o cmdAdd o cmdDel o find o cmdFind o find o sort_stu o sort_sc o clean o cmdList o cmdSort o cmdTotal o sum, max, min o代码:198行 o函数:17个 osum omax omin ofind oprompt owait osort_stu osort_sc oclean ocmdHelp ocmdAdd ocmdDel ocmdFind ocmdList ocmdSort ocmdTotal omain o#include o#define N 100 olong sum(int a, int n) o o long s; o int i; o s = 0; o for ( i=0; i ai ) o m = ai; o return m; o oint find(int a, int n, int x) o o int i; o for ( i=0; i“ ); o do o cmd = getchar(); o while ( cmd= ); /*单引号中含空格*/ o if ( cmd=a numj=numj+1;numj+1=t; o t= scj; scj=scj+1; scj+1=t; o ct+; o o if ( ct=0 ) break; o o ovoid sort_sc(int num,int sc,int s,int n) o o int i, j, t, ct; o for (i=0;i0 ) o t= sj;sj=sj+1;sj+1=t;ct+; o if ( ct=0 ) break; o o oint clean(int num, int n) o o int i; o for ( i=n-1; i=0; i- ) o if ( numi!=0 ) o break; o return i+1; o ovoid 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: List By Numn“ ); o printf( “ S: Sort By Scoren“ ); o printf( “ T: Totaln“ ); o printf( “ H: Helpn“ ); o printf( “ Q: Quitn“ ); o 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; 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“, 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 0 ) o printf( “%d: %d % dn“, o r, numsi, scsi ); o o ovoid cmdTotal(int sc,int n) o o long s; float ave; int x, m; o s = sum( sc, n ); o ave = n0 ? (float)s/n : 0; o x = max( sc, n ); o m = min( sc, n ); o printf( “Number=%dn“, n ); o printf( “Sum=%ld, Ave=%.1fn“, s, ave ); o printf( “Max=%d, Min=%dn“, x, m ); o omain() o o char cmd; int n=0; o int numN, scN, sN; o while (1) o o cmd=prompt(); o if ( cmd=Q) break; o switch ( cmd ) o o case A: n= cmdAdd(num,sc,n);break; o case D: n= cmdDel(num,n);break; o case F: cmdFind(num,sc,n);break; o case L: sort_stu(num,sc,n ); o cmdList(num,sc,n); break; o case S: sort_sc(num,sc,s,n ); o cmdSort(num,sc,s,n); break; o case T: sort_stu(num,sc,n ); o n= clean(num,n); o cmdTotal(sc,n); break; o case H: cmdHelp(); o case n:break; o default: printf( “Bad Commandn“ ); o o wait(cmd); o o printf(“Good-Bye.n“); o 运行示例 o ST2A 102 89 o ST2a 101 78 o ST2 A103 89 o ST2L o 101 78 o 102 89 o 103 89 o ST2F 102 o 102 89 o ST2A 101 81 o ST2S o 1: 102 89 o 1: 103 89 o 3: 101 81 o ST2D 102 o ST2F 102 o Not Found: 102 o ST2Q o Good-Bye. 类型修改(ex5-5.c) olong numN; float scN; int sN; int n=0; ofloat sum(float a, int n); ofloat max(float a, int n); ofloat min(float a, int n); oint find(long a, int n, long x); ovoid sort_stu(long num,float sc,int n); ovoid sort_sc(long num,float sc,int s,int n); oint clean(long num, int n); oint cmdAdd(long num,float sc,int n); oint cmdDel(long num, int n); ovoid cmdFind(long num,float sc,int n); ovoid cmdList(long num,float sc,int n); ovoid cmdSort(long num,float sc,int s,int n); ovoid cmdTotal(float sc,int n); o#include o#define N 100 ofloat sum(float a, int n) o o float s; int i; o s = 0; o for ( i=0; i ai ) o m = ai; o return m; o olong find(long a,int n,long x) o o int i; o for ( i=0; i“ ); o do o cmd = getchar(); o while ( cmd= ); /* 单引号中含空格*/ o if ( cmd=a numj=numj+1;numj+1=tn; o ts=scj; scj=scj+1; scj+1=ts; o ct+; o o if ( ct=0 ) break; o o ovoid sort_sc(long num,float sc,int s,int n) o o int i, j, t, ct; o for (i=0;i0 ) o t= sj;sj=sj+1;sj+1=t;ct+; o if ( ct=0 ) break; o o oint clean(long num,int n) o o int i; o for ( i=n-1; i=0; i- ) o if ( numi!=0 ) o break; o return i+1; o ovoid 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: List By Numn“ ); o printf( “ S: Sort By Scoren“ ); o printf( “ T: Totaln“ ); o printf( “ H: Helpn“ ); o printf( “ Q: Quitn“ ); o oint cmdAdd(long num,float sc,int n) o o long x; float s; int i; o scanf( “%ld%f“, 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; o oint cmdDel(long num,int n) o o long x; int i; o scanf(“%ld“, o i = find( num, n, x ); o if ( i=0 ) o numi= 0; o return n; o ovoid cmdFind(long num,float sc,int n) o o long x; int i; o scanf( “%ld“, o i = find( num, n, x ); o if ( i=0 ) o printf( “%ld %.1fn“, numi, sci ); o else o printf( “Not Found: %ldn“, x ); o ovoid cmdList(long num,float sc,int n) o o int i; o for ( i=0; i 0 ) o printf( “%d: %ld %.1fn“, o r, numsi, scsi ); o o ovoid cmdTotal(float sc,int n) o o float s, ave, x, m; o s = sum( sc, n ); o ave = n0 ? s/n : 0; o x = max( sc, n ); o m = min( sc, n ); o printf( “Number=%dn“, n ); o printf( “Sum=%.1f, Ave=%.1fn“, s, ave ); o printf( “Max=%.1f, Min=%.1fn“, x, m ); o omain() o o char cmd; int n=0; o long numN; float scN; int sN; o while (1) o o cmd=prompt(); o if ( cmd=Q) break; o switch ( cmd ) o o case A: n= cmdAdd(num,sc,n);break; o case D: n= cmdDel(num,n);break; o case F: cmdFind(num,sc,n);break; o case L: sort_stu(num,sc,n ); o cmdList(num,sc,n ); break; o case S: sort_sc(num,sc,s,n ); o cmdSort(num,sc,s,n ); break; o case T: sort_stu(num,sc,n ); o n= clean(num,n); o cmdTotal(sc,n); break; o case H: cmdHelp(); o case n:break; o default: printf( “Bad Commandn“ ); o o wait(cmd); o o printf(“Good-Bye.n“); o 运行示例 o ST2A 102 89.5 o ST2a 101 78.5 o ST2 A103 89.5 o ST2L o 101 78.5 o 102 89.5 o 103 89.5 o ST2F 102 o 102 89.5 o ST2A 101 81 o ST2S o 1: 102 89.5 o 1: 103 89.5 o 3: 101 81.0 o ST2D 102 o ST2F 102 o Not Found: 102 o ST2Q o Good-Bye. 一维数组注意点 o 数组初始化 o 输入n和n个整数 o 输入直到0时终止 o 求最大值所在下标 o 选择法排序 一维数组的初始化 o 求y年m月的天数 o int days13=0,31,28,31, 30,31,30, o 31,31,30, 31,30,31; o if (y%4=0 /* 闰年2月为29天 */ o n=daysm; 应用输入n和n个整数 o 合理假设:输入的n介于0至100之间 n int n,a100,i; /* 空间有可能浪费,也可能溢出 */ n scanf(“%d“, n for (i=0;iaj ) /*如果不是从小到大 */ t=ai; ai=aj; aj=t; 选择法排序改进 for ( i=0; iaj ) /* 如果发现更小值 */ k = j; /* 使ak指向最小值 */ if ( k != i ) /* 如果ai不是ai至aN-1的最小值 */ /* 则交换ai与ak */ t=ai; ai=ak; ak=t; 遍历+筛选+输出 o 编写函数,输出数组a中大于x的元素 o void prt_sel(int a,int n,int x) o o int i; o for (i=0;ix) o printf(“%d “,ai); o o 遍历+筛选+生成 o 将a数组n个元素中大于x的元素按原序保存到 数组b中,并返回大于x的元素个数。 o int select(int a,int n,int x,int b); o 如int a5=30,20,50,10,40,b5; o 则k=select(a,5,25,b);运行后 n b数组为30,50,40,?,? n k=3 筛选函数 o int select(int a,int n,int x,int b) o o int i, k=0; o for (i=0;ix) o o bk = ai; o k=k+1; o o return k; o o k为计数器 o +下标 o 初始为0 o 若条件成立 o 保存至b数组 o 计数增1 bk+=ai; 应用例示 o main() o o int a10,b10,k,x; o long s; o sca(a,10); o s=sum(a,10); o k=select(a,10,s/10,b) ; o x=min(b,k); o printf(“X=%dn“,x); o o 输出数组中大于 且最接近平均值 的元素 o 输入10个元素 o 计算累加和 o 超过平均值b o b数组的最小值 o 输出 案例需求3 o 编写学生信息管理程序,实现: n 命令行交互方式,提示符为“ST3” n 命令符改为命令词,命令词不分大小写 n 增加学生姓名信息(设姓名不超过19个字符) n帮助功能,命令串Help,显示关于命令的使用说明 n退出功能,命令串Quit,退出程序 n增加功能,命令符Add,参数为学号、姓名、成绩 n删除功能,命令符Del,参数为学号 n查找功能,命令符Find,参数为学号 n列表功能,命令符List,按学号升序列表 n统计功能,命令符Total,平均最大最小等 n名次功能,命令符Sort,按成绩从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力能源设备采购及安装合同
- 临时炊事员聘用合同
- 建筑工程施工合同多场景条款
- 拍摄场地短期租赁合同
- 工厂营销承包合同协议
- 铺位租房协议合同
- 中介合同纠纷调解协议
- 购车协议电子合同
- 琴行上课合同协议
- 饭店装修协议合同
- 《中级宏观经济学》教学大纲
- 牙科核心管理制度内容
- 服务行业员工实名制管理制度
- 浙江钱江生物化学股份有限公司招聘笔试冲刺题2025
- 智能制造能力成熟度模型(-CMMM-)介绍及评估方法分享
- 兽用生物制品企业供需现状与发展战略规划
- 《静脉输液治疗》课件
- 0-3岁婴幼儿亲子关系与互动(杭州师范大学)知到智慧树章节答案
- 慢病管理中心工作
- 国开电大《中国法律史》形考任务1-3
- 2024年度餐厅与旅行社旅游服务定制化合同3篇
评论
0/150
提交评论