当前位置:文档之家› 数组程序举例

数组程序举例

数组程序举例
数组程序举例

?一个班学生的学习成绩

?一行文字

?一个矩阵

这些数据的特点是:

1.具有相同的数据类型

2.使用过程中需要保留原始数据

C语言为这些数据,提供了一种构造数据类型:数组。所谓数组就是一组具有相同数据类型的数据的有序集

合。

一维数组及其应用

例1:一维数组元素赋值及输出练习.

main()

{

int i,a[10]; /* 定义数组整型数组a,它含有十个元素。*/

for(i=0;i<=9;i++)

a[i]=i; /*通过for循环依次为数组a中的每个元素赋值。*/

for(i=9;i>=0;i--) /*通过for循环依次输出数组a中的每个元

素的值。*/

printf("%3d ",a[i]); /*请注意输出元素的顺序*/

}

运行结果:

9 8 7 6 5 4 3 2 1 0

总结:程序使a[0]到a[9]的值为0~9,然后按逆序输出。

例2:用数组来处理求Fibonacci(菲波那契)数列问题,求出前40个数并以每行4个数输出。

Fibonacci 数列: F1 = 1 n =1

F2 = 1 n =2

Fn = Fn-1 + Fn-2 n ≥ 3

即:1 1 2 3 5 8 13 。。。

#include

main ( )

{ int i;

long f [40] = {1, 1}; /*定义长整型数组f存放40个Fibonacci 数,对第一个和第二个元素先赋初值1 */

for ( i = 2; i < 40; i++) /*

和得到其值*/

f [i] = f [i-2] + f [i-1];

for ( i = 0; i < 40; i++) /* 利用循环依次输出40个数*/

{

if ( i % 4 == 0) printf ("\n"); /* 每输出4个数输出一个换行符*/

printf ("%16ld", f [i] ); /* 要注意长整型数据的输出格式控制符的写法*/

}

}

运行结果:

例3:找一批数中的最大值

main()

{

int i,max,a[10];

printf("input 10 numbers:\n"); //输入提示信息“请输入10个数”

for (i=0;i<10;i++)

scanf("%d",&a[i]); //输入10个数到数组中

max =a[0];

for (i=1;i<10;i++)

if(a[i]>max) max=a[i]; //从数组中找最大的数赋值给max

printf("maxmum=%d\n",max); //输出max的值

}

运行结果:

input 10 numbers:

8 2 9 4 5 6 3 7 1 6

maxmum=9

例4:冒泡法排序(从小到大排序)

思路:将相邻两个数进行比较,将小的调到前头。若n个数比较,要比较n-1趟,用j表示趟数,则第j趟要比较n-j次。

main()

{

int a[11];

int i,j,t;

printf(“input 10 numbers : \n”);

for (i=1;i<11;i++)

scanf(“%d”,&a[i]);

printf(“\n”);

for(j=1;j<=9;j++)

for(i=1;i<=10-j;i++)

if (a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;} Printf(“the sorted numbers :\n”);

for(i=1;i<11;i)

printf(″%d ″,a[i]);

printf(″\n″);

}/*程序结束*/

运行结果:

Input 10 numbers :

1 0 4 8 1

2 65 -76 100 -45 123

The sorted numbers :

-76 -45 0 1 4 8 12 8 12 65 100 123

本程序中,第一个for循环,是表示要循环的趟数,第二个for循环,是表示每一趟里面循环的次数。

例5:有一个已经排好序的数组,今输入一个整数,要求按原来排序

的规律将它插入数组中。

为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。假设排序是从大到小进行的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。

main()

