C语言——第七章数组.doc
一维数组定义方式:类型说明符 数组名数组大小 (数组名与变量名定义规则相同)如:char c20;数组大小代表数组中元素个数,需要注意的是,数组下标从0开始,因此数组大小20的数组中最后一个元素为19。注意:C语言不允许对数组大小进行动态定义。一维数组的引用:数组名下标如:a3下标可以是常量或者表达式。如:a3、a2*5。一维数组初始化:在定义数组是进行赋值:int a5=1,2,3,4,5;只给一部分元素赋值:int a5=1,2,3;该情况下后两个元素为0。使一个数组中全部元素为0:int a5=0,0,0,0,0; 或 int a5=0;若对全部元素赋值,可不指定数组长度 :int a=1,2,3,4,5,;利用数组解决fibonacci数列:关键部分即利用数组构建fibonacci数列,但不能动态定义数列大小,如下:int i,a20;a0=a1=0;for(i=2;i<l;i+) ai=ai-1+ai-2;“起泡法”对数组中数列进行排序:思路:将相邻两个数进行比较,将小的调到前面。具体操作:对n个数进行比较,共有需要比较n-1次,第一次比较时有n-1个相邻比较组合,将最大的数送至最后的位置,第二次比较时有n-2个相邻比较组合,将次大的数送至倒数第二个位置,以此类推,直至找到最小的数,放在最前面的位置。#include<stdio.h>void main()int i,j,a10,t;for(i=0;i<10;i+) printf("请输入第%d个数字:",i+1); scanf("%d",&ai); for(i=0;i<9;i+) for(j=0;j<9-i;j+) if(aj>aj+1) t=aj; aj=aj+1; aj+1=t; printf("排序后的结果为:");for(i=0;i<10;i+)printf("%d,",ai);二维数组的定义:类型说明符 数组名一维大小二维大小如: char c24;(注:最大元素为c13)引用方法同一维数组。二维数组初始化:分行赋值:int a34=1,2,3,4,5,6,7,8,9,10,11,12;将所有元素放一块赋值:int a34=1,2,3,4,5,6,7,8,9,10,11,12;(若大括号内元素小于数组最大元素值,则对数组中剩下的元素赋0)部分赋值:int a34=1,2,3在对全部元素赋值时,可省略第一维大小,但不能省略二维大小:int a4=1,2,3,4,5,6,7,8,9,10,11,12;或使用分行赋值的方法:int a4=1,2,5,9,10,11,12;具体可用以下算法检验二维数组赋值情况,放入VC+6.0编译器中使用:#include<stdio.h>void main()int i,j,a4=按要求使用具体的赋值形式;for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%10d",aij); printf("n");字符数组:字符数组元素赋值时需要加上单引号!如:a23='a'用字符数组存储字符串:C语言中规定以'0'作为字符串的结束符。字符串可直接存储与字符数组中,方法为: char c="I am happy" 或 char c="I am happy" 系统会在最后自动加上'0',而对字符数组中元素一个个赋值的方式,即:char c='a','b','c','d'则不会在最后加上'0'。char c="I am happy"等价于char c='I','a','m',' ','h','a','p','p','y','0';而不等价于char c='I','a','m',' ','h','a','p','p','y';只有当存储字符串是才需要使用'0'字符数组的输入输出:方法一:逐个输出数组中的字符,用循环语句结合%c格式符。方法二:将整个字符串输出,用%s格式符。注:使用%s输出字符串时,必须使用数组名,而非数组元素名,即:printf("%s",c);当字符数组中包含多个'0'时,遇到第一个'0'就输出。可以使用scanf方法输入字符串至字符数组:scanf('%s',str);str为字符数组名,且str前不用加上&,因为C语言中数组名直接代表数组起始地址。当输入遇到空格或回车时即结束输入。总结一下,对字符数组赋值方法有一下几种方法:1.在定义时初始化,输入各个元素对应的字母,如:'A','b','c'2.在定义事初始化,输入完整字符串,如:"I am happy"3.在程序运行时进行赋值,利用循环语句结合scanf语句进行逐个字母的输入,利用%c格式符。4.在程序运行时进行赋值,利用scanf语句进行字符串输入,利用%s格式符,不可输入空格。5.在程序运行时进行赋值,利用gets函数输入,可输入空格。字符处理函数:puts函数:用于输出一个保存字符串的字符数组,用法为:puts(str);gets函数:用于输入一个字符串,用法为:gets(str)注:该方法可输入空格;strcat函数:用于连接两个字符串str1,str2,将str2放在str1后面,并将最终结果存储与str1中,用法为:strcat(str1,str2);strcpy函数:用于将字符串str2复制到str1中,用法为:strcpy(str1,str2)或者strcpy(str1,“字符串常量”),其中str1应足够长。(使用该函数的原因是,字符数组不能使用数组名直接赋值)strncpy函数:用于将字符串str2中的n个字符复制到str1中,用法为:strncpy(str1,str2,n);n不大于str2中原有字符数。strcmp函数:用于比较两个字符串,可以是字符数组,也可以是字符串常量,用法为:strcmp(str1,str2),若str1>str2则函数值>0,若str1<str2则函数值<0,若str1=str2则函数值=0。strlen函数:用于测量字符数组或字符串常量的实际长度(不包括'0')。strlwr和strupr函数:用于大小写转换。判断字符串中单词数量的程序:书本上P150列7.8的算法同样可用#include<stdio.h>void main() int i,num=0; char c100; printf("请输入一个字符串:"); gets(c); for(i=0;ci!='0'i+) if(ci!=' '&&(ci+1=' '|ci+1='0') num+; printf("字符串包含单词数为:%dn",num);