您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 东华大学通信与电子工程系
东华大学通信与电子工程系第七章数组一维数组二维数组及多维数组字符数组和字符串数组概念东华大学通信与电子工程系东华大学通信与电子工程系东华大学通信与电子工程系输入5个按学号排列的学生某门课的成绩表,要求按与输入次序相反的顺序输出#includestdio.hvoidmain(){floats1,s2,s3,s4,s5;printf(“enterfivescores:);scanf(%f,%f,%f,%f,%f,&s1,&s2,&s3,&s4,&s5);printf(\nThescoreinreverseorderare:);printf(%f\n,s5);printf(%f\n,s4);printf(%f\n,s3);printf(%f\n,s2);printf(%f\n,s1);}这些数据具有共同的特点:1.由若干分量构成;2.数据的各个分量都是同一类型;3.这些分量是按一定顺序排列的。东华大学通信与电子工程系数组概念•构造数据类型之一•数组:按序排列的具有相同类型的变量的集合。用数组名标识这一组数。•元素:属同一数据类型,用数组名和下标确定数组中的元素。数组元素的作用相当于简单变量东华大学通信与电子工程系一维数组的定义定义方式:数据类型数组名[常量表达式];合法标识符代表数组元素的个数,即数组长度下标从0开始7.1一维数组例:inta[5];表示有5个元素,元素的下标从0开始.数组a的元素分别为:a[0],a[1],a[2],a[3],a[4]例inti=15;intdata[i];(不能用变量定义数组长度)例#defineM20floaty[4*M+1];(合法,M是符号常量)东华大学通信与电子工程系一维数组的存储C编译程序用连续的内存单元存放各个元素例inta[6];a[0]0145a[1]a[2]a[3]a[4]a[5]23a编译时分配连续内存内存总字节数=数组长度*sizeof(元素数据类型)如:总字节数=6*2=12数组名代表的是数组在内存中的首地址,是地址常量东华大学通信与电子工程系数组必须先定义,后使用数组元素表示形式:数组名[下标]其中:下标可以是常量或整型表达式例inta[10];printf(“%d”,a);()必须for(j=0;j10;j++)printf(“%d\t”,a[j]);()例intt,data[5];t=data[2];//引用data数组中序号为2的元素。一维数组的引用注意:只能逐个引用数组元素,不能一次引用整个数组东华大学通信与电子工程系用数组实现#includestdio.hvoidmain(){inti;floats[100];printf(Enterthescores:);for(i=0;i100;i++)//数组元素的输入scanf(%f,&s[i]);printf(\nThescoresinreverseorderare:);for(i=99;i=0;i--)//数组元素的输出printf(%f\n,s[i]);}东华大学通信与电子工程系初始化方式在定义数组时,为数组元素赋初值(在编译阶段使之得到初值)inta[5]={1,2,3,4,5};等价于:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;说明:数组不初始化,其元素值为随机数数组不进行初始化时,编译器不为其自动指定初始值。其初始值为系统分配给数组各元素的内存单元原来的值,这个值是不可预知的。一维数组的初始化东华大学通信与电子工程系数组元素赋初值对全部元素赋初值。如:inta[10]={10,11,12,13,14,15,16,17,18,19}表示数组元素的值为:a[0]=10;a[1]=11;a[9]=19;在对全部数组元素赋初值时,可不指定数组长度如:inta[]={1,2,3,4,5,6};//编译系统根据初值个数确定数组长度东华大学通信与电子工程系对部分元素赋初值(前面的连续元素)。如:在此,只有前5个元素初值确定,后面5个元素的值为0。intb[10]={0,1,2,3,4};表示数组元素的值为:b[0]=0;b[1]=1;b[2]=2;b[3]=3;b[4]=4;东华大学通信与电子工程系#includestdio.hvoidmain(){inti,b[10]={0,1,2,3,4};for(i=0;i10;i++)printf(%d\n,b[i]);}东华大学通信与电子工程系注意:不能只对不连续部分元素或后面的连续元素赋初值。语句:inta[10]={,,,,,1,2,3,4,5};是错误的inta[10]={1,,3,,5,,7,,9,,};是错误的。错误:初始值的个数大于元素的个数如:intb[3]={3,6,2,7,3,1,9};是错误的东华大学通信与电子工程系给一个不多于9位的正整数,要求:1)求出它是几位数;2)分别输出每一位数字;3)按逆序输出各位数字#includestdio.hvoidmain(){longintnumber,num;inti,j,d[9];printf(请输入一个位数=9的正整数:);scanf(%ld,&number);i=0;num=number;//保存输入的整数的原值do{d[i]=num%10;i++;num=num/10;}while(num);//d[0],d[1],...,分别存储该整数的第1,2,...,位数字东华大学通信与电子工程系if(i9)//i的当前值为该数的位数printf(输入的整数已超出范围!\n);else{printf(%ld的位数为:%d\n,number,i);printf(它的每位数字分别为:);for(j=i-1;j=0;j--)//分别输出该数的各位数字printf(%3d,d[j]);printf(\n);printf(将该数逆序输出为:);for(j=0;ji;j++)printf(%d,d[j]);printf(\n);}}东华大学通信与电子工程系排序过程:(1)比较第一个数与第二个数,若为逆序a[0]a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束例用冒泡法对8个数排序东华大学通信与电子工程系例3849657613273097第一趟38496513273076第二趟384913273065第三趟3813273049第四趟13273038第五趟132730第六趟4938659776132730初始关键字n=8384976971397972730971376767627301365276530651313494930492738273830381327第七趟例用冒泡法对8个数排序(图解)东华大学通信与电子工程系#defineN8#includestdio.hvoidmain(){inti,j,t,a[N];printf(“Input8numberstobesorted:\n);for(i=0;iN;i++)scanf(%d,&a[i]);for(j=0;jN-1;j++)//外循环j控制比较的趟数N-1for(i=0;iN-1-j;i++)//内循环i控制一趟比较的次数N-1-jif(a[i]a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(\nthesortednumbers:\n);for(i=0;iN;i++)printf(%5d,a[i]);printf(\n);}东华大学通信与电子工程系二维数组的定义定义方式:数据类型数组名[常量表达式][常量表达式];例inta[3][4];floatb[2][5];intc[2][3][4];inta[3,4];()行数列数元素个数=行数*列数7.2二维数组及多维数组东华大学通信与电子工程系例inta[3][4];20161720181920202120222320089201011201213201415200012002320045200067a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]每个元素a[i]由包含4个元素的一维数组组成二维数组a是由3个元素a[0],a[1],a[2],组成a[0]a[1]a[2]行名014523a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[0][0]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]a[1][2]67101189a[0]a[1]a[2]二维数组理解——一维数组的元素又是一个一维数组
本文标题:东华大学通信与电子工程系
链接地址:https://www.777doc.com/doc-3228410 .html