{

int i,j,p,q,s,n,a[11]={320,260,258,154,68,57,45,16,8,2};

for(i=0;i<=10;i++)

printf("%d ",a[i]); /* 先输出原始排好序的数据序列*/ printf("\n Input a number:\n");

scanf("%d",&n); /* 输入一个数插入到序列中*/ if (n

a[10]=n;

else

{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;

}

printf("\n result:\n");

for(i=0;i<=10;i++) /* 输出结果*/

printf("%d ",a[i]);

printf("\n");

}

运行结果:

本程序首先输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以后各元素值顺次后移一个单元。后移应按照从后向前依次进行(从a[9]开始到a[i]为止)。后移结束跳出外循环。插入点为i,把n赋予a[i]即可。如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数据后的数组各元素

值。

二维数组及其应用

程序如下:

#include

void main()

{

int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j;

printf(″array a:\n″);

for (i=0;i<=1;i++)

{

for (j=0;j<=2;j++)

{

printf(″%5d″,a[i][j]);

}

printf(″\n″);

}

printf(″array b:\n″);

for (i=0;i<=2;i++)

{

for(j=0;j<=1;j++)

printf("%5d″,b[i][j]);

printf(″\n″);

}

} /*程序结束*/

例7:有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的

值,以及所在的行号和列号。

程序:

main ( )

{ int i,j, row=0, colum=0, max;

static int a[3][4]={{1,2,3,4},{9,8,7,6}, {–10,10, –5, 2}}

max=a[0][0];

for (i=0;i<=2; i++)

for (j=0; j<=3; j++)

if (a[i][j]>max)

{ max=a[i][j];

row=i;

colum=j;

}

printf( "max=%d,row=%d, colum=%d\n ", max, row, colum); }

输出结果为:

max=10, row=2, colum=1

数组程序设计实验报告

计算机科学与技术学院 程序设计报告 程序名称:数组程序设计 专业:计算机科学与技术 班级:计算机1103班 学号: 姓名: 指导老师: 设计日期:2011年11月26日

数组程序设计 题目: 编写一个程序,其功能如下:输入n(n<50)个学生的姓名和C语言课程的成绩,将成绩按从高到低的次序排序,姓名同时作相应的调整,输出排序后的学生姓名和C语言课程的成绩。然后输入一个C 语言课程成绩值,用二分法查找进行搜索。如果查找到该成绩,输出该成绩同学的姓名和C语言课程的成绩;否则输出提示“not found !”. 程序源代码: #include #include #define n 3 void main() { int i,j,k,t,x,a[n]; int top=0,bottum=n-1,mid; char b[n][10],str[10],c[20]; for(i=0;i

printf("input the name of the %dth student:",i+1); gets(b[i]); printf("input the score of the C language:"); scanf("%d",&a[i]); printf("\n"); gets(c); } for(i=0;i

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

Excel数组公式

Excel数组公式 ●什么是数组公式? 引用了数组(可以是一个或多个数值,或是一组或多组数值),并在编辑栏可以看到以“{}”括起来的公式就是数组公式。而数组公式的作用就是对一组(单个数据可以看成是一组)、多组数据进行处理,然后得到想要的结果。Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 ●输入数组公式: 首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。而双击进入公式的编辑状态时,你会发现“{}”符号是不存在的。 ●选取数组公式: 所占有的全部区域先选中区域中任意一个单元格,然后按下Ctrl+/键即可。 ●编辑或删除数组公式: 编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的全部区域后,按Delete键即可删除数组公式。 ●数组常量的使用: 数组公式中还可使用数组常量,但必须自己键入花括号“{}”将数组常量括起来,并且用“,”和“;”分离元素。其中“,”分离不同列的值,“;”分离不同行的值。 使用不在工作表中的数组: 有时,公式仅占用一个单元格时也需要以数组的方式输入。其具体原则是:一个公式使用了数组,并且这个数组不在工作表上,就应该使用数组的方式输入这个公式。 下面介绍两个使用数组公式的例子。 1.如需分别计算各商品的销售额,可利用数组公式来实现。 单元格F2中的公式为:{=SUM(IF(A2:A11=″商品1″,B2:B11*C2:C11,0))}。这个数组公式创建了一个条件求和,若在A2:A11中出现值“商品1”,则数组公式将B2:B11和C2:C11中与其相对应的值相乘并累加,若是其他值则加零。同时,虽然数组B2:B11和C2:C11均在工作表中,但其相乘的数组B2:B11* C2:C11不在工作表中,因此必须使用数组公式。 2.假设要将A1:A50区域中的所有数值舍入到2位小数位,然后对舍入的数值求和。很自然地就会想到使用公式:=ROUND(A1,2)+ROUND(A2,2)+…+ROUND(A50,2)。 有没有更简捷的算法呢?有。因为数组ROUND(A1:A50,2)并不在工作表中,因此要使用数组的方式输入公式,即:{=SUM(ROUND(A1:A50,2))}。

最新常见的勾股数组公式

常见的公法股数公式20161003整理 <一>、22n m a -=,mn b 2=,22n m c +=,)1(≥n m 证明:略 1)这是我见到的勾股数组公式中最全面的一组,但我不知道它是不是包含了所有的 勾股数组;(估计是包含了) 2)这组勾股数组经过一定的变换便可得到许多变式的勾股数组的公式; 3)此组中有不少是三个数有公约数的; 4)三个数中要么两奇数一偶数,要么三个都是偶数;(至少有一个偶数)

<二>、当第一组中的n=1时,有12-=m a ,m b 2=,12+=m c ,)1( m ,这说明它与第一组是特殊与一般的关系。 1)这组勾股数的b 是连续偶数; 2)b-a=2,即第三个数比第一个数大2; 3)此组中有不少是三个数有公约数的;

