C语言-7数组(1)
c语言数组1

① 输入->x ② s+x->s 2、算平均分ave 3、循环30次
数组
1.能保存所有的数据 2.能用循环结构处理数据
① 输入->x
② 如果x>ave 输出x。
定义 有序数据的集合 特点 所有元素类型相同 要素 数组名 下标
第五章
5.1 5.2 5.3 5.4
数组
一维数组 二维数组 字符型数据 数组常用算法举例
4
5 6
5
4 3
7
8 9
2
1 0
算法: for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; }
例2 产生n个[0,70]之间的随机整数,并 按逆序重放在数组中。(n<50)
#include "stdlib.h" main( ) { int a[50], t, n, i; scanf("%d", &n); randomize(); for(i=0;i<n;i++) { a[i]=random(71); printf("%5d",a[i]); } printf("\n"); for(i=0;i<=n/2-1;i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } for(i=0;i<n;i++) printf("%5d",a[i]); }
21 0
34 0
55 0
.........
f[2]=f[1]+f[0]; f[3]=f[2]+f[1]; f[i]=f[i-1]+f[i-2];
C语言 数组

sAverage[i]=0.0; for(j=0;j<M;j++)
sAverage[i]+=score[j][i]; sAverage[i]=sAverage[i]/M; }
C语言程序设计
二维数组的初始化
第4章 数组
(1)按行对二维数组进行初始化: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
C语言程序设计
一维数组的定义
第4章 数组
➢ 要想使用一维数组,必须对一维数组进行定义。定义时,
需要说明两点: (1)数组中元素的类型; (2)数组中元素的个数。
类型标识符 数组名[整型常量表达式];
int x[10]; char name[20]; float score[20];
//定义一个包含10个整数的数组x //定义一个包含20个字符的数组name //定义一个包含20个浮点数的数组score
int arr[Num]={10,8,56,45,31,49,47,50,89,100}; printf("请输入要查找的数据: "); scanf("%d",&a); for(i=0;i<Num;i++){
if (arr[i]==a){ printf("元素%d在数组中的位置是:%d\n", a, i+1); break;
#define N 20 int a[N]={1,1}; //用一维数组表示Fibonacci数列,并对其赋初值 int i, sum=0; for(i=2;i<N;i++)
6.C语言第四章数组(1)

4.1.4 一维数组程序举例
【例4-2】 从键盘输入10个整数,求出它们的平均值 及比平均值大的数。 #include<stdio.h> void main( ) { int i , x[10]; float sum=0,aver=0.0; for (i=0;i<10;i++) {scanf("%d",&x[i]); sum=sum+x[i]; } aver=sum/10.0;
4.2.4 二维数组程序举例
#include<stdio.h> printf("\n array b:\n"); void main( ) for(i=0;i<3;i++) { int a[3][4], b[3]; printf("%5d",b[i]); int i,j,max; printf("\n"); for(i=0;i<3;i++) } for(j=0;j<4;j++) 运行结果: scanf("%d",&a[i][j]); 25 88 69 72↙ for(i=0;i<3;i++) 33 29 78 96↙ { b[i]=a[i][0]; 9 54 48 90↙ for(j=1;j<4;j++) array b: if(a[i][j]>b[i]) 88 96 90 b[i]=a[i][j]; }
4.2.1 二维数组的定义
例如,可以把x看作是一个一维数组,它有3 个元素:x[0]、x[1]、x[2];而x[0]、x[1]、x[2] 又可以看作是三个一维数组的名字。其中,x[0] 由x[0][0]、x[0][1]、x[0][2]三个元素组成;x[1] 由x[1][0]、x[1][1]、x[1][2]三个元素组成;x[2] 由x[2][0]、x[2][1]、x[2][2]三个元素组成。即: x[0]: x[0][0] x[0][1] x[0][2] x x[1]: x[1][0] x[1][1] x[1][2] x[2]: x[2][0] x[2][1] x[2][2] 注意,二维数组和一维数组一样,数组元素 的下标从0开始,因此x的下标最大的元素是 x[2][2],而不是x[3][3]。
c语言实验7数组实验报告

实验报告课程名称程序设计实验项目名称数组班级与班级代码14级计算机科学与技术1班实验室名称(或课室) SS1-332专业计算机科学与技术任课教师学号:姓名:实验日期:2014年月日广东商学院教务处制一.实验目的1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。
2.熟练掌握字符数组和字符串函数的使用。
3.熟练掌握一位数组以及一位数组元素的存储关系。
4.熟练掌握一位数组和二维数组的使用以及在函数中的传递。
5.通过上机实践掌握与数组有关的算法。
二、实验内容上机题1输入并运行以下程序。
实验内容:用2个数组对第3个数组进行赋值#include<stdio.h>main(){int i,a[5],b[5],c[5];a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for(i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}实验步骤○1int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。
a[0]~a[4]也可以看成是变量标识字符,[]中的数值称为数组下标,下标从0开始。
○2数组赋值方法和一般变量一样。
例如,a[0]=2表示将2赋给a[0]。
运行结果上机题2 输入并运行以下程序。
实验内容:对不指明数组的数组进行赋值并用循环结构进行求和#include<stdio.h>main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6};sum=0;for(i=0;i<=10;i++)sum+=a[i];printf("sum=%d\n",sum);}实验结果实验小结○1对全部元素赋初值时,可以不指定数组长度,C编译系统自动根据初值个数来决定数组长度。
理解C语言(一)数组、函数与指针

理解C语⾔(⼀)数组、函数与指针1 指针⼀般地,计算机内存的每个位置都由⼀个地址标识,在C语⾔中我们⽤指针表⽰内存地址。
指针变量的值实际上就是内存地址,⽽指针变量所指向的内容则是该内存地址存储的内容,这是通过解引⽤指针获得。
声明⼀个指针变量并不会⾃动分配任何内存。
在对指针进⾏间接访问前,指针必须初始化: 要么指向它现有的内存,要么给它分配动态内存。
对未初始化的指针变量执⾏解引⽤操作是⾮法的,⽽且这种错误常常难以检测,其结果往往是⼀个不相关的值被修改,并且这种错误很难调试,因⽽我们需要明确强调: 未初始化的指针是⽆效的,直到该指针赋值后,才可使⽤它。
int *a;*a=12; //只是声明了变量a,但从未对它初始化,因⽽我们没办法预测值12将存储在什么地⽅int *d=0; //这是可以的,0可以视作为零值int b=12;int *c=&b;另外C标准定义了NULL指针,它作为⼀个特殊的指针常量,表⽰不指向任何位置,因⽽对⼀个NULL指针进⾏解引⽤操作同样也是⾮法的。
因⽽在对指针进⾏解引⽤操作的所有情形前,如常规赋值、指针作为函数的参数,⾸先必须检查指针的合法性- ⾮NULL指针。
解引⽤NULL指针操作的后果因编译器⽽异,两个常见的后果分别是返回置0的值及终⽌程序。
总结下来,不论你的机器对解引⽤NULL指针这种⾏为作何反应,对所有的指针变量进⾏显式的初始化是种好做法。
如果知道指针被初始化为什么地址,就该把它初始化为该地址,否则初始化为NULL在所有指针解引⽤操作前都要对其进⾏合法性检查,判断是否为NULL指针,这是⼀种良好安全的编程风格1.1 指针运算基础在指针值上可以进⾏有限的算术运算和关系运算。
合法的运算具体包括以下⼏种: 指针与整数的加减(包括指针的⾃增和⾃减)、同类型指针间的⽐较、同类型的指针相减。
例如⼀个指针加上或减去⼀个整型值,⽐较两指针是否相等或不相等,但是这两种运算只有作⽤于同⼀个数组中才可以预测。
大学课件C语言数组

第6趟排序后成为:12, 26, 37, 4 8, 49, 64, 75, 97
printf("ENTER 10 REAL NUMBERS\n"); for(i=0;i<10;i++) { scanf("%f",&value); x[i]=value; } total=0.0; for(i=0;i<10;i++) total=total+x[i]*x[i];
/*.....PRINTING OF x[i] VALUES AND TOTAL......*/
number[0] number[1] number[2] number[3] number[4]
C语言中,数组元素的序号(下标)从0开始。
对数组的引用超过了所声明的范围,会导致不可预知的结果.
9
数组的作用
数组元素的作用相当于简单变量 数组名代表的是数组在内存中的首地址 同一个数组中的元素在内存中是按顺 序连续存放的
/*.....PRINTING OF x[i] VALUES AND TOTAL......*/
printf("ENTER 10 REAL NUMBERS\n"); for(i=0;i<10;i++) { scanf("%f", &x[i]); total=total+x[i]*x[i]; } printf("\n"); for(i=0;i<10;i++) printf("x[%2d]=%5.2f\n", i, x[i]); printf("\ntotal=%.2f\n", total);
7C语言

7.1.2一维数组元素的引用
1.数组元素的引用方式 数组名[下标] 下标可以是整型常量或整型表达式。 例如: a[0]=a[5]+a[7]-a[2*3]
注意: 只能逐个引用数组元素,不能一次引用整个数组
定义数组时用到的“数组名[常量表达式]” 和引 例 int a[10]; 用数组元素时用到的“数组名[下标]” 是有区别的 printf(“%d”,a); () 。 必须 for(j=0;j<10;j++) 例如∶ int a[10],i; printf(“%d\t”,a[j]); () t=a[i];
1.一维数组的定义格式为: 类型说明符 数组名[常量表达式];
例如: int a[10];
它表示定义了一个整形数组,数 组名为a,此数组有10个元素。
说明:
1.数组名定名规则和变量名相同,遵循标识 符定名规则。
2、数组的类型实际上是数组元素的类型。对于同 一个数组,其所有元素的数据类型都是相同的。 3、在定义数组时,需要指定数组中元素的个数, 括号中的常量表达式用来表示元素的个数,即数组 长度。 4、数组名不能与其它变量名相同。 下面的定义是错误的。 main() { int a; float a[10]; „„}
7.2.4二维数组程序举例
例7.4 将一个二维数组行和列元素互换,存到另一个 二维数组中。 例如:a= 1 2 3 1 4 4 5 6 b= 2 5 #include <stdio.h> void main() 3 6
{int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; for(i=0;i<=1;i++) {for(j=0;j<=2;j++) b[j][i]=a[i][j]; printf(“\n”); } for(i=0;i<3;i++) {for(j=0;j<2;j++) printf(“%d”,b[i][j]); printf(“\n”); } }
C语言 数组 讲解

精选课件ppt
4.1.3 数组应用 1.比较法排序
由键盘输入10个数,按由小到大排序输出 解题方法:
for(j=i+1;j<10;j++)
if(a[i]>a[j])
a[i]^=a[j]^=a[i]^=a[j];
}
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
精选课件ppt
2. 冒泡法排序
是一种交换类排序方法,它是通过相邻数据元 素的交换逐步将线性表变成有序。
1. 首先将a[0]与a[1]、a[1]与a[2]、a[2]与a[3]、……a[n-2] 与a[n-1]相邻两个数进行比较,若为逆序(比如 a[0]>a[1])则两者交换,这样就将将最大的数放在a[n1]中;
/17
精选课件ppt
❖ 若要统计高于平均分的人数,则无法实现。
mark是一个简单变量,存放的是最后一个学生 的成绩。
➢ 用已有知识解决方法:
1.再重复输入成绩,带来两个问题: (1)输入数据的工作量成倍增加; (2)若本次输入的成绩与上次不同,则统计的
结果不正确。
2.使用100个变量mark1,mark2, …… , mark99, mark100。
数组一旦定义,数组的大小就不能再改变。常用的办 法是用符号常量来指定元素个数。
#define size 50
float score[size];