(C语言程序设计案例课件)项目四学生成绩的分组汇总

PPT
  • 阅读 55 次
  • 下载 0 次
  • 页数 85 页
  • 大小 10.878 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
(C语言程序设计案例课件)项目四学生成绩的分组汇总
可在后台配置第一页与第二页中间广告代码
(C语言程序设计案例课件)项目四学生成绩的分组汇总
可在后台配置第二页与第三页中间广告代码
(C语言程序设计案例课件)项目四学生成绩的分组汇总
可在后台配置第三页与第四页中间广告代码
(C语言程序设计案例课件)项目四学生成绩的分组汇总
(C语言程序设计案例课件)项目四学生成绩的分组汇总
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 85
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】(C语言程序设计案例课件)项目四学生成绩的分组汇总.ppt,共(85)页,10.878 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44455.html

以下为本文档部分文字说明:

大连理工大学出版社C语言程序设计案例教程C语言程序设计案例教程大连理工大学出版社项目四学生成绩的分组汇总教学目的:通过本项目的学习,要求能熟练掌握数组的基本概念,熟练掌握一维数组、二维数组和字符数组的定义、赋值,熟练掌握数组的输入和输出方法,掌握字符串和

字符数组的不同特点,掌握数组的排序、查询等基本操作方法。学习数组知识为后续项目做好准备,也为后续面向对象语言课程的学习打下基础。C语言程序设计案例教程大连理工大学出版社项目四学生成绩的分组汇总教学内容数组的C程序引例:通过简单的数组C程序来引入章节的内容一维

数组的定义和引用二维数组的定义和引用字符数组与字符串综合实训:通过具体的案例来巩固数组的知识点C语言程序设计案例教程大连理工大学出版社项目四学生成绩的分组汇总重点:(2)数组的排序(1)一维数组的定义与应用难点:1、一维数组的定义与应用2、数组的排序(3)二维数组的定义与应

用(4)字符数组与字符串的应用重点和难点C语言程序设计案例教程大连理工大学出版社项目四学生成绩的分组汇总辅导员张老师在使用小王设计的程序时,发现他要对一个小组学生成绩的总分及平均分进行计算,故张老师找来小王同学,说明了需求,小王根据张老师的需求,参考了相关的资

料,完善了原来的程序,帮助张老师解决了该问题。C语言程序设计案例教程大连理工大学出版社项目四学生成绩的分组汇总实现:/*功能:一个小组学生成绩的总分及平均分的计算*/#include<stdio.h>#defineMAX1000v

oidmain(){inti;floatsum=0.0,ave;intcount;inta[MAX];printf(“请输入小组的人数:”);scanf("%d",&count);printf(“请输入小组的学生成绩:”);for(i=0;i<count;i++){scanf(“%d”,&a[

i]);C语言程序设计案例教程大连理工大学出版社项目四学生成绩的分组汇总}for(i=0;i<count;i++){sum=sum+a[i];}ave=sum/count;printf("该小组学生成绩的总分是%f分\t平均分是%f分\n",sum,ave);}编译、连接、和运行程

序。程序运行后,屏幕显示:C语言程序设计案例教程大连理工大学出版社项目四学生成绩的分组汇总请输入小组的人数:10请输入小组的学生成绩:6070809010090807060100该小组学生成绩的总分是800.00000

0分平均分是80.000000分要完成上面的任务,小王必须要熟练掌握数组的基本概念,熟练掌握一维数组的定义、赋值,熟练掌握数组的输入和输出方法。C语言程序设计案例教程大连理工大学出版社4.1数组引例【例4.1】一个

简单的C程序数组引例/*源文件名:Li4_1.c功能:从键盘输入一个不长于20个字符的字符串,按与输入顺序相反的次序输出此字符串,例如输入dimension,输出noisnemid。*/#include<s

tdio.h>voidmain(){charch,s[20];/*定义s字符数组,它最多可以容纳20个字符*/printf("输入字符串:");/*打印输出一串字符串*/i=0/*i为统计字符个数*/do{ch=getchar();/*从键盘上输入字符*/C语言程序

设计案例教程大连理工大学出版社4.1数组引例If(ch!=‟\n‟)s[i++]=ch;/*读取的字符存在s[0],s[1]…*/}while(i<20&&ch!=‟\n‟);/*超过20个字符或输入回车结

束字符输入*/printf("反向顺序:");/*打印输出一串字符串*/for(--i;i>=0;--i)putchar(s[i]);/*反向输出这些字符*/putchar(„\n‟);}编译、连接、和运行程序。程序运行后,屏幕显示:

输入字符串:dimension反向顺序:noisnemidC语言程序设计案例教程大连理工大学出版社一个班学生的学习成绩或一行文字等这些数据的特点是:⑴具有相同的数据类型⑵使用过程中需要保留原始数据C语言为这些数据提供了一种构造数据类型:数