4)这组只是第一组中的n=1部分;它不包含第一组中的n=2、3、4、5……; 5) 如果我们对这一组再进行一些变形代换,还可以得到不同的勾股数组; <三>、当第一组中的n=m-1, 有1 2)1(22-=--=m m m a , m m m m b 22)1(22-=-=, 122)1(222+-=-+=m m m m c ,)1( m ,这说明它与第一组是是特殊与一般的 关系。

1)此组中的b 是4的倍数,且为4的1、3、6、……、2 ) 1(+k k 倍(k 是正整数); 2)此组中有b-c=1,即c 比b 大1; 3)此组中的a 是不小于3的连续奇数; <四>、当第一组 中的m=n+1时, 有1 2)1(22+=-+=m n n a , n n n n b 22)1(22+=+=, 122)1(222++=++=n n n n c ,)1(≥n ,这说明它与第一组是是特殊与一般的关 系。

Excel数组公式应用详解

Excel数组公式应用详解 一、什么是数组公式? 直接看微软的解释,也许并不是很容易理解,根据个人的理解,让其更直白一点,可以这样简单理解,引用了数组(可以是一个或多个数值,或是一组或多组数值),并在编辑栏可以看到以“{}”括起来的公式就是数组公式。而数组公式的作用就是对一组(单个数据可以看成是一组)、多组数据进行处理,然后得到想要的结果。 二、如何输入数组公式 既然数组公式是以“{}”括起来的,那是不是在编辑栏在公式的两端分别输入“{}”就可以了呢?答案是否定的,在Excel中要输入数组公式,必须以特定的方法来输入,算是告诉Excel,我们这里输入的是数组公式。 在某个单元格输入数组公式的方法如下: 1.在编辑栏输入完整的公式,并使编辑栏仍处在编辑状态; 2.按下Ctrl+Shift+Enter快捷键 经过以上两步操作以后,编辑栏会自动脱离编辑状态,并且选中单元格后,在编辑栏可以看到公式的两端有“{}”符号标记,而双击进入公式的编辑状态时,你会发现“{}”符号是不存在的。 三、数组公式有什么用? 这里做了一个类似微软官网上的例子,这里详细说明一下用法及好处。 以上面图片中的内容为例,假设我一共买了三支股票,其股份及买入价格分别如图中所示,现在我要计算我的总股本。

正常情况下我应该如何做?在B4输入“=B2*B3”,然后填充至D4单元格,这样B4、C4、D4就分别是每一支股票的股本了,然后在B5单元格再输入“=SUM(B4:D4)”,这样总股本就出来了。 上面的计算过程可以说一点问题没有,也绝对正确。但是试想一下,如果类似的数据有很多,如果不是计算我自己买的几支股票而是其他类似情况的数据处理的时候,采用上面的方法时,其工作量可想而知了。 我们再回到第一幅图中的公式“{=SUM(B2:D2*B3*D3}”,此公式便是一个典型的数组公式的应用,此公式的作用就是计算B2*B3、C2*C3以及D2*D3的和。而 B2:D2*B3*D3便是一个数组,其中包含三个元素,各元素的值就分别是各项的乘积。 为了更好的验证数组说法,分别在B4、C4、D4单元格中分别输入=B2*B3、=C2*C3、=D2*D3,B7、C7、D7单元格中全部输入=B2:D2*B3:D3,结果如下图所示。

实验六 一维数组程序设计

实验六一维数组程序设计 一、实验学时 2学时 二、实验目的 (一)掌握一维数组的定义、初始化方法; (二)掌握一维数组中数据的输入和输出方法; (三)掌握与一维数组有关的程序和算法; (四)了解用数组处理大量数据时的优越性。 三、预习要求 (一)理解数组的概念、利用数组存放数据有何特点; (二)一维数组的定义、初始化方法; (三)一维数组中数据的输入和输出方法。 四、实验内容 (一)下面的几个程序都能为数组元素赋值,请输入程序并运行。比较一下这些赋值方法的异同。 1.在定义数组的同时对数组初始化。 /* c6-1.c */ /*在定义数组的同时对数组初始化*/ #include "stdio.h" void main( ) { int a[4]={0,1,2,3}; printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]); } 2.不使用循环对单个数组元素赋值。 /* c6-2.c */ /*不使用循环对单个数组元素赋值*/ #include "stdio.h" void main( ) { int a[4]; a[0]=2;a[1]=4;a[2]=6;a[3]=8; printf("\n%d %d %d %d\n",a[0],a[1],a[2],a[3]); } 3.用循环结构,从键盘输入为每个数组元素赋值,输出各数组元素。 /* c6-3.c */ /*利用循环通过键盘对数组元素赋值*/ #include "stdio.h" void main( ) { int i,a[4]; for(i=0; i<4; i++) scanf("%d",&a[i]); printf("\n"); for(i=0; i<4; i++) printf("%d ",a[i]);

Excel数组公式实现条件统计

Excel 公式函数学习宝典 Excel数组公式实现条件统计 [文章信息] 作者: 陈秀峰原创 时间: 2004-11-30 出处: 天极网 责任编辑: Shiny [文章导读] 分男、女组统计学生每次考试成绩的最高(低)分、平均分、总分等,这种统计可以用数组公式来实现…… 前两天遇到一位教师朋友,他向我请教一个问题:学校为了研究男生和女生在学习上是否存在差别,在初二年级随机选定了100名学生(男生、女生各50名)作为研究对象,分男、女组统计他们每次考试成绩的最高(低)分、平均分、总分等,成绩表是用Excel制作的(如图1)。其实这种统计可以用数组公式来实现。 1、启动Excel2003(其他版本操作相似),打开成绩表。 2、在表格的下部,依照图2的样式,制作保存统计结果的表格。

Excel 公式函数学习宝典 3、选中D104单元格,输入公式:=MAX(IF($C$3:$C$102=$C104,D$3:D$102)),输入完成后,按下“Ctrl+Shift+Enter”组合键对公式进行确认。 注意:我们这里输入的是一个数组公式,数组公式输入完成后,不能直接按“Enter”键进行确认,必须按“Ctrl+Shift+Enter”组合键进行确认。数组公式被确认后,会在公式两端出现数组公式的标志符号——一对大括号{}(如图3)。 4、再次选中D104单元格,将鼠标移至该单元格右下角成细十字线状(填充柄)时,按住左键向下拖拉至D111单元格中。

Excel 公式函数学习宝典 5、然后将D106与D107、D108与D109、D110与D111单元格中第一个函数名称(MAX)分别修改为“MIN、AVERAGE、SUM”,每个公式修改完成后,均需要按“Ctrl+Shift+Enter”组合键进行确认。 注意:统计最高分也可以用下述数组公式:=MAX(($C$3:$C$102=$C104)*(D$3:D$102))(D104单元格); 统计总分也可以用下述数组公式:=SUM(($C$3:$C$102=$C110)*(D$3:D$102))(D110单元格),或者用非数组公式:=SUMIF($C$3:$C$102,$C111,D$3:D$102)(D111单元格)。 6、同时选中D104至D111单元格,用“填充柄”将上述公式拖拉复制至E104至K111单元 格区域中,所有统计数据即刻呈现在我们面前(参见图2)。

Excel中数组函数的运用(excel函数)

Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。 编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的区域后,按Delete键即可删除数组公式。 下面介绍几个使用数组公式的例子。 1、有如图所示的工作表,需分别计算出两个班的男女生人数。 单元格B22中的公式为:=SUM((A2:A20="一1班")*(D2:D20="男")),再按Ctrl+Shift+Enter键。这个数组公式创建了一个条件求和,若在A2:A20中出现值“一1班”,则返回一个逻辑值“true”,值为“1”,若D2:D20中出现值“男”,也返回一个逻辑值“true”,值为“1”,则数组公式将与其相对

应的值相乘并累加,若是1*1=1,则加1,若是其他就返回1*0=0或是0*1=0,则累加零。(虽然数组A2:A20和D2:D20均在工作表中,但其相乘的数组A2:A20和D2:D20不在工作表中,因此必须使用数组公式)。 求女生一1班的女生人数也是一样,把公式改为:=SUM((A2:A20="一1班")*(D2:D20="女")),当然,要是求一2班或是其它班级的男女生数也是一样的道理,请大家自己领会。 2、在统计考试成绩的时候,有可能要统计出90—100分、80—89分、70—79分等各分数段的人数,并计算出占班级人数的百分比,这时也要利用数组公式更方便。同样以下面的工作表作为例子:要求出分数在70—80分之间的人数。 在B24中输入一个数组公式:=SUM((E2:E20>=70)*(E2:E20<=80)) ,再按Ctrl+Shift+Enter键。这个数组公式也创建一个条件求和,若是E2:E20当中的成绩>=70并且E2:E20当中的成绩<=80,返回1*1=1,sum就累加1,反之1*0=0或是0*1=0,就累加0。如图:

数组运算法则

认识一维数组和二维数组。理清概念很重要,不要混淆数组、数组公式。 第一,一维数组和二维数组的定义 单行或单列的数组,我们称为一维数组。 多行多列(含2行2列)的数组是二维数组。 第二,数组和数组公式的区别 数组,就是元素的集合,按行、列进行排列。 数组公式:就是包含有数组运算的公式。ctrl+shift+enter,三键结束,这个过程就是告诉excel请与数组运算的方式来处理本公式,反馈一个信息,就是在公式的外面添加一对花括号。 第三,一维数组和二维数组的运算规律 1、单值x与数组arry运算 执行x与arry中每一个元素分别运算并返回结果,也就是与arry本身行列、尺寸一样的结果。 比如:2*{1,2;3,4;5,6},执行2*1、2*2、2*3……2*6运算,并返回3行2列的二维数组结果{2,4;6,8;10,12},如下图所示: 数组中行和列分别用逗号、分号来间隔。逗号表示行,行之间的关系比较紧密,用逗号分割;列之间,关系相对比较疏远一点,用分号分割。 又比如:"A"&{"B","C"}返回{"AB","AC"}。"A"={"B","A","C"}返回{FALSE,TRUE,FALSE} 2、同向一维数组运算 执行arry1与arry2对应位置的元素分别运算并返回结果。要求arry1与arry2尺寸必须相同,否则多余部分返回#N/A错误。 比如: {1;2;3}*{4;5;6}返回{4;10;18}; {1,2,3,4}*{4,5,6}返回{4,10,18,#N/A},如下图所示: 3、异向一维数组运算 arry1的每一元素与arry2的每一元素分别运算并返回结果,得到两个数组的行数*列数个元素,也就是M行数组与N列数组运算结果为M*N的矩阵数组。 比如:{1;2;3}*{4,5,6,7,8},执行1*4、1*5、……1*8、2*4、2*5……3*8,返回{4,5,6,7,8;8,10,12,14,16;12,15,18,21,24}

实验4使用数组的程序设计

C语言程序设计实验报告 实验4 使用数组的程序设计 一、实验目的 (1)掌握一维数组和二维数组的定义、赋值和输入输出方法。 (2)掌握字符数组的使用。 (3)掌握与数组有关的算法。 二、实验内容及步骤 1、检验并打印幻方矩阵 在下面的5*5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 程序代码: #include main() { int a[5][5],i,j,sr,sc,st1=0,p=0,st2=0; printf("请输入一个方阵:\n"); for(i=0;i<5;i++) {for(j=0;j<5;j++) scanf("%d",&a[i][j]); } for(i=0;i<5;i++) {st1=st1+a[i][i];//主对角线的和 st2=st2+a[i][4-i];}//次对角线的和 if(st1==st2) p++; for(i=0,sr=0;i<5;i++) {for(j=0,sc=0;j<5;j++) {sr=sr+a[i][j];//行的和 if(sr!=st1)break; sc=sc+a[j][i];//列的和 if(sc!=st1)break;} } if(p==1&&i==5) {printf("这是一个幻方矩阵\n");

for(i=0;i<5;i++) {for(j=0;j<5;j++) printf("%d\t",a[i][j]); printf("\n"); }} else printf("这不是一个幻方矩阵\n"); } 运行结果 2、完成以下程序,并进行调试 某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:1)计算每个学生的总分和平均分; 2)按总分成绩由高到低排出成绩的名次; 3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分; 4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。 【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。 程序代码: #include main() { double score[5][3],sum[5],aver[5]; int i,j,num[5],t; printf("请输入每位同学的学号和各科成绩,用Tab键隔开:\n"); printf("学号\t数学\t英语\t计算机\n"); for(i=0;i<5;i++) { scanf("%d",&num[i]); for(j=0;j<3;j++) scanf("%lf",&score[i][j]);

