C语言程序设计No.7-8第七章数组1详解

合集下载

C语言板书7数组

C语言板书7数组

7
4. 可在定义时对 静态数组 和 外部存储(全局)数组 赋初值, 方法如下: 赋初值 方法如下 对全部元素赋初值 int a[10] ={10, 11, 12, 13, 14, 15, 16, 17, 18, 19}; 对部分元素赋初值 int a[10]={0,1,2,3,4}; 如此,只有前 个元素初值确定,后 个元素由系 只有前5个元素初值确定 如此 只有前 个元素初值确定 后5个元素由系 统设置. 统设置.
10
7.1.3 一维数组的应用 数列. 例:求Fibonacci 数列. 定义数组,并赋初值 定义数组 并赋初值 int f [20]={1,1}; 用循环for实现 用循环 实现: 实现 for (i=2; i<20; i++) f [i]=f [i –2]+f [i –1]; 注意:下标越界问题 注意 下标越界问题:i =2且i<20 下标越界问题 且
5
§7.1 一维数组
7.1.1 一维数组的定义 形式: 数组名[ 形式 类型说明符 数组名 常量表达式]; 例: int a [20]; float x [100]; 1. 数组名的确定方法同变量名. 数组名的确定方法同变量名. 2. C语言用方括号 ]表示数组元数个数. 语言用方括号[ 表示数组元数个数. 语言用方括号 表示数组元数个数
29
二维数组一般用二重循环 有一个3× 的矩阵 的矩阵, 例2. 有一个 ×4的矩阵,要求编程序求出其中值 最大的那个元素的值,以及所在的行号和列号. 最大的那个元素的值,以及所在的行号和列号. 先用N- 流程图表示算法 先用 -S流程图表示算法
1
for循环
表达式1只执行一次 表达式3的执行时间在循环体最后,在循 环中每次都要执行. 正常循环结束时,循环变量的值为最后 一次进入循环的值加或减步长. 正常非循环结束时,循环变量的值为最 后跳出循环时的值.

C_C++语言程序设计基础-7-1一维数组

C_C++语言程序设计基础-7-1一维数组
(2)部分元素赋初值,未赋初始值的数组元素初值为0: int a[5]={5,4};
a[0]=5,a[1]=4,a[2]=0, a[3]=0, a[4]=0
(3)对全部元素赋初值时,可以不指定数组长度,系统自 动根据初值个数来决定数组长度。例如:
int a[ ]={0,1,2,3,4};等价 int a[5]={0,1,2,3,4};
今天教大家一个新的数据类型: 一个变量名称可以代表成百上千个 同种类型的数据,即数组。
源程序:从键盘输入3个整数,顺序(反序)输出。
#include<stdio.h> main() { int x1,x2,x3;
scanf("%d%d%d",&x1,&x2,&x3); pprriinnttff((""%%dd %%dd %%dd \\nn"",,xx13,,xx22,,xx31));; }
但不能省略[] int a={0,1,2,3,4}; 是错误的 (4)对数组进行初始化时,不允许初始化的元素个数超过 数组的长度,如: int a[5]={0,1,2,3,4,5}; 是错误的
数组课堂练习2:
14.若有定义语句:int m[5]={5,4,3,2,1},i=4;,则下面对m数组元素
long num[N]; short w[2*N]; 5. inintt ppeerrssoonn((1100));; 错误 6. int n=10, a[n]; 错误 7. float a[10.5]; 错误
7.1.2 一维数组元素的引用
数组必须先定义再引用
int a[5];
数组元素引用形式为: 数组名 [下标];
3/50

大学课件C语言数组

大学课件C语言数组
第3趟排序后成为:37, 48, 12, 26, 49, 64, 75, 97 第4趟排序后成为:37, 12, 26, 48, 49, 64, 75, 97 第5趟排序后成为:12, 26, 37, 4 8, 49, 64, 75, 97
第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);

C语言程序设计(谭浩强版)第7章

C语言程序设计(谭浩强版)第7章