组。所谓数组就是一组具有相同数据类型的数据的有序集合。4.2一维数组的定义和引用4.2.1一维数组的定义C语言程序设计案例教程大连理工大学出版社一维数组的定义方法一般为:类型说明符数组名[常量表达式]其中类型可以

是任何的C语言数据类型,例如char,int,long,float,double等,数组名与普通变量名一样,常量表达式是数组在内存中的单元数,在定义时必须是一个常数,不能是变量,数组的每个单元占的字节数就是对应类型占的字节数,显然数组占的

总字节数是:常量表达式*sizeof(类型)4.2一维数组的定义和引用—4.2.1一维数组的定义1.一般定义C语言程序设计案例教程大连理工大学出版社例如:chars[20];/*定义能存储20个字符的数组*/intn[20];

/*定义能存储20个整数的数组*/floatf[20];/*定义能存储20个float数的数组*/数组定义中常见的错误举例说明如下:floata[0];/*数组大小为0没有意义*/intb(2);/*不能使用圆括号*/intk,a[k];/*不能用变量说明数组大小*/4.2一维数组的定义和引用—4

.2.1一维数组的定义C语言程序设计案例教程大连理工大学出版社4.2一维数组的定义和引用—4.2.1一维数组的定义数组在定义时还可以同时为各个单元设置初始值。⑴定义时给所有元素赋值,例如:chars[5]={‟a‟

,‟b‟,‟c‟,‟d‟,‟e‟};定义数组s[5],并且设置s[0]=‟a‟,s[1]=‟b‟,s[2]=‟c‟,s[3]=‟d‟,s[4]=‟e‟2.定义及初始化C语言程序设计案例教程大连理工大学出版社4.2一维数组的定义和引用—4.2.1一维数组的定义⑵定义时给部分元素赋值,例如

:chars[5]={‟a‟,‟b‟};定义数组s[5],并且设置s[0]=‟a‟,s[1]=‟b‟,s[2]=‟\0‟,s[3]=‟\0‟,s[4]=‟\0‟,即后面没有赋值的元素全部设置为0。⑶定义时给所有的元素赋值,则可以不设置数组的大小,例如:chars[]={‟

a‟,‟b‟,‟c‟,‟d‟,‟e‟};与chars[5]={‟a‟,‟b‟,‟c‟,‟d‟,‟e‟};是等价的。C语言程序设计案例教程大连理工大学出版社4.2一维数组的定义和引用1.一维数组元素的引用方式数组名[下标]下标可以是整型常量或整型表达式。例如:a

[0]=a[5]+a[7]-a[2*3]2.一维数组元素引用的程序实例【例4.2】用数组来处理,求解Fibonacci数列。/*源文件名:Li4_2.c功能:求解Fibonacci数列前20项的值。*/4.2.2一维数组的引用C语言程序设计案例教程大连理工大学出版社4.2一维数组的定义和引用—

4.2.2一维数组的引用#include<stdio.h>voidmain(){inti,f[20]={1,1};/*定义f数组,第1项和第2项的值都为1*/for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1]

;/*给f数组第3项和第20项赋值*/for(i=0;i<20;i++){if(i%5==0)printf(„\n‟);/*用来控制换行,每行输出5个数据*/printf("%12d",f[i]);/*输出f数组的值*/}}C语言程序设计案例教程大连理工大学出版社4.2一

维数组的定义和引用—4.2.2一维数组的引用程序运行后,屏幕显示11235813213455891442333776109871597258441816765C语言程序设计案例教程大连理工大学出版社4.2一维数组的定

义和引用—4.2.2一维数组的引用【例4.3】用随机函数产生10个0~100之内的整数,按从小到大排列输出。/*源文件名:Li4_3.c功能:用随机函数产生10个0~100之内的整数,按从小到大排列输出*/使数组从小到大排序的规则如下:C语言程序设计案例教程大连理工大学出版社4.2一维

数组的定义和引用—4.2.2一维数组的引用设数组为a[0],a[1],…,a[n-1],构造i循环从0,1,…,n-2变化,构造j循环从i+1,i+2,…,n-1变化,即j>i。对于任何一个a[i],如果a[i]>a[j],表明前面有一个元素a[i]比它后面的元素a[j]大,a[i]应该在后面,a

[j]应该在前面,交换a[i]与a[j]。对于任何一个a[i],都循环一次j,j循环完成后a[i]必不大于a[i+1],…,a[n-1],重复i循环,i循环结束后数组从小到大排序。C语言程序设计案例教程大连理工大

学出版社4.2一维数组的定义和引用—4.2.2一维数组的引用/*源文件:Lib4_3.c功能:用随机函数产生10个0~100之内的整数,按从小到大排序输出*/#include<stdio.h>#includ

