计算机程序设计c语言数组_第1页
计算机程序设计c语言数组_第2页
计算机程序设计c语言数组_第3页
计算机程序设计c语言数组_第4页
计算机程序设计c语言数组_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、11.1.掌握一维数组、二维数组、字符掌握一维数组、二维数组、字符数组的定义和引用数组的定义和引用 2.2.熟悉常用的字符串处理函数熟悉常用的字符串处理函数3.3.简单的编程应用简单的编程应用主要任务:主要任务:2022-5-2822022-5-2832022-5-284 构造类型的每一个分量是一个变量,它可以是一个构造类型的每一个分量是一个变量,它可以是一个简单类型或者构造类型。简单类型或者构造类型。 构造类型分量的使用方法与简单变量相同。构造类型分量的使用方法与简单变量相同。 构造类型的分量占用相邻的存储空间。构造类型的分量占用相邻的存储空间。 对于构造类型来说,重点是访问其分量的方法。对

2、于构造类型来说,重点是访问其分量的方法。 构造类型的每一个分量是一个变量,它可以是一个构造类型的每一个分量是一个变量,它可以是一个简单类型或者构造类型。简单类型或者构造类型。 构造类型分量的使用方法与简单变量相同。构造类型分量的使用方法与简单变量相同。 构造类型的分量占用相邻的存储空间。构造类型的分量占用相邻的存储空间。 对于构造类型来说,重点是访问其分量的方法。对于构造类型来说,重点是访问其分量的方法。2022-5-285随温度而改变的实验数据随温度而改变的实验数据 按学号排列的成绩表按学号排列的成绩表 线性方程组的线性方程组的m m* *n n系数矩阵系数矩阵u都是由若干个分量组成都是由若

3、干个分量组成u数据分量都是同一类型(可取任何数据类型)数据分量都是同一类型(可取任何数据类型)u这些分量是按一定顺序排列的这些分量是按一定顺序排列的2022-5-286 用一符号名(数组名)来表示这一组数用一符号名(数组名)来表示这一组数 用数组名后跟下标来唯一确定数组中的元素用数组名后跟下标来唯一确定数组中的元素 数组的首地址、数组元素的类型和个数数组的首地址、数组元素的类型和个数2022-5-287(D是符号常量是符号常量) 数组名命名规则遵循数组名命名规则遵循C C语言标识符的命名规则语言标识符的命名规则 数组名后只能用数组名后只能用括起来的括起来的表达式(常量或符号常量)表达式(常量或

4、符号常量) 常量表达式的值确定数组元素的个数(尺寸)常量表达式的值确定数组元素的个数(尺寸) 起始下标从起始下标从 开始,最大下标值为数组元素个数减一开始,最大下标值为数组元素个数减一2022-5-2882022-5-28910001002100410061008a0a1a2a3a4如:如:int a5,在内存中的存储为,在内存中的存储为l 保存数组所需内存量与数组元素的基本类型和数组保存数组所需内存量与数组元素的基本类型和数组大小有关大小有关总字节数总字节数= =sizeofsizeof(基本类型)(基本类型)* *数组元素个数数组元素个数下标为下标为i i元素地址元素地址= =第第1 1元

5、素地址元素地址+i+i* *sizeofsizeof( (基本类型基本类型) )2022-5-28102022-5-28119876543210数组元素下标数组元素下标常用循环变量常用循环变量来控制来控制2022-5-2812int a4=1,2,3,4;a0=1, a1=2, a2=3, a3=4int b5=1,2;b0=1, b1=2, b2=b3=b4=0int c =1,2,32022-5-2813int a5=0,1,2,3,4,5;2022-5-281412nn 2n 1F1F1FFF(n3) f1=1,f2=1 for i=1 to 20 f1=f1+f2 f2=f2+f1输出