彻底教会你使用Excel数组公式

彻底教会你使用Excel数组公式 Excel中函数、公式大家都非常熟了,但“数组公式”你是否听过、用过?什么是数组公式呢?根据微软官方给出的解释,数组公式:数组公式对一组或多组值执行多重计算,并返回一个或多个结果。 一、什么是数组公式? 直接看微软的解释,也许并不是很容易理解,根据个人的理解,让其更直白一点,可以这样简单理解,引用了数组(可以是一个或多个数值,或是一组或多组数值),并在编辑栏可以看到以“{}”括起来的公式就是数组公式。而数组公式的作用就是对一组(单个数据可以看成是一组)、多组数据进行处理,然后得到想要的结果。 二、如何输入数组公式 既然数组公式是以“{}”括起来的,那是不是在编辑栏在公式的两端分别输入“{}”就可以了呢?答案是否定的,在Excel中要输入数组公式,必须以特定的方法来输入,算是告诉Excel,我们这里输入的是数组公式。 在某个单元格输入数组公式的方法如下: 1.在编辑栏输入完整的公式,并使编辑栏仍处在编辑状态; 2.按下Ctrl+Shift+Enter快捷键 经过以上两步操作以后,编辑栏会自动脱离编辑状态,并且选中单元格后,在编辑栏可以看到公式的两端有“{}”符号标记,而双击进入公式的编辑状态时,你会发现“{}”符号是不存在的。 三、数组公式有什么用? 这里做了一个类似微软官网上的例子,这里详细说明一下用法及好处。