e<stdlib.h>voidmain(){inta[10],i,j,k;/*定义a数组,i、j为循环变量,k为临时变量*/for(i=0;i<10;i++)a[i]=rand()%100;/*给a数组随机赋0~100之

内的整数*/printf("排序之前的数据");for(i=0;i<10;i++)printf("%d",a[i]);/*输出a数组的值,未排序*/putchar(„\n‟);for(i=0;i<9;i++)C语言程序设计案例教程大连理工

大学出版社4.2一维数组的定义和引用—4.2.2一维数组的引用程序运行后,屏幕显示:for(j=i+1;j<10;j++)if(a[i]>a[j]){k=a[i];a[i]=a[j];a[j]=k;}/*数组排序*/for(i=0;i<10;i++)printf("%

d",a[i]);/*输出a数组的值,已排序*/putchar(„\n‟);}3445261576849829671111152629344567768498C语言程序设计案例教程大连理工大学出版社任务2求每个小组学生成绩的总分及平均分辅导员张老师在使

用小王设计的程序时,发现他要对多个小组学生成绩的总分及平均分进行计算,故张老师找来小王同学,说明了需求,小王根据张老师的需求,参考了相关的资料,完善了原来的程序,帮助张老师解决了该问题。C语言程序设计案例教程大连理工大学出版社任务2求每个小组

学生成绩的总分及平均分/*功能:多个小组学生成绩的总分及平均分的计算*/#include<stdio.h>#defineMAX1000#defineM100voidmain(){inti,j;floatsum

[M],ave[M];intcount;intgroup;inta[M][MAX];printf(“请输入小组的组数:”);scanf(“%d”,&group);printf(“请输入小组的人数:”);scanf(“%d”,&count);printf(“

请输入每小组的学生成绩:”);C语言程序设计案例教程大连理工大学出版社任务2求每个小组学生成绩的总分及平均分for(i=0;i<group;i++){for(j=0;j<count;j++){scanf(“%d”,&a[i][j]);}}for(i=0;i<group;i++){su

m[i]=0.0;for(j=0;j<count;j++){sum[i]=sum[i]+a[i][j];}C语言程序设计案例教程大连理工大学出版社任务2求每个小组学生成绩的总分及平均分编译、连接、和运行程序。程序运行后

,屏幕显示:请输入小组的组数:3请输入小组的人数:10请输入小组的学生成绩:607080901009080706010060708070807060706080607070801008070706090第1个小组学生成绩的总分是800.000000分平均分是80.0

00000分第2个小组学生成绩的总分是700.000000分平均分是70.000000分第3个小组学生成绩的总分是750.000000分平均分是75.000000分ave[i]=sum[i]/count;}for(i=0;i<group;i++)printf(“第%d个小组学生成绩的总分是%f分\

t平均分是%f分\n”,i+1,sum[i],ave[i]);}C语言程序设计案例教程大连理工大学出版社任务2求每个小组学生成绩的总分及平均分要完成上面的任务,小王必须要熟练掌握数组的基本概念,熟练掌握二维数组的定义、

赋值,熟练掌握数组的输入和输出方法。C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用二维数组实际上就是一维数组的数组,即它的每一个一维元素都是一个一维数组,定义如下:类型说明符数组名[常量表达式][常量表达式];例如:in

ta[3][5];4.3.1二维数组的定义C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.1二维数组的定义a是一个二维数组,其中a[0],a[1],a[2]每一个都是一维数组,它们各有5个元素,分别是:a[

0][0]、a[0][1]、a[0][2]、a[0][3]、a[0][4]a[1][0]、a[1][1]、a[1][2]、a[1][3]、a[1][4]a[2][0]、a[2][1]、a[2][2]、a[2][3]、a[2][4]其中a[i][j](i=0,1,2,j=0,1

,2,3,4)是一个整数单元,这个数组共有15个整数单元,它们在内存中的分布是先按行排列再按列排列,a[0][0]是第1个元素,a[1][0]是第6个元素,……,a[2][4]是第15个元素,如下表所示。C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.1二维数

组的定义a[0][0]a[0][1]a[0][2]a[0][3]a[0][4]a[1][0]a[1][1]a[1][2]a[1][3]a[1][4]a[2][0]a[2][1]a[2][2]a[2][3]a[2][4]二维数组在定义时也可以对各个元素初始化,例如:Inta[3][5]={1,2

,3,4,5,6,7,8,9,10,11,12,13,14,15};初始化的数据按先排列行再排列列的顺序为每一个元素赋值,赋值的结果如下表所示。C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.1二维数组的定

义也可以用大括号来划分初始值,例如:inta[3][5]={{1,2,3,4,5},{6},{7,8}};其中{1,2,3,4,5}对a[0]数组赋初始值,{6}对a[1]数组赋初始值,{7,8}对a[2]数组赋初始值,赋值的结果如下表所示。a[0][0

]=1a[0][1]=2a[0][2]=3a[0][3]=4a[0][4]=5a[1][0]=6a[1][1]=7a[1][2]=8a[1][3]=9a[1][4]=10a[2][0]=11a[2][1]=0a[2

][2]=0a[2][3]=0a[2][4]=0C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.1二维数组的定义a[0][0]=1a[0][1]=2a[0][2]=3a[0][3]=4a[0][4]=5a[1][0]=6

a[1][1]=0a[1][2]=0a[1][3]=0a[1][4]=0a[2][0]=7a[2][1]=8a[2][2]=0a[2][3]=0a[2][4]=0在明确了括号的对数后,数组的第1维可以不写

,但第2维不能不写,例如:inta[][5]={{1,2,3,4,5},{6},{7,8}};系统也会知道第1维是3,等价于:Inta[3][5]={{1,2,3,4,5},{6},{7,8}};C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引

用—4.3.1二维数组的定义二维数组的数值数组被广泛应用于数学的矩阵计算中,二维数组的字符数组可用来存储一组字符串,例如:chars[3][8]={"one","two","three"};其中,s[0],s[1],s[2]都是一个8个字符的一维字符数组,分别存储"one

"、"two"、"three"字符串,赋值的结果如下表所示。S[0]„0‟„n‟„e‟„\0‟S[1]„t‟„w‟„o‟„\0‟S[2]„t‟„h‟„r‟„e‟„e‟„\0‟C语言程序设计案例教程大连理工大学出

版社4.3二维数组的定义和引用1.二维数组元素的表示形式:数组名[下标][下标]例如:a[2][3]下标可以是整型表达式,如a[2-1][2*2-1]数组元素可以出现在表达式中,也可以被赋值。例如:b[1][2]

=a[2][3]/2在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。4.3.2二维数组的引用C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.2二维数组的引用2.二维数组元素引用的程序实例【例4.4】将一个二维数组行和列元素互换,存到另一

个二维数组中。例如12314a=456b=2536/*源文件名:Li4_4.c功能:将一个二维数组行和列元素互换,存到另一个二维数组中。*/C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引

用—4.3.2二维数组的引用#include<stdio.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}};/*定义a二维数组*/intb[3][2],i,j;/*定义b二维数组*/printf("数组a:\n");for(i=0;i<=1;i+

+){for(j=0;j<=2;j++){printf("%5d",a[i][j]);/*输出a二维数组*/b[j][i]=a[i][j];/*a数组行和列元素互换,存到b数组*/}C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.

2二维数组的引用printf("\n");}printf("数组b:\n");for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d",b[i][j]);/*输出b二维数组*/printf("\n");}}C语言程序设计案例