6、输出f1,f2#includevoid main() int i; long int f1,f2; f1=1; f2=1; for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; #includevoid main() int i; long int f40=1,1; for(i=2;i40;i+) fi=fi-2+fi-1; for(i=0;i40;i+) if(i%4=0) printf(n); printf(%12d,fi); printf(n); fi=fi-2+fi-1

7、2=i=402022-5-2815反复扫描输入序列,比较两个相邻元素,若发现反复扫描输入序列,比较两个相邻元素,若发现他们构成逆序,就将其换位。他们构成逆序,就将其换位。 外循环外循环j j控制比较趟数(控制比较趟数(n-1n-1趟)趟) 内循环内循环i i控制一趟比较的次数(控制一趟比较的次数(n-jn-j次)次)2022-5-2816(1) 如果改变扫描如果改变扫描方向方向(自底向自底向上上),程序怎,程序怎样改?样改?(2) 此程序是否还此程序是否还有可以改进的有可以改进的地方?地方?#include #define N 10void main() int aN; int i,j,t;

8、printf(Input data:); for(i=0;iN;i+) scanf(%d,&ai); for(i=1;i=N-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; printf(Output data:n); for(i=0;iN;i+) printf(%3d,ai);printf(n);2022-5-2817从从10个数中选出最小个数中选出最小的数与的数与a0对换;再从对换;再从剩下的剩下的9个数中选出最个数中选出最小的数与小的数与a1对对换;换; 共应选择共应选择9轮轮课后完成程序编写。课后完成程序编写。2022-5-2818202

9、2-5-2819 若用简单变量做,则需若用简单变量做,则需8个变量分别存放个变量分别存放8个候选人的票数个候选人的票数 读入一张选票,则进行判断,累加(即读入一张选票,则进行判断,累加(即8条这样的语句)条这样的语句)用数组进行统计用数组进行统计定义一个数组定义一个数组n9,n1中存放中存放1号的票数,号的票数,n2中存放中存放2号的票号的票数,数,n8中存放中存放8号的票数号的票数可发现数组元素的可发现数组元素的下标下标与要统计的候选人的与要统计的候选人的编号编号相吻合,故可直相吻合,故可直接采用:接采用:nx=nx+12022-5-2820#includevoid main() int x

10、, n9=0; printf(input No.:); scanf(%d,&x); while(x) nx+=1; printf(input No.:); scanf(%d,&x); for(x=1;x=8;x+) printf(tNo.%d=%d,x,nx); if (x%4=0) printf(n); 利用数组作为一组计利用数组作为一组计数器,通过将数器,通过将统计对统计对象的值象的值与存放该统计与存放该统计值的值的下标下标联系起来,联系起来,这样既可以使程序简这样既可以使程序简洁,又提高程序效率。洁,又提高程序效率。2022-5-28212022-5-2822int a3

11、4 ;注意注意:: float x234;2022-5-2823int a34;aa0-a00 a01 a02 a03a1-a10 a11 a12 a13a2-a20 a21 a22 a23可以理解为:可以理解为:int a04,a14,a24把把a0,a1,a2看作一维数组名看作一维数组名2022-5-282410001004100810121016a00a01a02a10a111020a12如:如:float a23,在内存中的存储为,在内存中的存储为:总字节数总字节数= =sizeofsizeof( (基本类型基本类型) )* *第一维大小第一维大小* *第二维大小第二维大小2022-5

12、-2825如:如:int a24, b53; a2-12*2-1 (下标可以是整型表达式)(下标可以是整型表达式) b12=a13/2int a34;a00a232022-5-2826/按存放顺序赋按存放顺序赋/按行赋按行赋 int x23=6,2,5,0,6 int x23=,1,22022-5-28272022-5-2828一般一般二维数组的处理用二重循环二维数组的处理用二重循环 用循环变量的值控制数组元素的下标用循环变量的值控制数组元素的下标#includevoid main() int a33,i,j; for(i=0;i=2;i+) for(j=0;j=2;j+) scanf(%d,

13、&aij); for(i=0;i=2;i+) for(j=0;j=2;j+) printf(%5d,aij); printf(n); scanf(%d,&aij); for(i=0;i=2;i+)printf(%5d,aii); for(i=0;i=2;i+) for(j=0;j=2;j+) printf(%5d,aij); printf(“n”); 2022-5-2829123a=45614b= 2536思路思路:用二重循环进行转置用二重循环进行转置 bjibji=aijaij for( i = 0; i=1; i+) for( j = 0; j=2; j+) b j i =