for(j=0;j<9;j++) for(i=0;i<9-j;i++) 程序运行结果如下: if (a[i]> 0 4 8 12 65 -76 100 -45 123↙ t=a[i];a[i]=a[i+1]; the sorted numbers: a[i+1]=t; -76 -45 0 1 4 8 12 65 100 123 } printf(″the sorted numbers :\n″); for(i=0;i<10;i++) printf(″%d ″,a[i]); printf(″\n″); }/*程序结束*/
2.一维数组元素引用的程序实例 程序实例
#include <stdio.h> void main() { int i,a[10]; for (i=0; i<=9;i++) a[i]=i; for(i=9;i>=0; i--) printf("%d ″,a[i]); printf("\n″); }
运行结果如下: 9876543210 程序使a[0]到 a[9]的值为0~9, 然后按逆序输出。
第七章 数组
7.1 一维数组的定义和引用 7.2 二维数组的定义和引用 7.3 字符数组
7.1 一维数组的定义和引用
一个班学生的学习成绩 一行文字 一个矩阵 这些数据的特点是: 1.具有相同的数据类型 2.使用过程中需要保留原始数据 C语言为这些数据,提供了一种构造数据类型:数 组。所谓数组就是一组具有相同数据类型的数据的 有序集合。
2. 可以只给一部分元素赋值。 例如: int a[10]={0,1,2,3,4}; 定义a数组有10个元素,但花括弧内只提供5个初值, 这表示只给前面5个元素赋初值,后5个元素值为0。 3. 如果想使一个数组中全部元素值为0,可以写成: 0 : int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能写成: int a[10]={0*10};

C语言程序设计ppt数组