教程大连理工大学出版社4.3二维数组的定义和引用—4.3.2二维数组的引用程序运行后,屏幕显示:数组a:123456数组b:142536C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.2二维数组的引用【例4.5】定义一个

整数数组a[5][6],用随机函数值填写每个单元,找出最大值的单元,输出其行号及列号。/*源文件名:Li4_5.c功能:找出二维数组中最大值的单元,输出其行号及列号。*/C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.2二维数

组的引用#include<stdio.h>#include<stdlib.h>voidmain(){inta[5][6];/*定义a二维数组*/inti,j,k,l,max;/*定义i、j为循环变量,k、l为最大值所在的行和列,max为最大值*/for(i

=0;i<5;i++)for(j=0;j<6;j++)a[i][j]=rand()%100;/*给a二维数组赋值*/max=a[0][0];k=0;l=0;/*把a[0][0]假设为最大值*/for(i=0;i<5;i++)for(j=0;j<6;j

++)C语言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.2二维数组的引用if(a[i][j]>max){k=i;l=j;max=a[i][j];}/*保存最大值及其行号k及列号l*/printf("数组是\n

")for(i=0;i<5;i++);{for(j=0;j<6;j++)printf("%4d",a[i][j]);/*输出a二维数组的值*/printf("\n");}printf("最大值是a[%d][%d]=%d\n",k,l,max);}C语

言程序设计案例教程大连理工大学出版社4.3二维数组的定义和引用—4.3.2二维数组的引用程序运行后,屏幕显示:数组是52652885352954665148541353527477414599126275159835612403249最大值是a[

1][0]=95C语言程序设计案例教程大连理工大学出版社任务3将小组学生按条件筛选辅导员张老师在使用小王设计的程序时,发现他要对小组学生的英文姓名按照字典的顺序排列输出它们,故张老师找来小王同学,说明了需求,小王根据张老师的需求,参考了相关的

资料,完善了原来的程序,帮助张老师解决了该问题。/*功能:将小组学生的英文姓名按字典的顺序排列*/#include<stdio.h>#include<string.h>voidmain()C语言程序设计案例教程大连理工大学出版社任务3将小组学生按条件筛选{charnames[5][20],

tmp[20];/*定义字符数组words和临时变量tmp*/inti,j;for(i=0;i<5;i++){printf("输入第%d个学生的英文姓名:",i+1);gets(names[i]);/*从键盘上输入学生的英文姓名*/}for(i=0;i<4;i++)for(j=i+1

;j<5;j++)if(strcmp(names[i],names[j])>0){strcpy(tmp,names[i]);strcpy(names[i],names[j]);strcpy(names[i],tmp);/*交换names[i]与names[j]

*/}C语言程序设计案例教程大连理工大学出版社任务3将小组学生按条件筛选puts("字典排序的学生英文姓名");for(i=0;i<5;i++)puts(names[i]);}设学生的英文姓名存储在names[5][20]的字符数组中,