14、a i j ;123a456789147a258369思路思路:对称于主对角线的元素对称于主对角线的元素进行两两交换进行两两交换 for( i=0; i3; i+) for( j=0; j=字符个数字符个数+12022-5-2836 逐个字符数组元素输入输出:用逐个字符数组元素输入输出:用%c格式符描述格式符描述如:如:scanf(“%c”,&ai); printf(“%c%c%c”,b0,b2,b3); 整个字符串(数组)输入输出:用整个字符串(数组)输入输出:用%s格式符描述格式符描述如:如:char a =“china”; scanf(“%s”,a); printf(“%s”,a

15、);2022-5-28372022-5-2838用用%s%s输入时,遇输入时,遇空格空格或或回车回车便认为一个字符串结束便认为一个字符串结束how0are0you0?s15s25s352022-5-2839#includevoid main( ) char c110,c226; int i; for (i=0; i10; i+) c1i=i+0; for (i=0; i26; i+) c2i=i+A; for (i=0; i10; i+) printf(%c ,c1i); printf(n); for (i=0; i26; i+) printf(%c ,c2i); printf(n); 202

16、2-5-2840puts(str); 等价于等价于 printf(“%sn”,str);puts(“ok!”); 等价于等价于 printf(“%sn”,”ok!”); 或或 printf(“ok!n”);2022-5-2841puts(gets(s);2022-5-2842 拷贝时连同拷贝时连同0一起拷贝一起拷贝 字符数组字符数组1的长度的长度字符数组字符数组2/字符串的长度字符串的长度 不能把字符串或字符数组直接赋给一个字符数组不能把字符串或字符数组直接赋给一个字符数组如:如:char str6; str=“china”; (strstr表示一个地址)表示一个地址) str0=c; str

17、1=h; strcpy(str,”china”); 2022-5-2843#include#includestring.hvoid main() char s140,s210,s310; gets(s1); gets(s2); gets(s3); strcat(s1,s2); strcat(s1,s3); puts(s1); this is a bluepenthis isa bluepen思考思考:对字符数组对字符数组1 1的长度有何限制?的长度有何限制?2022-5-2844char c;c=A+B;char c10;c=“A”+”B”;char c10;strcpy(c,“A”+”B”)

18、;2022-5-28452022-5-2846abcde0str1abcde0str2abcabcde0bcd0Abcde0str1str2str1str22022-5-2847注意:注意: 对两个字符串的比较,不能用以下形式对两个字符串的比较,不能用以下形式 str1=str2; str1str2; 或或 str10或或=0或或0来判断来判断2022-5-28482022-5-2849读程序,写出输出结果。读程序,写出输出结果。输入输入:How are you?2022-5-2850#includevoid main() char s180,s280; int i=0,j=0; puts(input two strings:); gets(s1); gets(s2); while(s1i!=0) i+; while(s1i+=s2j+)!=0); printf(result: %sn,s1); input two strings:ab cdefgresult: ab cdefg2022-5-2851 有序数列中的元素:有序数列中的元素:a0a8,插入数,插入数k k从从a0开始依次和各元素比较,如果开始依次和各元素比较,如果kai,则让则让k占用占用ai的位置,后面的数依次往后挪,的位置,后面的数依次往后挪,并跳出循环,转到并跳出循环,转到 a9=k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论