C语言程序设计ppt数组
存储类型阐明符:extern、static 类型修饰符:const、volatile 数组名:是一种标识符,是一种地址常量,用以表
达数组中打头元素旳地址
2024/10/10
6
8.2.1 一维数组旳申明
例8.1 具有基本数据类型旳一维数组旳申明
#define SIZE 10 int array[5]; double d[5],e[SIZE]; char name[SIZE*5];
13. double even;
21. course_even[i]=course_su
/*分别为全部课程旳总分、平均分 m[i]/5.0;
*/
22. sum+=course_sum[i];
14. int i;
23.
} /* 计算各门课平总分 */
24. even=sum/(3.0*SIZE);
2024/10/10
2024/10/10
17
例8.10
8. int course_sum[3]={0,0,0}; 15. for(i=0;i<5;i++){
9. double course_even[3];
16. course_sum[0]+=math[i];
/组**分/ 别为各门课程总分、平均分数17. course_sum[1]+=physics[i];
用若干个数字序号(下标)来区别各数组元素
例如定义float score[30],可表述30位学生成绩 用数组具有什么好处?
2024/10/10
3
8.1 数组概述
问题
计算全班30位同学某门课程旳平均成绩
处理措施
设置30个float型变量来统计成绩 设置一种有30个float型元素旳数组来统计成绩

c语言程序设计第7章(谭浩强)PPT版本

c语言程序设计第7章(谭浩强)PPT版本

如 int a[5]; static int a[5]={6,2,3}; int a[]={1,2,3,4,5,6}; 等价于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; 如 编译系统根据初值个数确定数组维数 int a[3]={6,2,3,5,1}; ()

38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字 n=8
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
程序举例
#include <stdio.h> #define SIZE 10 例 读10个整数存入数组,找出其中最大值和最小值 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) 步骤: { printf("%d:",i+1); 1. 输入:for循环输入10个整数 scanf("%d",&x[i]); 2. 处理: } (a) 先令max=min=x[0] max=min=x[0]; (b) 依次用x[i]和max,min比较(循环) for(i=1;i<SIZE;i++) 若max<x[i],令max=x[i]{ if(max<x[i]) max=x[i]; 若min>x[i],令min=x[i] if(min>x[i]) min=x[i]; 3. 输出:max和min } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }

c语言设计课件7_1

c语言设计课件7_1

例如:以下定义错误 int n; scanf("%d",&n); int a[n]; 数组的长度,必须是 常量或常量表达式
数组的下标从0开始,例如在a[10]中有10个元素, 分别为: a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9] 没有a[10]。 a[10]
数组是同类型变量的集合,共用一个名字,用下 标区分 每个变量称作数组元素 按下标递增顺序在内存中存放 一维数组与数学中的数列对应,二维数组与矩 阵对应
7.1 一维数组的定义和引用
一维数组的定义: 类型 数组名[常量]; 例如: int s[100];
数组名符合标识符的规定 数组名后是用方括号 而不是圆括号
除了数组初始化外,不允许用在花括号中列表 的方式对数组整体赋值。
int a[5] ; a[5]={ 2 , 4 , 6 , 8 , 10 } ;
一维数组程序举例
用数组来处理求Fibonacci数列问题。
f(0)=f(1)=1, f(n)=f(n-2)+f(n-1)
程序为:main( ) : { int i; int f[20]= { 1, 1 }; for( i=2; i<20 ;i++) f[i]= f[i-2]+f[i-1]; for( i=0; i<20; i++) { if( i%5= = 0) printf(“\n”); printf(“%12d” , f[i] ); } } 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
一维数组的引用
数组名[下标] 下标可以是整型常量或整型表达式 如:a[3]= a[0] + a[i+1]; 例:main(){ main(){ int i,a[10]; for(i=0;i<10;i++) a[i]=i; for(i=9;i>=0;i--) printf(“%d “,a[i]); }

C语言程序设计_课件_第七章(适于清华谭浩强版)

C语言程序设计_课件_第七章(适于清华谭浩强版)

注意:
(1) return(表达式); 和return 表达式;都 是正确的。 (2) 带返回值的函数只能返回一个值。 (3) 在函数定义时,允许使用多个return语句, 但是应尽量在末尾使用一个return语句。 (4) return语句中的表达式与函数的返回值类 型不匹配时,以函数定义时的返回类型为准。

问题的提出 函数基础 函数的定义 函数说明 函数调用 参数传递 程序举例 递归调用 变量的存储类别
7.1 问题的提出
例6.20它可以解决的问题有: ①输入若干个学生的姓名、某课程的期中 和期末成绩,并计算每个学生的总评成绩; ②计算总评成绩的分数段情况; ③输出所有学生的姓名、期中、期末和总 评成绩; ④查询某个学生的总评成绩。
函数调用时需要传递数据。调用函数要将 实参的值传送给被调用函数的形参。 若函数定义首部是 double power(double x,int n) /*函数定义 */ 调 用 形 式 是 可 以 是 power(y,m) , 也 可 以 是 power(3.0,5)。 其中,x和n是形式参数,y和m是实际参数,3.0 和可以是一个变量 名,因为变量名也构成一个表达式,形式参数只 能是变量名。当实际参数是变量名时,它与形参 的名称既可以相同,也可以不同,只是要注意, 在函数定义内部应该使用形参的名称。 (2) 实际参数与形式参数的参数个数、数据类型 和顺序都应该一致,如果数据类型不一致,系统 将按照自动转换规则进行转换。
7.3 函数的定义
7.3.1 函数的定义形式 在C语言中函数定义的形式有两种。
第一种:
函数返回值的数据类型说明 函数名称(带有类型说明的参数表)
{
函数内部数据说明; 语句;
}
第二种:

c语言.实验7 数组(1)

c语言.实验7 数组(1)

实验7 数组(1)截止时间:5.8 23:59填空题1.程序的功能是:从键盘输入一个十进制正整数n,将n转换成二进制数并输出,填空以实现功能要求。

例如:若输入十进制数8,则输出其对应的二进制数1000;若输入十进制数25,则输出其对应的二进制数11001。

输入、输出示例:#include <stdio.h>int main(){int n,i=0,a[30];scanf("%d",&n);while(n!=0 ){a[i]=; //1n=n/2;; //2}for(i=;i>=0;i--) //3printf("%d",a[i]);return 0}2. 以下程序的功能是:从键盘任意输入一个整数x ,在数组a 中顺序查找,如果找到,则给出该数所在的下标值,如果没找到,则输出no 。

例如:若输入5,则输出其对应数组元素的下标4,若输入25,则输出no 。

输入输出示例:#include <stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},i,x; scanf("%d",&x);; //1while(&& i<10 ) //2 i++;if() //3printf("pos:%d",i);elseprintf("no!");return 0; }编程题在下面编程题1.【问题描述】输入10个整数,求大于平均值的偶数和奇数各有多少个?【输入形式】输入10个整数【输出形式】输出大于平均值的偶数和奇数的个数。

【样例输入】2.【问题描述】教材P176:第7章课后习题题三(1)-选择法排序(输出数据之间用一个空格间隔)。

【输入形式】输入数据的个数【输出形式】【样例输入】【样例输出】。

C语言程序设计教程 第七章 课后习题参考答案

C语言程序设计教程 第七章 课后习题参考答案
printf("原数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
bubble_sort(a,N);
printf("\n");
}
void bubble_sort(int a[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
}
P1985对称矩阵
#include<stdio.h>
void print(int a[][3],int rows,int cols);
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;i++)
m++;

C语言第七章

C语言第七章

4、strcpy(字符数组1,字符数组2):
例:main()
把“字符串2”的值拷贝到“字符串1”中。
{char str1[10]; char str2[ ]="Chinese"; strcpy(str1,str2); puts(str1); } 输出: Chinese 说明: (1)字符数组1的长度不应小于字符串2的长度。 (2)“字符数组1”必须写成数组名形式,“串2”可以是字符数 组名,也可以是一个字符串常量。如:strcpy(str1,“China”); (3)拷贝是‘\0‟一起拷贝。 (4)不能用赋值语句将一个字符常量或字符数组直接赋给一个 字符数组。 (5)可以用strcpy函数将字符串2中前面若干个字符拷贝到字符 数组1中去。 例如:strcpy(str1,str2,2);
3、部分元素赋值: int a[3][4] = {{1},{5},{9}}; 1 0 0 0 5 0 0 0 9 0 0 0
仅对a[0][0]、a[1][0]、a[2][0]赋值,编译器自动为未赋
值元素指定初值0。
4、如果对全部元素赋初值,则第一维的长度可以 不指定,但必须指定第二维的长度。 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 与下面定义等价: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
[例6.6]: main() { int i; char c1[ ] = {"How are you?"}; char c2[15]; scanf("%s", c2 ); for(i=0;i<12;i++) printf("%c", c2[i] ); printf("%s", c1 ); } 程序运行时:输入:abcdefghijklmno 结果:abcdefghijklHow are you?

C语言程序设计第七章 利用数组处理数据

C语言程序设计第七章 利用数组处理数据
整理课件
一维数组的存储: 计算机中用连续的内存单元存放各个元素。 如:int a[5];其内存存储为:
保存数组所需内存量与数组元素的基本类型和数组大小有关。 总字节数=sizeof(基本类型)*数组元素个数 如上例:= sizeof(int)*5 第i个元素的地址=第1个元素的地址+i*sizeof(基本类型)
类型说明符 数组名[常量表达式]={值,值……值}; 其中在{ }中的各数据值即为各元素的初值,各值之间用逗号 间隔。 例如:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1...a[9]=9;
整理课件
C语言对数组的初始化赋值还有以下几点规定:
有 5个元素。但是其下标从0开始计算。因此5个元素分别为
a[0],a[1],a[2],a[3],a[4]。
不能在方括号中用变量来表示元素的个数, 但是可以是符
号常数或常量表达式。
例如:
#define FD 5
main( )
{ int a[3+2],b[7+FD];
……
}是合法的。
但是下述说明方式是错误的。
for (i=0; i<=9;i++) a[i]=i;
for(i=9;i>=0; i--) printf("%d ",a[i]);
printf("\n"); return 0; }
使a[0]~a[9]的值为0~9 先输出a[9],最后输出a[0]
整理课件
一维数组的初始化
数组初始化赋值是指在数组定义时给数组元素赋予初值。 初始化赋值的一般形式为:
for(i=0;i<1;i++) if (a[i]>a[i+1]) { ……}