排序方法按比较法进行,这里比较的是学生的英文姓名字符串的大小。输入第1个学生的英文姓名:lily输入第2个学生的英文姓名:lucy输入第3个学生的英文姓名:kate输入第4个学生的英文姓名:tom输入第5个学生的英文姓名:tony字典排序的学生英文姓名li

lylucykatetomtonyC语言程序设计案例教程大连理工大学出版社任务3将小组学生按条件筛选输入第1个学生的英文姓名:lily输入第2个学生的英文姓名:lucy输入第3个学生的英文姓名:kate输入第4个学生的英文姓名:tom输入第5个学生的英文姓名:tony字典排序的学生英文姓

名lilylucykatetomtony编译、连接、和运行程序。程序运行后,屏幕显示:C语言程序设计案例教程大连理工大学出版社任务3将小组学生按条件筛选要完成上面的任务,小王必须要熟练掌握数组的基本概念,熟练掌握字符数组的定义、赋值,熟练掌握数组的输入和输出方法,字符串和字

符数组的不同特点,掌握数组的排序、查询等基本操作方法。C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串一维字符数组是char型的数组,因为它的每一个元素是一个char型变量,可以用来存放字符串,因此比较特别,例如:chara[5];定义了一个字符数组,它有a[0],a[1],a[2]

,a[3],a[4]共5个元素,可以为它们赋值,例如:a[0]=‘H‘;a[1]=‘e‘;a[2]=‘l‘;a[3]=‘l‘;a[4]=‘o‘;也可以在定义时就对各个元素赋值,例如:chara[5]={‘H‘,‘e‘,‘l‘,‘l‘,‘o‘};4.4.1一维字符数组C语言

程序设计案例教程大连理工大学出版社4.4字符数组和字符串字符串是一组字符,这些字符在内存中连续分布,在最后一个字节单元中用‘\0‘表示结束,这种结构与字符数组十分相似,实际上字符数组可以用来表示和存储字符串。例如:charb[6]={"Hello"};char

b[6]={‘H‘,‘e‘,‘l‘,‘l‘,‘o‘,‘\0‘};以上两种定义方法是完全等价的。4.4.2一维字符数组与字符串C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串1.字符数组元素

的引用方式和一维数组元素的引用方式相同数组名[下标]下标可以是整型常量或整型表达式。例如:a[0]=a[2*3]+42.字符数组元素引用的程序实例【例4.6】输出一个字符串。/*源文件名:Li4_6.c功能:用字符数组输出一个字符串。*/4.4.3字符数组的引用C语言程序设计案例教程大连理工大学出

版社4.4字符数组和字符串—4.4.3字符数组的引用#include<stdio.h>voidmain(){charc[10]={’I’,’’,’a’,’m’,’’,’a’,’’,’b’,’o’,’y’};/*定义c字符数组并赋初值*

/inti;for(i=0;i<10;i++)printf("%c",c[i]);/*输出字符数组c的值*/printf("\n");}Iamaboy程序运行后,屏幕显示:C语言程序设计案例教程大连理工大学出版社gets是用来输入字符串的函数,使用方法是:gets(字符数组);gets(

)函数从输入流中读取一行字符,一直读到‘‘\n‟‟,但不包括‘‘\n‟‟字符,最后在末尾自动加上‘‘\0‟‟的结束标志。如果字符串的长度超过字符数组的容量,C程序不会自动停止读取字符,程序设计人员应设法保证读取

的字符数不要超过字符数组的容量,不然数组越界会带来预想不到的错误。4.4字符数组和字符串4.4.4字符串输入输出函数C语言程序设计案例教程大连理工大学出版社puts函数是用来输出字符串,使用方法是:puts(字符数组);puts()输出一个字符串,之后输出‘‘\n„„换行。4.4字符数组和字