以上面图片中的内容为例,假设我一共买了三支股票,其股份及买入价格分别如图中所示,现在我要计算我的总股本。 正常情况下我应该如何做?在B4输入“=B2*B3”,然后填充至D4单元格,这样B4、C4、D4就分别是每一支股票的股本了,然后在B5单元格再输入“=SUM(B4:D4)”,这样总股本就出来了。 上面的计算过程可以说一点问题没有,也绝对正确。但是试想一下,如果类似的数据有很多,如果不是计算我自己买的几支股票而是其他类似情况的数据处理的时候,采用上面的方法时,其工作量可想而知了。 我们再回到第一幅图中的公式“{=SUM(B2:D2*B3*D3}”,此公式便是一个典型的数组公式的应用,此公式的作用就是计算B2*B3、C2*C3以及D2*D3的和。而 B2:D2*B3*D3便是一个数组,其中包含三个元素,各元素的值就分别是各项的乘积。 为了更好的验证数组说法,分别在B4、C4、D4单元格中分别输入=B2*B3、=C2*C3、=D2*D3,B7、C7、D7单元格中全部输入=B2:D2*B3:D3,结果如下图所示。

数组程序设计作业-1

上机作业6 1.输入10个学生的一门课成绩,用一维数组存放其成绩,请输出最高分。 #include void main() { int x[10],i,max; for(i=0;i<10;i++) scanf("%d",&x[i]); for(i=1;i<10;i++) { if(x[i]>max) { max=x[i]; } } printf("the max is:%d\n",max); } 2.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,统计平均成绩。 #include void main() { int x[10],i; double j,s=0; for(i=0;i<10;i++) scanf("%d",&x[i]);

for(i=0;i<10;i++) { s=s+x[i]; } j=s/10; printf("平均值是%lf\n",j); } 3.输入10个学生的一门课成绩,用一维数组存放其成绩,统计并输出不及格人数及其百分比。 #include void main() { int x[10],i; double j=0,p; for(i=0;i<10;i++) scanf("%d",&x[i]); for(i=0;i<10;i++) { if(x[i]<60) j++; } printf("不及格人数有%.0lf\n",j); p=j/10*100; printf("不及格人数是总数的:%.0lf%%\n",p); }

