第7章 数组

合集下载

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组

C语言程序设计(第3版)何钦铭 颜 晖 第7章  数组

第7章数组【练习7-1】将例7—3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。

当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。

【练习7—2】将数组中的数逆序存放.输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始.试编写相应程序。

解答:#include<stdio。

h〉int main(void){int i,n,temp;int a[10];printf("Input n:");scanf(”%d",&n);printf(”Input %d integer:",n);for(i=0;i<n;i++)scanf(”%d”,&a[i]);printf(”After reversed:");for(i=0;i〈n/2;i++){temp=a[i];a[i]=a[n—1—i];a[n-1—i]=temp;}for(i=0;i〈n;i++)printf("%d ”,a[i]);return 0;}【练习7-3】求最大值及其下标.输入一个正整数n(1〈n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素.试编写相应程序.解答:#include〈stdio.h>int main(void){int i,index,n;int a[10];printf("Enter n:”);scanf(”%d",&n);printf(”Enter %d integrs:”,n);for(i=0;i〈n;i++)scanf("%d",&a[i]);for(i=n—1;i〉=0;i++)printf("%d ”,a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。

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语言程序设计基础与实训教程》第7章:数组

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

/webnew/
7.1.4 一维数组的应用举例
例7.5 将数组中的数按颠倒的顺序重新存放。要求,在操 作时只能借助一个临时存储单元而不能另外开辟数组。 分析:题目要求是按颠倒的顺序重新存放数据,而不是按 逆序输出。 可以使用两个变量i和j,i和j的初值分别为0和9,将a[i] 与a[j]对调,然后i++,j--,接着再将a[i]与a[j]对调。如些 重复操作,直到i>=j时,对调完成。 程序
分析:该数组元素的值是有规律的序列, ( 从 开始算起 开始算起) 分析 : 该数组元素的值是有规律的序列 , 第 i(i从0开始算起) 个 元素的值为: 元素的值为:10+2*i。 。 输出该数组时,由于该数组有30个元素,在一行中输出不太美观, 输出该数组时,由于该数组有 个元素,在一行中输出不太美观, 个元素 所以,这里我们选择每行输出6个元素。 所以,这里我们选择每行输出 个元素。 个元素
/webnew/
7.1.3 一维数组元素的引用
2.一维数组的输入与输出 一维数组的输入与输出 如何给数组元素赋值以及如何将数组元素的值输出是数 组最基本的操作。下面将讨论一维数组元素的输入与输出。 例7.1 定义一个五个元素的字符型数组,通过键盘给每 个元素赋值,并以相反的顺序的输出。 程序1 程序2 从上面的例子可以看出,一个数组中往往往包含较多的 数组元素,相同的赋值或输出操作将被重复多次进行,所以, 一维数组元素的输入与输出一般通过一重循环来实现。
/webnew/
7.1.3 一维数组元素的引用
注意: (1)数组元素的引用方式与数组说明符的形式非常相近,都是 “数组名[表达式]”形式,但两者的意义完全不同。 出现的位置不同。定义数组时,“数组名[表达式]”出现在 定义语句中,表示的是定义了一个名为“数组名”的数组,表达式的值 表示该数组中所包含元素的个数。作为数组元素的引用方式时,“数组 名[表达式]”出现在其它执行语句中,表示是数组中的下标为“表达式” 值的那个元素。 表达式的格式不同。定义数组时,“表达式”必须为常量表 达式。作为数组元素的引用方式时,表达式可以变量、常量或函数构成 的合法C表达式。 (2)在C语言中,起始下标规定为0,最大值应为:数组长度-1。 如果发生了下标越界的现象,可能破坏了其它存储单元的数据,甚至破 坏程序代码。 (3)下标必须是整型表达式,若为小数,则自动取整。如a[2.6] 系统自动默认为a[2]。

第七章 数组

第七章  数组

例题1:求10名同学的平均分。7_2.c
main( ) { int a[10]; int i ,sum=0,ave; for (i=0;i<10;i++) scanf("%d",&a[i]); /*类型说明符 数组名[常量表达式]
数组名为a,此数组有10个整型元素*/
/* a[0], a[1], a[2], a[3], a[4]
3. 如果输入多个字符串,则可用空格隔开
char str1[20],str2[20],str3[20]; scanf(“%s%s%s”,str1,str2,str3); 输入为 How are you str1中为“How”, str2 中为“are”, str3中为 “you”。
7.3.3字符数组举例: 从键盘输入一行字符串(<20),求字符串中 小写字母的个数。7-6.c main() {char str[20],len=0,i; 求这个字符串 scanf ("%s",str); 的长度? for (i=0; str[i]!='\0';i++) if (str[i]>='a'&&str[i]<='z') len++; printf ("\n%d",len); }
1 2 3 4 5 6 7 8 9 a[8] 10 a[9]
a[0] a[1] a[2] a[3] a[4]
a[5] a[6] a[7]
2. 不允许对数组的大小作动态定义,即数组的大 小不能是变量。 例如:下面是不合法的: int n; float a[n]; 3. 数组元素的使用与变量是一样的。可以赋值, 也可作各种运算,还可以输入和输出。 例如:a [0]=1 ; a[1]=a[0]型_char、实 型_float)的数据外, C语言还提供了构造类型 的数据,它们有:数组类型、结构体类型、共用 体类型。构造类型数据是由基本类型数据按一定 规则组成的。

C语言基础 第7章 数组

C语言基础 第7章 数组

一维数组: float mark[100];
低地址
每个数据元素占用 的字节数,就是基
类型的字节数 一个元素占4个字节
高地址
86.5 mark[0]
92.0 mark[1]
77.5 mark[2]
52.0 mark[3]
.
.
.
.
.
.
94.0
mark[99]
第7章 数组
7.1.2 一维数组的初始化 ❖ 初始化:在定义时指定初始值,编译器把初值
例:int a[10] = {0,1,2,3,4}; 仅前5个元素赋初值,后5个元素自动赋为0。 3、全部元素均初始化为0,不允许简写。 int a[10] = {0,0,0,0,0,0,0,0,0,0}; 不能写成:int a[10]={0*10};
第7章 数组
❖ 不能简写为:
❖ static int a[10] = {0*10};
第7章 数组
❖ 注意: 2)C语言不允许对数组的大小做动态定义, 如:
❖ int n;
❖ scanf("%d",&n);
❖ int a[n]; ❖ 因为在编译时,C编译器根据已知数组大
小分配内存。//只针对全局变量
❖ 说明:
1)数组名:按标识符规则。本例a就是数 组名。
2)整型常量表达式:表示数组元素个数 (数组的长度)。可以是整型常量或符 号常量,不允许用变量。整型常量表达 式在说明数组元素个数的同时也确定了 数组元素下标的范围,下标从0开始~整 型常量表达式-1(注意不是1~整型常量 表达式)。
7.1.3 数组元素的引用
❖ C语言规定,不能引用整个数组,只能逐 个引用元素,元素引用方式:

南昌大学第七章数组答案

南昌大学第七章数组答案

A.int a[]="string";B.int a[5]={0,1,2,3,4,5};C.char a="string";D.char a[]={0,1,2,3,4,5};A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. B.C. D.A. B.C. D.A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1) 确定A. a[0][2*1]B. a[l][3]C. a[4-2][0]D. a[0][4]A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+1 确定A. B.C. D.A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. if(s1>s2)B. if(strcmp(s1,s2))C. if(strcmp(s2,s1)>O)D. if(strcmp(s1A. B.C. D.A. int a[3][ ];B. float a(3C. double a[1][4];D. float a(3)(4);A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1)A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A BC DA BC DA BC DA BC DA BD C整体赋值A BC DA BC DA BC DA BC DA BC DA BCD 值A B C DA B C DA B C DA B C DA) abcdefA) abcdA) abcdA) abcdef确定[C] 教师批改:36、给出以下定义:char x[ ]="abcdefg";char y[ ]={…a…,…b…,…c…,…d…,…e…,…f…,…g…};则正确的叙述为A)数组X和数组Y等价B)数组x和数组Y的长度相同C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度确定[C] 教师批改:37、设有static char str[ ]="Beijing";则执行printf("%d\n", strlen(strcpy(str,"China")));后的输出结果为A) 5 B) 7C) 12 D) 14确定[A] 教师批改:38、请选出以下程序段的输出结果#include<stdio.h>main(){ char sl[10], s2[10], s3[10], s4[10];scanf("%s%s",s1,s2); gets(s3); gets(s4);puts(s1); puts(s2); puts(s3); puts(s4);}输入数据如下:(此处<CR>代表回车符)aaaa bbbb<CR>A bbbbB bbbbC) aaaa bbbbD ccccA BC DA不可以直接用数组名对数组进行整体输入或输出BC数组元素的下标超出所定义的下标范围时,系统将给出DA BC DA B C DA B C DA B C DA BC DA B C D。

第7章 数组 复习

第7章数组1.下列数组声明中,正确的是()。

(a)int a[5]={0}; (b) int a[ ]={0 1 2};(c) int a[5]=0; (d) int a[ ];2.下列数组声明中,正确的是()。

(a)int a[10];(b)int n = 10, a[n];(c)int N =10; int a[N];(d)int n; scanf(" %d ", &n); int a[n];3.已知int a[10];则对a数组元素引用不正确的是()。

(a)a[10] (b) a[3+5] (c) a[10-10](d) a[5]4.以下数组定义中,正确的是()。

(a)int a[2][3] = {1, 2, 3, 4, 5, 6, 7};(b)int a[ ][ ] = {{1, 2, 3},{4, 5, 6},{7, 8,9}};(c)int a[2][ ] = {1, 2, 3, 4, 5, 6};(d)int a[ ][4] = {6};5.若有定义: int a[3] = {0, 1, 2}; 则a[1]的值为()。

(a)0 (b) 1 (c) 2 (d)36.若有定义:inta[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为()。

(a)0 (b) {1,2} (c) 1 (d)37.有如下定义int a[ ][3] = {1,2,3,4,5,6,7,8};则数组a 的行数是()。

(a) 2 (b) 3 (c) 4 (d) 无法确定的8.getchar( )函数的功能是从终端输入()。

(a)一个整型变量值(b) 一个实型变量值(c)多个字符(d) 一个字符9.设已定义chars[ ]="\"Name\\Address\023\n";,则字符串所占的字节数是()。

(a)19 (b) 15 (c) 18(d)1410.以下程序段运行后屏幕输出为()。

大学课件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语言(第七章数组)


对部分元素赋初值(前面的连续元素)。如: int b[10]={0,1,2,3,4};
表示数组元素的值为:
b[0]=0; b[1]=1; b[2]=2; b[3]=3; b[4]=4; 后5个元素的初值为0。
注意:不能只对不连续部分元素或后面的连续
元素赋初值。 语句: int a[10]={, , , , ,1,2,3,4,5};
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]); b[j][i]=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"); } }
运行结果如下:
1
1
2
3
5
8
89
13
144
21
133
34
377
55
610
987
1597
1584
4181
6765
四、简单预处理指令
1. 指令格式:
#define 符号常量
2. 指令作用
文本串
用整型表达式替换程序中所有的符号常量。

第7章 一维数组应用 1


第七章 数组
4、程序设计 、 功能:求小于lim的所有素数并放在 数组中, 的所有素数并放在aa数组中 功能:求小于 的所有素数并放在 数组中,该函数返回 所求出素数的个数。 所求出素数的个数。 # include <stdio.h> # inculde <conio.h> # define MAX 100 int fun (int lim,int aa[MAX]) { int n=0,i,j; /***************program**************/
第七章 数组
一维数组的应用: 一维数组的应用:
1、读程序写结果: 、读程序写结果:
一维数组的应用即对元素的引用有哪些? 一维数组的应用即对元素的引用有哪些? void main () 1、通常与 循环结合使用。 循环结合使用。 、通常与for循环结合使用 {、一维数组的输出。 int x,y,z; 2、一维数组的输出。 int ( ]={-4,0,10,2,7,-1,19,-22,33,0}; a[ 正序、逆序) 正序、逆序) 3、数组元素赋值。 、数组元素赋值。 x=y=z=0; 通过键盘赋值, for通过键盘赋值, (i=0;i<10;i++) 通过程序运行中获取值 { if (a[i]<0) 利用rand()函数获取值,等办法。 ()函数获取值 利用 ()函数获取值,等办法。
第七章 数组
3、程序 、 题目:函数main()首先从键盘接受 个整数,依次放在数组 首先从键盘接受10个整数 题目:函数 首先从键盘接受 个整数, a中;其次,调用 函数在这10个整数中找出第一个奇数 中 其次,调用fun()函数在这 个整数中找出第一个奇数, 函数在这 个整数中找出第一个奇数, 并返回该数的下标值,如果在这10个数中无奇数 则返回-1 个数中无奇数, 并返回该数的下标值,如果在这 个数中无奇数,则返回 第三,如果fun()函数返回值不等于 ,则把找到的数与第 函数返回值不等于-1, ;第三,如果 函数返回值不等于 一个数交换。 一个数交换。 # include <stdio.h> # define N 20 int fun (int a[20]) { int i; for (i=0;i<10;i++) {/*************FOUND***************/ (a[i]%2==1)或(a[i]%2) 或 if (a[i]&1==0) break;} /***************FOUND***************/ i if (i<10) return 1; else return -1; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

i=0 i=1 i=2 i=3
k=0+0+0=0 k=0+1+1=2 k=2+arr[2]+2=6 k=6+3+3=12
For()
请编写函数fun,其功能是:将一组得分中,去掉一个 最高分和一个最低分,然后求平均值,
9.5二维数组的定义和而为数组元素的引用
一维数组的各元素之间是线性关系,每个元素只有一个下 标 1 2 3 4 5 6 7 8 9 10 11 12
int a[ ]
int a[5]={10,35,27} 对部分数组 元素赋值 10 35 27 0 int a[5]={0} int a[5]={1} 0
数组越界
初始化的值的个数不能 大于数组的长度
int a[5]={10,35,27,4,9,6}
例题. 对以下说明语句的正确理解是( int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10]
47
a[3]
80
a[4]
排序前 第1趟 第2趟
第3趟
12 12 12 12 12
27 27 27 27 27
35 35 35 35 35
47 47 47 47 12
27 80 80 80 12
第4趟
int i,t; int a[5]={35,27,80,12,47}; for(i=0;i<4;i++) { for(j=0;j<4-i;j++) if(a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
a[0] a[1] a[2] a3]
a[4]
int a[5]={10,35,27,40,9}
所赋的值放在等号后的一对花括号中, 数值类型必须必须与所说明的类型一致 所赋值之间用逗号隔开。系统会按赋值顺序来自动分配。
int a[5]={10,35,27,40,9} 省略数组长度
int a[ ]={10,35,27,40,9}
int a[2][4]={{10,20,30,40,1},{50,60,70,80}}
可以只对部分元素初始化
内层的大括号可以省略
可以省略行下表的长度
3、二维数组的初始化 在定义二维数组时为各元素赋初值。 (1) 对数组全部元素赋值: 连续赋值: int a[3][4]={{1,2,3,4,5,6,7,8,9,10,11,12}; 分段赋值: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; (2) 可以只对部分元素赋值,未赋值的元素自动取0值: int a[3][4]={{1,2,3},{4,5},{6}}; int a[3][4]={{1,2,3},{4,5}}; int a[3][4]={1,2,3,4,5,6}; (3) 初始化赋值时行下标长度可以省略,系统将自动计算。 如:int a[][3]={1,2,3,4,5}; int a[][3]={{1,2},{4,5},{7},{10}};
#include<stdio.h> main( ) { int n[2]={0}, i, j, k=2; for(i=0; i<k; i++) for(j=0; j<k; j++) n[j]=n[i]+1; printf(“%d”,n[k]); }
删除一维数组中所有相同的数,使之只剩一个。数组中 的数已按由小到大的顺序排列。 a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}
8.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大 小是( ) A)2 B)3 C)4 D)无确定值
填空1:函数fun的功能是:输出a所指数组中的前n个数 据,要求每行输出5个数。 int i,a[100]; for(i=0; i<n; i++) { /**********found**********/ if( ___1___==0 ) /**********found**********/ printf("___2___"); /**********found**********/ printf("%d ",___3___); }
a[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]
下标不能越界
int a[2][4]={{10,20,30,40},{50,60,70,80},{1}}
)
D)因为数组长度与初值的个数不同,所以此语句不正确
1 0
a[0]
1
a[1]
1 3
a[2]
1 7
a[3]
1 15
a[4]
0
c[0]
4
c[1]
3
c[2]
3
c[3]
2
c[4]
1 1
3 2
3
1 4
3 4
33
2
1
1
1
2
3
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10] s[11]
……
a[0] a[1] a[2] …… a[98] a[99]
注意: (1)在一个定义语句中,可以同时定义多个数组,他们之 间用逗号隔开。 如:double w[22],v[100],u[5]; (2)也可以在定义变量的同时定义数组 如:int a,b[8]; (3)数组名不能与其他变量同名。 如:int a,a[8]; (4)数组名后面方括号里面只能是整形常量或整形常量表 达式。 如:int a=2,b[4+4]; int c[a];
int i,j=1; for(i=1;i<n;i++) if(a[j-1]!=a[i]) a[j++]=a[i];
2
2
2
3
445来自666

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] …
12
a[0]
27
a[1]
35
a[2]
第七章 数组
整形 基本数据类型 实型 字符型
数据类型
数组
构造数据类型
结构题
共用体
如何存储100个数 数组就是一组相同类型的变量的集合
int a[100];
1)100称为数组的大小(长度) 2)int数组元素的数据类型。
int a[100]
数组a在定义好之后,C编译系统在内存中开辟了一块连续 的存储单元。分别用来存放数组元素
1.有以下程序 #include <stdio.h> main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3]={0},i; for(i=0;i<3;i++) b[i]=a[i][2]+a[2][i]; for(i=0;i<3;i++) printf(”%d”,b[i]); printf(”\n”); } 程序运行后的结果是____________
1 5 9
2 6 10
3 7 11
4 8 12
int a[3][4];
a[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]
⑤有3*4个数组元素,分别是: 每个元素都有两个下标,第一个下标代表的是行号, 称为行下标,第二个下标代表的是列号,称为列下标, 行下标和列下标都是从0开始,
相关文档
最新文档