符串—4.4.4字符串输入输出函数【例4.7】用gets()函数读取字符串并用puts()函数输出字符串。/*源文件名:Li4_7.c功能:用gets()函数读取字符串并用puts()函数输出*/C语言程序设计案例教程大连理工大学出版社4.4字符数组和字

符串—4.4.4字符串输入输出函数#include<stdio.h>voidmain(){chars[18];/*定义s字符数组的初值*/printf("输入字符串");gets(s);/*读取字符串*/puts(

s);/*输出字符串*/printf("读取的字符串是\"%s\"\n",s);/*输出s字符数组的值*/}输入字符串Howareyou?Howareyou?读取的字符串是"Howareyou?"程序运行后,屏幕

显示:C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串字符串在程序中大量用到,关于字符串有一些常用的函数,这些函数在string.h头文件中说明,在使用时程序的开始部分要包含下面语句:#include<string.h>

4.4.5常用字符串函数C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数strlen意思是stringlength。strlen函数用来测试字符串的长度,即从第一个字符开始一直到‘\0‘之前的一个字符的总字符数,方法是:strlen(字符数组或字符串);

该函数返回一个整数表示字符串的长度,例如:strlen("How");值为3strlen("Howabout?");值为10strlen("C语言");值为5,一个汉字占两个字节1.Strlen函数C语言程序设计案例教程大连理工大学出版社4.4

字符数组和字符串—4.4.5常用字符串函数strcpy意思是stringcopy。strcpy函数把一个字符串或字符数组复制到另一个字符数组中,方法是:strcpy(字符数组,字符数组或字符串);例如:char

s[18],t[18];strcpy(s,"Hello");/*s数组中存储了2.Strcpy函数C语言程序设计案例教程大连理工大学出版社"Hello"*/strcpy(t,s);/*t数组中也存储了"Hello"*/在字符串的使用中千万不能把一个字符串直接赋值给另外一个字符数组,例如以

下语句是错误的:chars[]={"Hello"};chart[10];t=s;/*错误!应该是strcpy(t,s);*/4.4字符数组和字符串—4.4.5常用字符串函数C语言程序设计案例教程大连理工