4.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,分别统计优、良、中、及格、不及格的人数。 #include void main() { int x[10],i,y=0,l=0,z=0,j=0,b=0; for(i=0;i<10;i++) scanf("%d",&x[i]); for(i=0;i<10;i++) { if(x[i]>=90) { y++; } else if(x[i]<90&&x[i]>=80) { l++; } else if(x[i]<80&&x[i]>=70) { z++; } else if(x[i]<70&&x[i]>=60) { j++; } else { b++; }

EXCEL中数组函数

EXCEL中数组函数 Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。 编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的区域后,按Delete键即可删除数组公式。下面介绍几个使用数组公式的例子。 1、有如图所示的工作表,需分别计算出两个班的男女生人数。 单元格B22中的公式为:=SUM((A2:A20="一1班")*(D2:D20="男")),再按Ctrl+Shift+Enter键。这个数组公式创建了一个条件求和,若在A2:A20中出现值“一1班”,则返回一个逻辑值“true”,值为“1”,若D2:D20中出现值“男”,也返回一个逻辑值“true”,值为“1”,则数组公式将与其相对应的值相乘并累加,若是1*1=1,则加1,若是其他就返回1*0=0或是0*1=0,则累加零。(虽然数组A2:A20和D2:D20均在工作表中,但其相乘的数组A2:A20和D2:D20不在工作表中,因此必须使用数组公式)。 求女生一1班的女生人数也是一样,把公式改为:=SUM((A2:A20="一1班")*(D2:D20="女")),当然,要是求一2班或是其它班级的男女生数也是一样的道理,请大家自己领会。

数组程序设计

1.1 实验学时:4学时 1.2 实验目的 1. 掌握一维数组、二维数组的概念及元素的各种表示方法; 2. 正确掌握数组输入输出等的基本操作; 3. 掌握函数访问数组的方法; 4. 字符串的处理方法; 5. 掌握数组中的一些常用算法,并能解决实际问题。 1.3 必做实验 【题目4-1】运用所学数组知识实现学生成绩的录入、评估、统计、排序及输出,要求如下: (1)从键盘输入6个同学计算机课程期末考试成绩存放在数组中 算法分析: 1、定义一个能够存放6个整型数据的数组 int score[6]; 2、使用循环结构为数组元素赋值 3、编写循环体,注意数据输入格式 (2)统计出平均分、最高分,以及统计超过平均分的人数 算法分析: 1、分析编程所需定义的变量,并未变量赋初值:总分int sum=0,平均分intave=0,最高分int max=0,以及超过平均分人数的变量int count=0 2、使用循环结构访问数组元素: score[0]~score[5] 3、在访问数组元素的过程中,完成总分、最高分的统计,在访问完所有数组数据后,计算平均分 4、再次访问数组,参照计算所得平均成绩统计超过平均分的人数 5、输出结果 (3)对学生成绩进行从高到低的排序(冒泡法),并把排序后的成绩输出。 算法分析: 冒泡法实现n个数据从小到大排序,结合算法对学生成绩进行从高到低的排序 输出排序结果 流程框图: 【实验4-1】代码及运行结果:(1)确定内部循环次数 确定外部循环次数 判定数据是否需要交换

(2) (3)

【题目4-2】定义一个N行N列的二维整型数组,使数组左下三角元素中的值乘以n 。例如:若n的值为3, a数组中的值为 ? ? ? ? ? ? ? 6 5 4 8 3 2 7 9 1 则返回主程序后a数组中的值为 ? ? ? ? ? ? ? 18 15 12 8 9 6 7 9 3 算法分析: 1、定义N行N列的二维数组,并手动为数组元素赋值 注意:注意数组维数不能为变量,但可以用宏定义的方式来进行数组维数的定义,例如:在头文件前进行宏定义#define N 3,程序中定义二维数组 intnum[N][N]; 2、选择二维数组中的左下三角元素,并改变三角元素的值 3、以N行N列的形式输出二维数组,要求每输出N个数据,输出一个回车换行符 延伸扩展: 结合所学函数的知识,把改变左 函数实现。 【实验4-2】代码及运行结果:

一起来认识数组公式(最基础)祥解