C语言程序设计(第三版)谭浩强习题与答案 第七章

C语言程序设计(第三版)谭浩强习题与答案   第七章
printf("\n");}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051


main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}

main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;

中国矿业大学(北京)《C语言程序设计》课件第7章指针与数组

中国矿业大学(北京)《C语言程序设计》课件第7章指针与数组

a[1] a[2] a[3]
mmaainn(()) {{iinntt aa[[1100] ],,ii;;
ppuuttss((““pplleeaassee iinnppuutt %%dd ssccoorree::””,,N1)0;);
ffoorr ((ii==00;;i<i1<01;0i;++i+) +) ssccaannff(“(%"%d”d,"a?,+i&a[)i;]);
main()
{
int i = 0;
printf("%c%s\n",*a, b + 1);
while (putchar (*(a + i)))
{ i++;
Program
}
printf("i = %d\n",i);
PROGRAM
while ( -- i)
{ putchar (*(b + i));
i=7
} printf("\n%s\n", &b[3]);
1,2,3,3,2,3,4,4
20
读程序-3
#include <stdio.h>
char b[] = "program";
char *a = “PROGRAM”;
/*定义一个指针变量指向字符串,与上边定义的区别是:前者是先申请内存空间, 后存入字符串,而后者是先将字符串存入在内存的某个地方,然后再用a指向 该字符串所在内存的开始位置。另外。b是常量,a是变量*/
–指针变量指向哪儿?
–所指向的变量里存储的数据是多少?

《C语言程序设计基础与实训教程》第7章:数组

《C语言程序设计基础与实训教程》第7章:数组

/webnew/
7.1.4 一维数组的应用举例
例7.4 编写程序,定义一个含有20个元素的数组,并完成以下操作。 (1)调用C库函数中的随机函数给所有的元素赋以10~50之间的随机数; (2)输出数组元素中的值; (3)按顺序对每隔四个数求一个和数,保存和数并输出。 分析:调用随机函数的方法如下:在程序开头包含头文件stdio.h,通 过函数random(x)得到一个0到x之间的随机整数,因此,可以通过10+ random(40)产生一个10~50之间的随机数。 题目要求按顺序对每隔四个数求一个和数,20个元素将得到5个和数。 20 5 和数要求保存并输出,所以,必须再定义一个一维数组用于和数的保存。 程序 运行结果如图:
/webnew/
7.1.1 一维数组的定义
1、一维数组的定义格式 C语言中,定义一维数组的一般形式为: 类型说明 数组名 [常量表达式]; 其中,类型说明中的类型是指数组元素的数据类型,它们可以是基本类型, 如int 、float等,也可以是构造类型。数组名 [常量表达式]为数组说明符,数 组名是数组的标识符,其命名遵循标识符的命名规则。常量表达式表示该数 组中元素的个数,即数组容量或数组长度,可以是整型常量、字符常量以及 有确定值的常量表达式,其值必须是正整数。 例如:int a[10]; /*定义一个名为a的一维数组,数组中有10个数组元素*/ float b[‘A’],c[3*5]; int a1[MAX],b1,c1; /*MAX为一符号常量*/
/webnew/
7.1.3 一维数组元素的引用
2.一维数组的输入与输出 一维数组的输入与输出 如何给数组元素赋值以及如何将数组元素的值输出是数 组最基本的操作。下面将讨论一维数组元素的输入与输出。 例7.1 定义一个五个元素的字符型数组,通过键盘给每 个元素赋值,并以相反的顺序的输出。 程序1 程序2 从上面的例子可以看出,一个数组中往往往包含较多的 数组元素,相同的赋值或输出操作将被重复多次进行,所以, 一维数组元素的输入与输出一般通过一重循环来实现。

c语言第七章PPT课件

c语言第七章PPT课件

{ float z;
z=x+y;
return (z);
共 71 页 第 21 页
}
第21页/共70页
3. 函数声明和函数定义的区别
函数声明的作用是把函数的名字、函数类型以 及形参的类型、个数和顺序通知编译系统,以便在调 用该函数时系统按此进行对照检查。
函数定义是指对函数功能的确立,包括指定函 数名、函数值类型、形参及其类型、函数体等,它是 一个完整的、独立的函数单位。
[例7-2]
}
形参变量的说明
(现代形式) int max ( x, y)
int max (int x,int y) { int z; z=x>y?x : y; return z; }
int x,y; { int z;
形参变量的说明 (传统形式)
z=x>y?x : y;
return z;
}
共 71 页 第 7 页
用户定义函数: 形式
无参函数 有参函数 空函数
共 71 页 第 2 页
第2页/共70页
函数示例
[7-1] 输入三个整数,计算它们的和并输出运算结果。
main( )
{ int a, b, c, sum ;
scanf("%d,%d,%d",&a,&b,&c);
sum=add(a,b,c); printf(" sum= %d\n",sum); }
}
形参:通知系统 要预留内存位置.
把函数的 结果赋给函数名
实参:在运行时把 值传给函数.
共 71 页 第 14 页
第14页/共70页
数据在函数间的传递
main()
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
§7.1 一维数组的定义和引用
四、一维数组的初始化 1、在定义数组时对数组元素赋初值(初始化方式) 初始化后, 如:int a[4]={1,2,3,4}; a[0]=1, a[1]=2, 2、可以只给一部分元素赋值 a[2]=3, a[3]=4 初始化后, 如:int b[10]={1,2}; b[0]=1, b[1]=2, 3、如果想使一个数组中全部元素值为 0…, ,可以 编译系统根据初值 b[2]=0, b[9]=0 程 int a[4]={0*4},错 个数确定数组维数 写成 int c[4]={0,0,0,0}; 如: 因为数组不能整体 序 4、在对全部数组元素赋初值时,可以不指定数 int a[10]={1,2,3,4} 赋初值 设 注意 组长度。 如:int d[]={1,2,3,4,5};
5
C
§7.0 引言
三、数组概念 计算机处理数据时,经常出现数据时用某种有 序的形式进行组织的情况。 如:以学号为序的成绩单 线性方程组的m×n系数矩阵 a11 a12 a13 … a1n a21 a22 a23 … a2n 这些数据具有共同的特征: … … … … … am1 am2 am3 … amn ☆都是由若干个分量组成 ☆数据的诸分量都是统一类型(可取任何数据类型) ☆这些分量是按一定顺序排列的
16
程 序 设 计
C
§7.2 二维数组的定义和引用
二、二维数组的存储 二维数组从概念上可理解为行-列矩阵但存储 器是一维的,需按照一定的规则转换,在内存中:
二维数组中元素排列顺序是—按行存放 2000
a[0][0] a[0][1]
a[0][2] a[1][0] a[1][1] a[1][2]
17
程 序 设 计
18
程 序 设 计
C
§7.2 二维数组的定义和引用
四、二维数组的初始化(按行存放) 1、按存放顺序赋值
如:int x[2][3]={1,2,3,4,5,6}; 结果为:x[0][0]=1,x[0][1]=2,x[0][2]=3 x[1][0]=4,x[1][1]=5,x[1][2]=6
程 序 设 计
8
C
§7.1 一维数组的定义和引用
二、一维数组的存储 C编译程序是怎样管理一个数组呢? 提示:
用连续的内存单元存放各个元素 int占2字节
如:int a[5]; 其内存存储为: 总字节数
1000 1002 1004 1006 1008 a[1] a[2] a[3]
=sizeof(int)*元素个数 =2*5=10
13 27 38
38 30 27
27
30 38
27
30
49 13 27
27 49 30
38 30 49
49 30
65
程 序 设 计
C
第 一 趟
第 二 趟
第 三 趟
第 四 趟
第 五 趟
第 六 趟
第 七 趟
14
§7.2 二维数组的定义和引用
在C语言中,数组的元素还可以是数组,这样就 构成二维数组,所以二维数组可以看成是“数组的 数组”.依次类推,还可以构成三维、四维数组(或 称多维数组)等.二维数组是多位数组中最简单 ,最 注意 常用的数组,它代表多维数组的基本特征。 不能定义成: int a[3,4]或int b(4,M) 一、二维数组的定义 类型名 数组名 [常量表达式1][常量表达式2] 表示行是符号常量) 表示层 如: int a[3][4],b[4][M];(M 在此基础上,可掌握多维数组的定义 . 表示行 表示列 a为3×4列(3行 概念上可理解二维数组 4列)的整型数组 a[3][4] 表示列 如:float a[2][3][4] b为4×3 是一个 M行 列4 (3 列的矩阵 行4列)的整型数组
如:float a[2][3] 即:数组元素的实际存放顺序是 右边下标比左边下标变化得快!
2004
2008 2012 2016 2020
C
§7.2 二维数组的定义和引用
三、二维数组的引用 二维数组元素的引用形式为: 数组名[下标][下标] 如:int a[2][4],b[5][3] 下标可以是整型表达式 a[2-1][2*2-1] b[1][2]=a[1][3]/2 注意下标的最大取值,即:要注意数组定义和数 组元素引用的区别 如:int a[3][4];则下标下限值是a[0][0] 下标上限值是a[2][3]
整型、字符型、实型
程 序 设 计
C
3
§7.0 引言
二、构造类型的基本概念
在C语言中,变量类型除了前面已经介绍的几种基本类型 外,还有另外一些复杂类型,叫做构造类型。
构造类型:是由基本类型数据按照一定规则构造而成。
(如:数组、结构体、共同体、枚举型)
程 序 设 计
C
说明:
(1) 构造类型的每个分量是一个变量,它可以是一个简单 类型或构造类型。 (2) 构造类型的分量的使用方法与简单变量相同。 (3) 构造类型的分量占用相邻的存储空间。 (4) 对构造类型的分量来说,重点是访问其分量的方法。
C
2、按行赋值
如:int x[2][3]={{1,2,3},{4,5,6}}; 结果同上。
19
§7.2 二维数组的定义和引用
四、二维数组的初始化(按行存放) 3、部分赋值 以存放顺序赋值
如:int x[2][3]={1,2,4}; 结果为:x[0][0]=1,x[0][1]=2,x[0][2]=4 x[1][0]=0,x[1][1]=0,x[1][2]=0 如:int x[2][3]={{1,2},{4}}; 结果为:x[0][0]=1,x[0][1]=2,x[0][2]=0 x[1][0]=4,x[1][1]=0,x[1][2]=0 如:int x[2][3]={{6,2},{5,0,6}}; 结果为:x[0][0]=6,x[0][1]=2,x[0][2]=0 x[1][0]=5,x[1][1]=0,x[1][2]=6
合法标识符 表示元素个数, 下标从0开始
程 序 设 计
[ ]:数组运算符 单目运算符 如:int a[10], b[5]; M是符号常量 优先级(1) char c[8]; 左结合 如: ( ) 说明 float x[20],y[4*M+1],w[5]; 不能用 int a (10); float x[n]; (1)数组名命名规则和简单变量名相同; (2)定义数组时,需要指定数组中元素的个数,[ ]中常量表达 式的值确定数组元素个数(数组尺寸); (3)例 数组名后只能用 [ ]来表示常量表达式 ; int i=15; 见程序 :7-000 int data[i]; (不能用变量定义数组维数 ) (4)常量表达式中可以包含常量和符号常量 ,不能包含变量 ;
计 被定义数组长度与提供初值的个数不同 自动定义数组长度为5 相当于 ,int a[5]={1,2,3,4,5}; 则数组长度不能省!
C
11
§7.1 一维数组的定义和引用
例:用数组来处理求Fibonacci数列的前20项。
#include<stdio.h> 为前两个 2 1) (n 2) void F main( 数组赋值 F F F (n 3) {int i;n n 1 n 2 int f[20]={1,1}; for (i=2; i<20; i++) f [i]=f [i-2]+f [i-1]; for (i=0;i<20;i++) { if (i%5= =0) printf(“\n”); printf(“%12d”,f [i]); } } 请大家与用循环实 现程序进行比较!
4
§7.0 引言
如: int a[10];
整型数组
float b[3][4];
单精度二维数组3行4列
程 序 设 计
如:struct student 结构体 { int num; char name[20]; char sex; int age; 结构体变量 float score; char addr[30]; } student1, student2;
F1 1 (n 1)
0 1 2 3 4 5 1 1 2 3 5 8 ……... f[0] f[1] f[2] f[3] f[4] f[5]
程 序 设 计
C
19
f[19]
f[19]
12
§7.1 一维数组的定义和引用
例 用冒泡法对10个数排序
基本思想:将相邻两个数字比较,小的调整到前面。 排序过程: (1)比较第一个数与第二个数,若为逆序a[0]>a[1], 则交换;然 后比较第二个数与第三个数;依次类推, 直至第n-1个数和第n个数比较为止——第一趟冒泡排 序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大 的数被安置在第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序 结束
以行赋值
程 序 设 计
C
20
§7.2 二维数组的定义和引用
四、二维数组的初始化(按行存放) 4、省略第一维长度
如: int x[ ][3]={1,2,3,4,5,6,7}; 结果为: x[0][0]=1,x[0][1]=2,x[0][2]=3 x[1][0]=4,x[1][1]=5,x[1][2]=6 x[2][0]=7,x[2][1]=0,x[2][2]=0 注意:不能省略第二维的长度!
程 序 设 计
C
0 1 2 3 4 相当于数组 下标是 } 数组元素的下标常 例 int a[10]; 的赋值过程 可以是整型常量 用循环变量来控制 (即输入数组 printf(“%d”,a); () ) 程序的功能? 下标从 0开始 或整型表达式 必须 for(j=0;j<10;j++) 最大下标是数组元素个数减1 0~9 printf(“%d\t”,a[j]); 功能:逆序输出 () 9876543210 这十个数字。 如:a[0]=a[5]+a[7]-a[2*3]
相关文档
最新文档