大学出版社4.4字符数组和字符串—4.4.5常用字符串函数在使用strcpy时一定要保证存储字符串的数组空间要足够大,能容纳所复制的字符串,不然也会导致越界,例如下面的语句是不合适的:chars[5];strcpy(s,"123

456");strcpy的作用就是把字符串中的字符连同‘\0‘一起复制给另外一个字符数组。C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数strcat意思是stringcatenate。strcat函数完成两个字符串的连接

,方法是:strcat(字符数组,字符数组或字符串);执行后会把另一个字符串连接在已有字符串后面,形成一个更长的字符串,例如:chars[18];strcpy(s,"How");/*s为"How"*/3.Strcat函数C语言程序设计案

例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数strcat(s,"are");/*s为"Howare"*/strcat(s,"you?");/*s为"Howareyou?"*/在使用strcat

函数时一定要保证存储字符串的数组空间要足够大,能容纳所连接后的字符串,不然也会导致越界,例如下面的语句是不合适的:chars[]={"How"};strcat(s,“are”);/*s只有4个字节的空间,不能容纳"Howare"*/C语言程序设计案例教程大连理工大学出版社4.4

字符数组和字符串—4.4.5常用字符串函数strcmp函数是用来比较两个字符串的大小的,方法是:strcmp(字符串1,字符串2);当字符串1>字符串2时,返回一个正整数;当字符串1=字符串2时,返回0;当字符串1<字符串2时,返回一个负整数。两个字符串的比

较是按字母的ASCII码或汉字内码的值来比较的,程序把字符串在内存中的每一个字节看成是一个无符号二进制数,比较在两个字符串的字节之间进行,比较规则如下:C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数⑴比较两个字符串的字节值,如两个对应字节一样,则继

续比较下一个字节。⑵如两个对应的字节不同,则字节值大的字符串大。⑶如比较时其中一个字符串结束,字节值都一样,则字符串长的那一个大。⑷两个字符串相等当而且仅当它们两个一样长,而且每一个字节值完全相等。根据ASCII码规则,字符比较一般有以下原则:

空格<‘0‘<‘1‘<„<‘9‘<‘A‘<‘B‘<„<‘Z‘<‘a‘<‘b‘<„<‘z‘<汉字C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数【例4.8】输入一组字符串,以输入空串结束输入,找出

最大的字符串(设串长不超过80字符)。/*源文件名:Li4_8.c功能:输入一组字符串,找出最大的字符串。*/分析:可以用gets函数读取字符串,设置一个最大字符串数组smax,第一次设置smax为空串,每读一个字符串s就把它与保存在sm

ax中的字符串比较,如s>smax则用s替换smax,不然smax保持不变,这样当所有的字符串输入完毕后,smax中存储的就是最大字符串。Howareyou?读取的字符串是"Howareyou?"5.字符串函数应用C语言程序设计案例教程大连理工大学出版社5.4字符数组和字符串—5.4.

5常用字符串函数#include<stdio.h>#include<string.h>voidmain(){charsmax[80],s[80];/*定义数组smax和数组s*/strcpy(smax,"");/*设置数组sm

ax为空,也可以设smax[0]=„\0„*/do{printf("输入字符串:");gets(s);/*读取字符串*/if(strcmp(s,smax)>0)strcpy(smax,s);/*s数组比smax数组大的话,把s数组赋值个sma数组*/}while(s[0]!=„\0„puts("

最大的字符串是");puts(smax);}C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数程序运行后,屏幕显示:输入字符串:How输入字符串:to输入字符串:compare输入字符串:strings输入字符串:最

大的字符串是toC语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数【例4.9】输入一个字符串,把其中的所有大写字母变成小写字母,其余不变。/*源文件名:Li4_9.c功能:输入一个字符串,把其中的所有大

写字母变成小写字母,其余不变。*/分析:输入的字符串为s,逐个去考察它的每一个字符s[i],i=0,1,…,strlen(s)-1,看看s[i]是否是大写,如是则把它转为小写,否则不变。#include<stdio.h>#include<string.h

>voidmain(){chars[80];/*定义s数组*/inti=0;printf("输入字符串:");C语言程序设计案例教程大连理工大学出版社4.4字符数组和字符串—4.4.5常用字符串函数gets(s);/*读取字符串*/while(s[i])/*s[i]=„

\0„时条件才为假*/{if(s[i]>=„A„&&s[i]<=„Z„)s[i]=s[i]+32;/*把大写字母转化为小写字母*/i++;}puts("变换后的字符串是");puts(s);}程序运行后,屏幕显示:输入字符串:ToL

earnCProgram变换后的字符串是tolearncprogramC语言程序设计案例教程大连理工大学出版社4.5实例解析【例4.10】输入一个字符串,判断它是否是一个回文串,所谓的回文串是指这个字符串从左到右及从右到左的字母排列是一样的,例

如"pop","legel"等。/*源文件名:Li4_10.c功能:输入一个字符串,判断它是否是一个回文串*/分析:判断一个字符串s左右顺序是否一样,可以设计一个从左到右的下标i,i=0,1,...,strlen(s)-1,同时设计一个从右到左的下标j,j=strlen(s)-1,s

trlen(s)-2,…,1,0,每次比较s[i]和s[j],如s[i]==s[j],则++i,--j,再比较下一对,如s[i]!=s[j],则s肯定不是回文,如对所有的i<j,都有s[i]==s[j],则s是回文。C语言

程序设计案例教程大连理工大学出版社4.5实例解析#include<stdio.h>#include<string.h>voidmain(){chars[80];/*定义s数组*/inti=0,j=0;printf("输入字符串:");gets(s);/*读取字符串*/i=

0;j=strlen(s)-1;while(i<j){C语言程序设计案例教程大连理工大学出版社4.5实例解析程序运行后,屏幕显示:输入字符串:pop是回文if(s[i]==s[j]){++i;--j;}/*s[i]==s[j]则++i,--j*/else{puts(“不是回文

”);break;}/*s[i]!=s[j]则打印“不是回文”,结束循环*/}if(i>=j)puts("是回文");}C语言程序设计案例教程大连理工大学出版社4.5实例解析【例4.11】输入一个日期,计算这一天是当年的第几天。源文件名:Li4_11.c功能:

输入一个日期,计算这一天是当年的第几天。*/分析:设输入的日期是y年、m月、d日,这一日期首先要合法,其次才能计算是该年的第几天(例如2019-2-19为第50天),计算是第几天可以根据m是第几月来计算,它包含1,2,…m-1月的天数及当月的d天。注意如果是闰年的话,2月

份天数是29。C语言程序设计案例教程大连理工大学出版社5.5实例解析#include<stdio.h>voidmain(){inti,y,m,d,days,k;/*y为年,m为月,d为日,days为总天数*/intmonths[12]={31.28,31,30,31

,30,31,31,30,31,30,31};printf("输入日期(Y-M-D):");scanf("%d-%d-%d",&y,&m,&d);/*从键盘上输入年、月、日*/if(y>0&&m>=1&&m<=12){if(y%4==0&&y%100!=0||

y%400==0)months[1]=29;/*闰年2月份为29天*/if(d>=1&&d<=months[m-1]){C语言程序设计案例教程大连理工大学出版社4.5实例解析程序运行后,屏幕显示:days=d;for(k=0;

k<m-1;k++)days=days+months[k];/*累计1到m-1月份的天数*/printf("%d-%d-%d是当年第%d天\n",y,m,d,days);/*输出天数*/}elseputs("无效日期!");}elseputs("无效

日期!");}输入日期(Y-M-D):2019-10-62019-10-6是当年第279天C语言程序设计案例教程大连理工大学出版社4.5实例解析【例4.12】输入5个英文单词(长度不超过20个字符),按字典顺序排列

输出它们。/*源文件名:Li4_12.c功能:输入5个英文单词,按字典顺序排列输出它们。*/分析:设单词存储在words[5][20]的字符数组中,排序方法按比较法进行,这里比较的是单词字符串的大小。C语言程序设计案例教程大连理工大学出版社4.5实例解析#include<st

dio.h>#include<string.h>voidmain(){charwords[5][20],tmp[20];/*定义字符数组words和临时变量tmp*/inti,j;for(i=0;i<5;i++){printf("输入第%d个单词

:",i+1);gets(words[i]);/*从键盘上输入单词*/}for(i=0;i<4;i++)for(j=i+1;j<5;j++)C语言程序设计案例教程大连理工大学出版社4.5实例解析if(strcmp(words

[i],words[j])>0){strcpy(tmp,words[i]);strcpy(words[i],words[j]);strcpy(words[i],tmp);/*交换words[i]与words[j]*/}puts("字典排序单词");for(i=0;i

<5;i++)puts(words[i]);}C语言程序设计案例教程大连理工大学出版社4.5实例解析程序运行后,屏幕显示:输入第一个单词:art输入第一个单词:about输入第一个单词:like输入第一个单词:music输入第一个单