一起来认识数组公式(最基础) =======写在前面======= 如果你是用Excel的人,相信你对“公式”这个概念并不陌生。 可是,什么是数组公式? 如果你是初学Excel的人,如果你对数组公式还不知道是什么回事,如果你对数组公式感兴趣,那么你可以试着读一读此贴,也许对你认识什么是数组公式,并去用好它会有一点点帮助。 当然,这些只是一些最基础的知识,只是在你学习数组公式前帮助你练的一个基本功。希望对你有用,也希望大家在读贴的过程中能把自己的学习心得以及遇到的问题放出来,供大家一起学习。 第一部分:了解数组公式 在开始讲数组公式之前,我们先来认识几个必要的概念。 1、数组 什么是数组?仁者见仁,智者见智。 我个人的感觉是:数组是具有某种联系的多个元素的组合。某班级里有50个学生,这里,如果班级是数组,50个学生就是数组里的50个元素。当然,班级里的元素是可变的,可以是20个,可以是30个,也可以是60个。放到Excel里,班级就相当于工作表,而学生就相当于工作表里的单元格数值。所以,Excel 里的数组,我还把它理解是为多个单元格数值的组合。 2、公式 如果你在使用Excel,如果你说你还没听过“公式”这个名词,我只能说:“你太OUT了!” 什么是公式?我的理解是:在Excel里,凡是以半角符号“=”开始的、具有计算功能的单元格内容就是所谓的Excel公式。如:=SUM(B2:D2),=B2+C2+D2这些都是公式。 3、数组公式 数组公式是相对于普通公式而言的。普通公式(如上面的=SUM(B2:D2),=B2+C2+D2等),只占用一个单元格,只返回一个结果。 而数组公式可以占用一个单元格,也可以占用多个单元格。它对一组数或多组数进行多重计算,并返回一个或多个结果。 集合在教室外面的学生,老师把他们叫进教室。老师说:“第一组第一桌的同学进教室。”于是第一组第一桌的同学走进教室。老师接着叫:“第一组第二桌的同学进教室。”然后是第二桌的同学进教室。老师再叫:“第一组第三桌的同学进教室。”然后第三桌的同学走进教室。接着是第四桌,第五桌……,就这样一个学生一个学生的叫,这就是普通公式的做法,学生回到座位,就像数值回到工作表的单元格里,一个座位叫一次,就像一个单元格输入一个公式。 如果老师说:“第一组的全部进教室。”学生听到命令后,第一桌的同学走进去,然后是第二桌,第三桌……,老师不用再下第二个命令,这是数组公式的处理方法。 4、数组公式的标志 在Excel中数组公式的显示是用大括号对“{}”来括住以区分普通Excel公式。 如图: (1)数组公式: (2)普通公式: 输入数组公式:用Ctrl+Shift+Enter结束公式的输入。 特别提醒:这是最关键的,这相当于用户告诉Excel:“我不是一般人,爷我是数组公式,你得对我

Excel数组公式

数组公式(最基础) 如果你是用Excel的人,相信你对“公式”这个概念并不陌生。 可是,什么是数组公式? 如果你是初学Excel的人,如果你对数组公式还不知道是什么回事,如果你对数组公式感兴趣,那么你可以试着读一读此贴,也许对你认识什么是数组公式,并去用好它会有一点点帮助。 当然,这些只是一些最基础的知识,只是在你学习数组公式前帮助你练的一个基本功。希望对你有用,也希望大家在读贴的过程中能把自己的学习心得以及遇到的问题放出来,供大家一起学习。 第一部分:了解数组公式 在开始讲数组公式之前,我们先来认识几个必要的概念。 1、数组 什么是数组?仁者见仁,智者见智。我个人的感觉是:数组是具有某种联系的多个元素的组合。某班级里有50个学生,这里,如果班级是数组,50个学生就是数组里的50个元素。当然,班级里的元素是可变的,可以是20个,可以是30个,也可以是60个。放到Excel里,班级就相当于工作表,而学生就相当于工作表里的单元格数值。所以,Excel里的数组,我还把它理解是为多个单元格数值的组合。 2、公式 如果你在使用Excel,如果你说你还没听过“公式”这个名词,我只能说:“你太OUT了!” 什么是公式?我的理解是:在Excel里,凡是以半角符号“=”开始的、具有计算功能的单元格内容就是所谓的Excel公式。如:=SUM(B2:D2),=B2+C2+D2这些都是公式。 3、数组公式 数组公式是相对于普通公式而言的。普通公式(如上面的=SUM(B2:D2),=B2+C2+D2等),只占用一个单元格,只返回一个结果。而数组公式可以占用一个单元格,也可以占用多个单元格。它对一组数或多组数进行多重计算,并返回一个或多个结果。 集合在教室外面的学生,老师把他们叫进教室。老师说:“第一组第一桌的同学进教室。”于是第一组第一桌的同学走进教室。老师接着叫:“第一组第二桌的同学进教室。”然后是第二桌的同学进教室。老师再叫:“第一组第三桌的同学进教室。”然后第三桌的同学走进教室。接着是第四桌,第五桌……,就这样一个学生一个学生的叫,这就是普通公式的做法,学生回到座位,就像数值回到工作表的单元格里,一个座位叫一次,就像一个单元格输入一个公式。 如果老师说:“第一组的全部进教室。”学生听到命令后,第一桌的同学走进去,然后是第二桌,第三桌……,老师不用再下第二个命令,这是数组公式的处理方法。 4、数组公式的标志 在Excel中数组公式的显示是用大括号对“{}”来括住以区分普通Excel公式。如图: (1)数组公式: (2)普通公式:输入数组公式:用Ctrl+Shift+Enter结束公式的输入。 特别提醒:这是最关键的,这相当于用户告诉Excel:“我不是一般人,爷我是数组公式,你得对我特别关照。”于是,Excel 明白了,不能用常规的逻辑来对待这位大爷。当你按下三键后,Excel会自动给公式加上“{}”以和普通公式区别开来,不用用户输入“{}”,但如是是想在公式里直接表示一个数组,就需要输入“{}”来把数组的元素括起来。如: =IF({1,0},D2:D8,C2:C8)这个公式里的数组{1,0}的括号就是用户自己输入的。 5、数组的维数 “维数”是数组里的又一个重要概念。数组有一维数组,二维数组,三维数组,四维数组……,在公式里,我们更多接触到的只是一维数组和二维数组。一维数组我们可以简单地看成是一行的单元格数据集合,比如A1:F1。一维数组的各个元素间用英文的逗号“,”隔开(如果是单独的一列时,用英文分号“;”隔开)。

