




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数组*重点与难点5.1概述5.2一维数值数组5.3二维数组5.4字符串与字符数组5.5程序举例*本章小结*作业重点与难点重点:数组的定义、初始化和元素的引用。难点:正确使用数组。5.1概述数组属于构造类型,即由基本类型构造出的新类型。数组:是连续存放的、具有相同类型的、并且具有相同的变量名,通过下标来引用每个元素(也称下标变量)。数组的维数:一维数组、二维数组、多维数组5.2一维数值数组5.2.1一维数值数组的定义5.2.2一维数值数组的初始化5.2.3一维数值数组的引用5.2.4一维数值数组程序举例5.2.1一维数值数组的定义一般定义形式:
类型说明符数组名[常量表达式];举例:
1)inta[10];2)floatscore[40];3)#defineN5intb[N];4)inta=4;intb[a];(错误)5.2.2一维数值数组的初始化数组定义后系统并不会自动初始化。初始化方法1)inta[5]={1,2,3,4,5};2)intb[5]={0};3)intc[10]={1,2,3,,4};4)intd[]={0,1,2,3};其他初始化方法5)inta[5];a[0]=1;a[1]=3;a[2]=7;a[3]=9;a[4]=10;6)intb[10];for(i=0;i<10;i++)scanf("%d",&a[i]);初始化常见错误超出数组范围:下标从0开始数组名不能被赋值:因为数组名代表数组的首地址,是常量。5.2.3一维数值数组的引用引用形式:数组名[下标]*下标表示元素在数组中的顺序号!可以是任何表达式,系统会自动取整。引用是对数组元素,不能对数组整体引用。引用越界,系统不会给出错误提示!定义与引用int[10];
10表示数组的长度或称元素个数a[5]
5表示第6个元素5.2.4一维数值数组程序举例例5.1键盘输入给数组赋值,并且逆序输出。例5.2利用数组计算斐波拉契数列前十项。例5.3“冒泡”排序例5.1键盘输入给数组赋值,并且逆序输出。main(){inta[10],i;printf("Pleaseinput10number:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("Theresult:");for(i=9;i>=0;i--)printf("%d",a[i]);}例5.2利用数组计算斐波拉契数列前十项。main(){intf[10]={1,1},i;for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];for(i=0;i<10;i++){
if(i%5==0)printf("\n");printf("%12d",f[i]);}}例5.3“冒泡”排序(10个数)988888895555559444444922222290000009排好的数据程序说明inta[11];/*a[1]~a[10]存放10个数*/for(j=1;j<10;j++)/*10-1趟*/for(i=1;i<=10-j;i++)/*比较次数10-j*/if(a[i]>a[i+1])/*交换,保证从小到大*/{t=a[i];a[i]=a[i+1];
a[i+1]=t;}
5.3二维数组5.3.1二维数组的定义与初始化5.3.2二维数值数组程序举例5.3.1二维数组的定义与初始化1、二维数组的定义2、二维数组的初始化1、二维数组的定义一般形式
类型说明符数组名[常量表达式2][常量表达式1]举例:
inta[2][3];
第0行:a[0][0]、a[0][1]、a[0][2]
第1行:a[1][0]、a[1][1]、a[1][2]2、二维数组的初始化1)intt[2][3]={{1,2,3},{4,5,6}};intt[2][3]={1,2,3,4,5,6};2)赋值语句或键盘输入初始化3)intx[][3]={{1,2,3},{4,,6},{7}};inty[3][]={1,2,3,4,5};(错误)
{{1,2},{3,4},{5}}
{{1,2,3},{4,5}}5.3.2二维数值数组程序举例例5.4在矩阵a中选出各行最大元素组成一维数组b。例5.5有5人3门课成绩,编程求各科平均分、总平均成绩。例5.4在矩阵a中选出各行最大元素组成一维数组b。inta[3][4],b[3];for(i=0;i<3;i++){
m=a[i][0];for(j=1;j<4;j++)if(a[i][j]>m)m=a[i][j];b[i]=m;}例5.5有5人3门课成绩,编程求各科平均分、总平均成绩。1)请注意:书上的程序是按课程输入每个人的成绩。即按列输入!2)ave[i]=s/5;/*各科平均分*/3)total=(ave[0]+ave[1]+ave[2])/3;思考题有5人3门课程的成绩,编程求出每个人的平均分,每门课程的平均成绩。要求逐个人输入,即先输入第一个人三门课成绩,再输入第2个人的3门课成绩,以此类推。5.4字符串与字符数组5.4.1字符串和字符串结束标志5.4.2字符串和字符数组5.4.3字符串处理函数5.4.1字符串和字符串结束标志字符串:"abc"字符串结束标志:'\0'注意:C语言中没有字符串变量,字符串是通过字符数组来存放的。5.4.2字符串和字符数组1、字符数组的定义2、字符数组的初始化3、字符数组的输入/输出1、字符数组的定义chars[12];2、字符数组的初始化1)为数组中各元素逐个指定初值。
chars[6]={'b','o','y','\0'};chart[]={'c','a','t'};2)用字符串进行初始化。
charstr1[5]={"boy"};charstr2[5]="cat";
charstr3[][6]={"Tom","Mary","Peter"};3、字符数组的输入/输出1、逐个字符输入/输出:%cscanf("%c",&str[i]);2、字符串形式输入/输出:%sscanf("%s",str);/*str代表数组首地址*/举例main(){charstr[20];for(i=0;i<19;i++)scanf("%c",&str[i]);str[i]='\0';printf("%s",str);scanf("%s",str);printf("%s",str);}运行情况Iamaboy.Iamaboy.Itisadog.It遇到空格、回车和Tab键结束。5.4.3字符串处理函数函数功能puts(字符数组)将一个字符串输出到终端gets(字符数组)从终端输入一个字符串到字符数组strcat(字符数组1,字符数组2)把字符串2连接到字符串1的后面,结果放在字符数组1中strcpy(字符数组1,字符串2)将字符串2复制到字符数组1中。(字符串赋值不能使用“=”)strcmp(字符串1,字符串2)比较字符串1和字符串2。strlen(字符数组)测试字符串的实际长度,不含'\0'在内。strlwr(字符串),strupr(字符串)转换成小写转换成大写puts()/gets()举例#include<stdio.h>main(){charstr[20];puts("Inputastring:");gets(str);puts(str);}程序运行:Inputastring:Iamateacher.Iamateacher.-(光标当前位置)综合应用字符串处理函数举例#include<string.h>main(){charstr1[40];str2[40],temp[40];
gets(str1);gets(str2);
strlwr(str1);if(strcmp(str1,str2)<0){
strcpy(temp,str1);strcpy(str1,str2);strcpy(str2,temp);}
strcat(str1,str2);
strupr(str1);printf("len=%d",strlen(str1));}5.5程序举例例5.13输出3个字符串中最大的串。例5.14统计3行文字中各类字符的个数。例5.15选择排序,在排序的结果中插入一个数,保证插入后仍然有序。
例5.13输出3个字符串中最大的串。main(){charmaxstr[10],str[3][10],i;for(i=0;i<3;i++)gets(str[i]);
strcpy(maxstr,str[0]);if(strcmp(maxstr,str[1])<0)strcpy(maxstr,str[1]);if(strcmp(maxstr,str[2])<0)strcpy(maxstr,str[2]);puts("thelargeststring:");puts(maxstr);}例5.14统计3行文字中各类字符的个数。3个字符串合并:strcat(str0,str1);strcat(str0,str2);strcat(str0,str3);for(i=0;str0[i]!='\0';i++)......书上使用的是ASCII码值,也可以使用字符形式。例5.15选择排序,在排序的结果中插入一个数,保证插入后仍然有序。本程序包括:1)先选择法排序。2)插入一个数,并且保证仍然有序。选择排序图示a[0]a[1]a[2]a[3]a[4]3619416394136941349613469起初a[0]、a[2]对调后选择法排序(程序)for(i=0;i<10;i++){p=i;q=a[i];for(j=i+1;j<10;j++)if(q<a[j]){p=j;q=a[j];}if(p!=i){s=a[i];a[i]=a[p];a[p]=s;}}插入n的操作(仍然保持降序)for(i=0;i<10;i++){if(n>a[i]){for(s=9;s>=i;s--)a[s+1]=a[s];/*移位*/break;}a[i]=n;}分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 晋中学院《热质交换原理与设备》2023-2024学年第一学期期末试卷
- 陕西省蓝田县联考2024-2025学年初三下学期二模考试英语试题试卷含答案
- 人教版数学2.百分数(二)折扣同步练习六年级下册含答案
- 2024年八月跨河输气管道浮船辅助拆除水流监测合同
- 郑州工业安全职业学院《中西医结合内科学(一)》2023-2024学年第一学期期末试卷
- 昆明艺术职业学院《汽车展示设计》2023-2024学年第二学期期末试卷
- 内蒙古化工职业学院《墨学研究》2023-2024学年第一学期期末试卷
- 企业员工培训服务合同
- 2025年福建省泉州市泉港一中等高三练习题四(全国卷)历史试题含解析
- 广西贺州市平桂区高级中学2025年高三5月模拟考试自选试题含解析
- 桥梁养护风险辨识手册
- 2023版设备管理体系标准
- 独唱曲 课件-2022-2023学年高中音乐人音版(2019)必修 音乐鉴赏
- 2021年青海省中考化学试卷(附答案详解)
- 《曼陀罗绘画疗愈-初三减压》PPT
- 二、问题解决型(指令性目标)QC成果案例
- 小学生三好学生竞选演讲稿PPT幻灯片
- 2021特种设备管理与使用指导手册
- 养老机构员工考核评分表
- 火电厂基本建设程序与设计内容深度介绍
- 三年级下册数学说课稿-第三单元解决问题的策略-画线段图 苏教版
评论
0/150
提交评论