词:and字典排序单词aboutandartlikemusicC语言程序设计案例教程大连理工大学出版社4.5实例解析【例4.13】数字中有一个很有趣的现象,任何一个4位整数n,只要它的4位数字不完全相同,把它的4位数字从大到小排序生成另外一个数p

,再把它的4位数从小到大排序生成另外一个数q,计算p与q的差r=p-q,那么r可能等于6174。如果r不是6174,则再把r看成4位数(不足高位补0),重复同样的操作,最终r必等于6174,编程序验证这一事实。C语言程序设计案例教程大连理工大学出版社4.5实例解析/*源文件

名:Li4_13.c功能:任何一个4位整数n,只要它的4位数字不完全相同,把它的4位数字从大到小排序生成另外一个数p,再把它的4位数字从小到大排序生成另外一个数q,计算p与q的差r=p-q,那么r可能等于6174。如果r不是

6174,则再把r看成4位数(不足高位补0),重复同样的操作,最终r必等于6174。*/分析:设计一个d[4]的整数数组,负责分解每一个数字,把这个数组从大到小排序,则p的值为:p=d[0]*1000+d[1]*100+d[2]*10+d[

3];q=d[3]*1000+d[2]*100+d[1]*10+d[0];C语言程序设计案例教程大连理工大学出版社4.5实例解析#include<stdio.h>voidmain(){intn,p,q,r,d[4];/*定义d数组存储每个数字*/inti,j,m;printf("输入一个4位数:

");scanf("%d",&n);/*键盘上输入一个4位整数*/m=0;do{for(i=0;i<4;i++){d[i]=n%10;n=n/10;}/*分解各位数字到d[0],d[1],d[2],d[3]*/for(

i=0;i<3;i++)for(j=i+1;j<4;j++)C语言程序设计案例教程大连理工大学出版社4.5实例解析if(a[i]<a[j]){r=d[i];d[i]=d[j];d[j]=r;}/*从大到小排序*/p=d[0]*1000+d[1]*100+d[2]*10

+d[3];q=d[3]*1000+d[2]*100+d[1]*10+d[0];r=p-q;if(r==0){printf("4位数字不能完全相同!\n");break;}/*r=0表示4位数字相同*/n=r;printf("第%2d:%4d-%4d=

%d\n",++m,p,q,r);/*打印每一步*/}while(r!=6174);}C语言程序设计案例教程大连理工大学出版社4.5实例解析程序运行后,屏幕显示:输入一个4位数:2324第1步:4322-2234=2088第2步:8820-0288=85

32第3步:8532-2358=6174C语言程序设计案例教程大连理工大学出版社小结所谓数组就是一组具有相同数据类型的数据的有序合。一维数组的定义:类型说明符数组名[常量表达式];一维数组元素的引用:数组名[下标]二维数组的定义:类型说明符数组名[常量表

达式][常量表达式];二维数组元素的引用:数组名[下标][下标]常用字符串函数:1.strlen函数;2.strcpy函数;3.strcat函数;4.strcmp函数大连理工大学出版社

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?