数组公式的使用基础(常用)

教你使用Excel数组公式 Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。 选取数组公式所占有的全部区域先选中区域中任意一个单元格,然后按下Ctrl+/ 键即可。 编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的全部区域后,按Delete键即可删除数组公式。 数组常量的使用数组公式中还可使用数组常量,但必须自己键入花括号“{}”将数组常量括起来,并且用“,”和“;”分离元素。其中“,”分离不同列的值,“;”分离不同行的值。 使用不在工作表中的数组有时,公式仅占用一个单元格时也需要以数组的方式输入。其具体原则是:一个公式使用了数组,并且这个数组不在工作表上,就应该使用数组的方式输入这个公式。 下面介绍两个使用数组公式的例子。 1.如需分别计算各商品的销售额,可利用数组公式来实现。 单元格F2中的公式为:{=SUM(IF(A2:A11=″商品1″,B2:B11*C2:C11,0))}。这个数组公式创建了一个条件求和,若在A2:A11中出现值“商品1”,则数组公式将B2:B11和C2:C11中与其相对应的值相乘并累加,若是其他值则加零。同时,虽然数组B2:B11和C2:C11均在工作表中,但其相乘的数组B2:B11*C2:C11不在工作表中,因此必须使用数组公式。 2.假设要将A1:A50区域中的所有数值舍入到2位小数位,然后对舍入的数值求和。很自然地就会想到使用公式:=ROUND(A1,2)+ROUND(A2,2)+…+ROUND(A50,2)。 有没有更简捷的算法呢?有。因为数组ROUND(A1:A50,2)并不在工作表中,因此要使用数组的方式输入公式,即:{=SUM(ROUND(A1:A50,2))}。

Excel常用函数公式大全(实用)

Excel常用函数公式大全 1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,"重复","")。 2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,"2009/8/30",FALSE))/360,0)。 3、从输入的18位身份证号的出生年月计算公式: =CONCATENATE(MID(E2,7,4),"/",MID(E2,11,2),"/",MID(E2,13,2))。 4、从输入的身份证号码内让系统自动提取性别,可以输入以下公式: =IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)=1,"男","女"),IF(MOD(MID(C2,17,1),2)=1,"男","女"))公式内的“C2”代表的是输入身份证号码的单元格。 1、求和:=SUM(K2:K56) ——对K2到K56这一区域进行求和; 2、平均数:=AVERAGE(K2:K56) ——对K2 K56这一区域求平均数; 3、排名:=RANK(K2,K$2:K$56) ——对55名学生的成绩进行排名; 4、等级:=IF(K2>=85,"优",IF(K2>=74,"良",IF(K2>=60,"及格","不及格"))) 5、学期总评:=K2*0.3+M2*0.3+N2*0.4 ——假设K列、M列和N列分别存放着学生的“平时总评”、“期中”、“期末”三项成绩; 6、最高分:=MAX(K2:K56) ——求K2到K56区域(55名学生)的最高分; 7、最低分:=MIN(K2:K56) ——求K2到K56区域(55名学生)的最低分; 8、分数段人数统计: (1)=COUNTIF(K2:K56,"100") ——求K2到K56区域100分的人数;假设把结果存放于K57单元格; (2)=COUNTIF(K2:K56,">=95")-K57 ——求K2到K56区域95~99.5分的人数;假设把结果存放于K58单元格; (3)=COUNTIF(K2:K56,">=90")-SUM(K57:K58) ——求K2到K56区域90~94.5分的人数;假设把结果存放于K59单元格; (4)=COUNTIF(K2:K56,">=85")-SUM(K57:K59) ——求K2到K56区域85~89.5分的人数;假设把结果存放于K60单元格;

相关主题
文本预览
相关文档 最新文档