C语言程序设计 一维数组

合集下载

C语言程序设计项目教程项目六 技能大赛评分

C语言程序设计项目教程项目六 技能大赛评分
的用法是错误的:inta(10)。
上一页 下一页 返回
任务6.1 一维数组
• ④ 常量表达式表示元素的个数,即数组长度。例如,在a[10]中, 10 表示a 数组有10 个元素,下标从0 开始,这10 个元素是a[0], a[1],a[2],a[3],a[4],a[5],a[6],a[7],a [8],a[9]。需要注意的是,不能使用数组元素a[10],该元 素并不存在。
上一页 下一页 返回
任务6.1 一维数组
• for(i=2;i<20;i++) • f[i]=f[i-1]+f[i-2]; //每项值等于前两项值得和 • for(i=0;i<20;i++) • { if(i%5==0) //每行输入5 个值 • printf("\n"); • printf("%8d",f[i]); } • system("pause"); •} • (1)运行结果。 • 实例6.2 的运行结果如图6-4 所示。
上一页 下一页 返回
任务6.2 二 维 数 组
• for(j=0;j<3;j++) • printf("%4d",a[i][j]); //打印二维数组值 • printf("\n"); •} • for(i=0;i<3;i++) • for(j=0;j<3;j++) • b[j][i]=a[i][j]; //数组转置 • printf("转置之后的矩阵是:\n"); • for(i=0;i<3;i++) •{
项目六 技能大赛评分
• 任务6.1 一维数组 • 任务6.2 二维数组 • 任务6.3 排序方法

c语言一维数组自定义方式

c语言一维数组自定义方式

c语言一维数组自定义方式
C语言中,一维数组可以通过以下三种方式自定义:
1.直接指定数组长度
●int arr[5];//定义一个长度为5的整型数组
2.通过初始化列表指定数组元素
●int arr[]={1,2,3,4,5};//定义一个长度为5的整型数组,并初始化元素值为1、2、
3、4、5
3.通过指针方式指定数组长度
●int*arr=malloc(sizeof(int)*5);//分配一个长度为5的整型数组空间
直接指定数组长度
这种方式是最简单的,只需要在数组名称后面指定数组的长度即可。

需要注意的是,数组的长度必须是常量表达式,不能是变量或函数调用结果。

通过初始化列表指定数组元素
这种方式可以同时指定数组的长度和数组元素的值。

初始化列表中的元素必须与数组元素类型一致。

通过指针方式指定数组长度
这种方式需要使用malloc()函数来分配数组空间。

malloc()函数会返回一个指向数组首元素的指针。

需要注意的是,需要使用free()函数来释放数组空间。

C语言一维数组

C语言一维数组

6
例题巩固
在C 语言中,引用数组元素时,其数组下标的 数据类型允许是 。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式
C语言中,数组名代表 A.数组全部元素的值 B.数组首地址 C.数组第一个元素的值 D.数组元素的个数
合法的数组定义是 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};
以下程序的输出结果是________。 main( ) { int i,p=0,a[10]={1,5,9,0,-3,8,7,0,1,2}; for(i=1;i<10;i++) if(a[i]<a[p]) p=i; printf("%d,%d\n",a[p],p); } A) -3,4 B) 0,1 C) 9,2 D) 2,9
35
35
int a[5]
a[0] a[1] 第一轮 21 13 13 13 21 21
a[2] 90 90 90
a[3] a[4] 32 32 32 -1 -1 -1
13 13
21 21
32 32
90 -1
-1 90
第一轮的结果: 将最大的数移到了最后一个位置(n-1)。
int a[5]
a[0] a[1]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] 0 1 2 3 4 5 6 7 8 a[9] 9
数组a
max = a[0];
32
32
定义
main()
{ int i, max, x[10];

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。

它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。

1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。

其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。

1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。

每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。

1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。

通过运算符和表达式可以进行各种数值计算和逻辑判断。

第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。

整型数据类型可以表示整数值,并具有不同的取值范围。

2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。

浮点型数据可以表示较大或较小的数值,并具有一定的精度。

2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。

字符型数据可以用于表示各种字符(包括字母、数字、符号等)。

2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。

《C语言程序设计课件》第四章-数组

《C语言程序设计课件》第四章-数组
提示:程序在读入数时将其存储在一个数组中, 然后通过数组反向开始一个接一个地显示出数组 元素。
#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]

C语言程序设计 – 第 06 章课后习题

C语言程序设计 – 第 06 章课后习题

C语言程序设计– 第六章课后习题电子13-02班王双喜一、选择题1. C语言中一维数组的定义方式为:类型说明符数组名(C)A. [整型常量]B. [整型表达式]C. [整型常量]或[整型常量表达式]D. [常量表达式]2. C语言中引用数组元素时,下标表达式的类型为(C)A. 单精度型B. 双精度型C. 整型D. 指针型3. 若有定义:int a[3][4];,则对a数组元素的非法引用是(D)A. a[0][3*1]B. a[2][3]C. a[1+1][0]D. a[0][4](解释:A、B、C均正确,D看起来引用不太妥当,但其亦有其意义(a[0][4]等价于a[1][0]))4. 若有定义:int a[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};,则a数组的第一维大小是(C)A. 1B. 2C. 3D. 4(解释:共9个元素,除以3即可得第一维大小是3;若有余数,则应加1)5. 若有定义:int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,则值为5的表达式是(C)A. a[5]B. a[a[4]]C. a[a[3]]D. a[a[5]]6. 要求定义包含8个int类型元素的一维数组,以下错误的定义语句是(A)A. int N = 8;int a[N]; B. #define N 3while (a[2*N+2];C. int a[] = {0, 1, 2, 3, 4, 5, 6, 7};D. int a[1+7] = {0};(解释:数组的大小必须是整型常量或整型常量表达式)7. 若二维数组a有m列,则在a[i][j]前的元素个数为(A)A. i * m + jB. j * m + iC. i * m + i - 1D. i * m + j - 18. 下面是对数组s的初始化,其中不正确的是(D)A. char s[5] = {"abc"};B. char s[5] = {'a', 'b', 'c'};C. char s[5] = "";D. char s[5] = "abcdef";(解释:D中元素个数太多,算上'\0'共六个,非法)9. 下面程序段的运行结果是(B)char c[] = "\t\v\\\0will\n";printf("%d", strlen(c));A. 14B. 3C. 9D. 字符串中有非法字符,输出值不确定(解释:字符串中第四个是'\0'即结束标志,因此字符串长度是3)10. 判断字符串s1是否等于s2,应当使用(D)A. if (s1 == s2)B. if (s1 = s2)C. if (strcpy(s1, s2))D. if (strcmp(s1, s2) == 0)(解释:对于字符串来讲,其名字的内容是该字符串的起始地址,不能通过比较名字来比较相等,而应该用专用的函数进行逐字符匹配)二、写出程序的执行结果1. 程序一:# include <stdio.h>main(){int a[3][3] = {1, 3, 5, 7, 9, 11, 13, 15, 17};int sum = 0, i, j;for (i = 0; i < 3; i++)for (j = 0; j < 3; j++){a[i][j] = i + j;if (i == j) sum = sum + a[i][j];}printf("sum = %d", sum);}执行结果:打印sum = 6.(解释:a中各个元素的值是其行和列数字之和,sum内保存a中对角线元素之和,即sum = 0 + 2 + 4)2. 程序二:# include <stdio.h>main(){int i, j, row, col, max;int a[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {-1, -2, 0, 5}};max = a[0][0]; row = 0; col = 0;for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)if (a[i][j] > max){max = a[i][j];row = i;col = j;}printf("max = %d, row = %d, col = %d\n", max, row, col);}执行结果:打印max = 9, row = 1, col = 0.(解释:此程序的功能是逐行逐列扫描元素,总是将最大的元素赋给max,并保存该元素的行数和列数;因此执行完毕后,max是最大的元素(9),row是其行数(1),col是其列数(0))3. 程序三:# include <stdio.h>main(){int a[4][4], i, j, k;for (i = 0; i < 4; i++)for (j = 0; j < 4; j++)a[i][j] = i - j;for (i = 0; i < 4; i++){for (j = 0; j <= i; j++)printf("%4d", a[i][j]);printf("\n");}}执行结果:第一行打印0;第二行打印1 0;第三行打印2 1 0;第四行打印3 2 1 0。

C语言程序设计数组(说课稿)

C语言程序设计数组(说课稿)

C语言程序设计——数组(说课稿)南京浦口中等专业学校—陈松一、课程目标《C语言程序设计》是中职对口单招计算机专业理论考试和技能考试中一门重要的课程。

要求学生掌握计算机编程语言的基本知识,初步掌握程序设计的基本思想,具有基本的C程序设计能力,能比较熟练地阅读、理解和编制简单的C程序。

二、学情分析本课程是针对综合高中对口单招班高二年级计算机专业的学生,学生已学习了计算机基础和计算机原理课程,对专业知识有了一定的了解。

但班级学生参差不齐,不少学生学习习惯较差,基础较薄弱。

教师必须首先弄清学生对专业课学习的障碍及原因,再根据教学原理制定出相应的对策,培养学生学习的积极,提高解决实际问题的能力。

三、教材与参考书本课程使用的教材是《C语言编程基础》(第2版)电子工业出版社。

此教材分为两部分,第一部分是基础知识模块,第二部分是选用模块。

对口单招学生只学习第一部分内容,第二部分内容单招计算机专业的考纲中是不要求的。

辅导练习:1、C语言阶段综合测试卷集。

2、自己编写的每次课的学生工作页。

四、教材分析1、单元内容数组单元是C语言的一个重要章节,本单元教学内容有:(1)一维数组的定义、引用和初始化、一维数组应用。

(2)二维数组的定义、引用和初始化、二维数组应用。

(3)字符串与字符数组、字符串的输入输出、字符串处理函数、字符数组应用。

2、单元设计(1)本单元每次课都编写了学生工作页,让学生根据任务去学习本单元内容。

(2)本单元加强了上机实习的课时数,着重培养学生上机实践能力,提高他们的程序设计能力。

3、教学目标➢知识目标:(1)了解一维数组、二维数值型数组的定义和使用方法。

(2)掌握对数组的初始化。

(3)掌握字符串的输入、输出和处理。

(4)熟练掌握使用数组进行程序设计的方法。

(5)理解程序设计中的几种常见算法的基本思路。

➢技能目标:(1)学生能正确的定义数组;能正确的引用数组和初始化数组;能使用数组进行程序设计。

(2)培养学生的分析、思考能力,提高解决问题的能力。

C语言程序设计 练习题参考答案 第四章 (1) 一维数组

C语言程序设计 练习题参考答案 第四章 (1) 一维数组
printf("%4d",a[i]);
printf("\n请输入要插入的整数,输入之后按回车键,如要结束请输入-1\n");
scanf("%d",&x);
}
}
/* 4.15 将十进制数转换成二进制数,并按位存到数组中。(限正整数) */
C语言程序设计 练习题参考答案 第四章 (1) 一维数组
/* 4.11 fibonacci数列,前15项 1,1,2,3,5,。。。。。*/
#include "stdio.h"
void main()
{
int f[15]={1,1}, i;
for(i=2;i<=14;i++) /* 计算 */
f[i]=f[i-2]+f[i-1];
printf("fibonacci数列,前15项\n"); /* 输出 */
for(i=0;i<=14;i++)
{
printf("%5d",f[i]);
if((i+1)%5==0)
for(i=0;i<=9;i++)
printf("%3d",a[i]);
}
/* 4.13 有序数列中插入若干个数,仍然保持有序 */
#include "stdio.h"
void main()
{
int a[100]={1,4,8,10};
int i,k,x,count=4;/* i,k 循环变量, x 输入整数,count 有多少整数*/

C语言程序设计第5章数组.ppt

C语言程序设计第5章数组.ppt
冒泡法排序
2019/3/19
F
冒泡法排序 (续)
程序如下:
#define N 6 #include "stdio.h" void main( ) {int a[N]; int i,j,t; printf("请输入%d个成绩,用空格隔开:\n",N); for (i=0; i<N; i++) scanf("%d",&a[i]);
2019/3/19
5.2.2 数组元素的引用(续)
2.说明
① 下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10],i; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查。
2019/3/19
5.2.2 数组元素的引用(续)
【例5-4】用冒泡法(也称起泡法)对输入的一组 成绩按从低分到高分的顺序排序并输出。
例如将6个数:4、7、5、6、8、1按从小到大顺序用冒泡 法排序,方法如下: 在第一趟排序中, 6个数比较了5次,把6个数中 第一趟排序情况如下: 的最大数8排在最后。 4 7 5 6 8 1 第一次 4和7比较,不交换 4 7 5 6 8 1 第二次 7和5比较,交换 457681 第三次 7和6比较,交换 456781 第四次 7和8比较,不交换 4 5 6 7 8 1 第五次 8和1比较,交换 456718
2019/3/19
5.1概述(续)
2.数组与数组元素的概念
数组:是用一个名字表示的一组相同类型的数据的集合, 这个名字就称为数组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的数据分别存储在用下 标区分的变量中,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个下标变量相当于一个简单变量,数组的类型也就是该 数组的下标变量的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。

一维数组(C语言)

一维数组(C语言)
符数组名,而不是数组元素名。 printf(“%s〞,c[1]); 错误
字符数组
C、如果数组长度大于字符串实际长度,也只输出到遇‘\0’结束。 D、如果一个字符数组中包含一个以上‘\0’,那么遇到和第一个‘\0’ 就结束。〔利用scanf输入字符串,空格可作为结束符。〕
例:char str[13]; scanf(“%s〞,str);
字符数组
〔3〕给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,假设是逐个字符 赋值给数组元素,要在最后一个字符之后加上字符串结 束标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
printf(“\n〞);
}
B、使用getchar putchar getch getche函数。
字符数组
〔2〕将整个字符串一次输入或输出。用%s格式符。 例:char c[ ]=“china〞; printf(“%s〞,c);
结果为:china
注意: A、输出字符不包括结束符‘\0’; B、用%s格式符输出字符串时,printf 函数中的输出项是字
int a[10], b[10], k; for (k=0;k<10;k++) scanf(“%d〞,&a[k]); b=a; /*error*/ for(k=0;k<10;k++) b[k]=a[k];
一维数组
(3) 在使用数组元素时,数组元素中的下标表 达式的值必须是整型。 下标表达式值的下限为0,值的上限为该数 组元素的个数减1。 使用数组时注意其下标不要越界。如果下 标越界,程序无法得到正确的结果。

C语言编程一维数组的使用

C语言编程一维数组的使用

实验三一维数组的使用【实验目的】1掌握一维数组、二维数组的定义和初始化方法。

2熟悉使用字符数组处理字符串处理的方法。

【实验内容】1 •输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数打印出来编写程序:#in elude <stdio.h>void readdata (float score[10]){int i;printf("依次输入10个学生的成绩:\n");for(i=0;i<10;i++)scan f("%f",&score[i]);return;}float aver(float score[10]){float sum;int i;for(sum=0,i=0;i<10;i++)sum=sum+score[i];return(sum/10);}void prin tff(float score[10],float ave) { int i;printf("低于平均分的成绩为:\n");for(i=0;i<10;i++) if(score[i]<ave) prin tf("%8.2f",score[i]); return;}mai n(){void readdata (float score[10]);float aver(float score[10]);void prin tff(float score[10],float ave); float ave,score[10]; readdata(score);ave=aver(score);prin tf("average=%6.2f\n",ave);prin tff(score,ave);}2、将一个数组中的值按逆序重新存放。

例如,原来顺序为8, 6, 5, 4, 1。

要求改为1,4, 5, 6, 8<编写程序:#include viostream.h>int main(){int i,j,a[5]={8,6,5,4,1},b[5];for(i=0,j=4;iv5,j>=0;i++,j--)b[j]=a[i];for(i=0;i<5;i++)a[i]=b[i];for(i=0;i<5;i++)coutv<a[i]vv"\t";}3、应用一维数组,对10个从键盘输入的数进行冒泡排序,使其按照从大到小的顺序输出。

《C语言程序设计》教案 第四章 数组—一维数组

《C语言程序设计》教案 第四章 数组—一维数组
for(i=1;i<=100;i++)
if(a[i]>average)
printf(“%f\n”,a[i]);
(2)在这里,a代表数组名,a[i]代表a数组中的一个元素,i是数组元素的下标,当i的值为1时,a[i]代表a[1];当i的值为2时,a[i]代表a[2]。在循环中当i从1变化到100时,a[i]也就逐个代表a[1]到a[100]。
if(a1>average)printf(“%f\n”,al);
if(a2>average)printf(“%f\n”,a2);
……
if(a100>average)printf(“%f\n”,a100);这样的程序是无法让人接受的。
解决上述问题方法:(1)在C语言中,我们可以定义一个名叫a的变量,它不代表一个单一的成绩值,而是代表整个成绩组。使用数组元素a[1]、a[2]、…、a[100]来代替a1、…、a2、…、a100,则程序就会简单得多,只需要用一个for循环就能完成100次比较:
每个数组元素也都可以作为单个变量使用。
3、一维数组(45分钟)
(1)一维数组的定义(先定义后使用)
格式:类型说明数组名[常量表达式]
例如:
int grades[10]; /*定义了一个数组grades,元素个数为10,数组元素类型为整型。*/
说明:1)数组的类型就是数组各个元素的类型,对于一个数组,所有元素的数据类型都是相同的。
(3)数组的下标:是数组元素的位置的一个索引或指示。
(4)数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。
例如:int a[10];
定义了一个一维数组a,该数组由10个数组元素构成的,其中每一个数组元素都属于整型数据类型。

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]) { ……}

语言程序设计 一维数组的定义和初始化

语言程序设计 一维数组的定义和初始化

数组元素类型 数组名
定义了100个元素,分别为a[0]、a[1]、a[2]、……、a[99],相当于100个int类型 的变量,每一个称为数组中的一个元素,这些元素在内存中的存储示意如下。
a[0]
a[1]
a[2]
……
a[99]
C语言 一维数组定义
# include <stdio.h>
int main( )
C语 言 程 序 设 计
一维数组的定义和 初始化
C语言 数组类型的引入
例:设计程序实现,输入100个整数,反序输出。
01
分析:
02
因为要反序输出,所以直到最后一个数输入前我们无法输出,必须保存这100个整数的值。 应用前面所学的知识,我们进行如下的数据定义和输入函数调用。
a1
a2
a3
……
a100
int main( )
//下标值由大到小遍历 // 输出a[i]的值
C语言 一维数组元素的引用
如何使两个数组的值相等?
main()
{
int a[5] = {1,2,3,4,5}, b[5];
b = a; }
×
原因:数组名表示数组的首地址,其 值不可改变!
解决方法:
方法1:逐个元素赋值
b[0]=a[0];
b[1]=a[1]; b[2]=a[2];
C语言 一维数组的初始化
定义数组后,数组元素的初值是随机数,可以在定义数组的同 时对数组元素进行初始化。
int a[5] = { 12, 34 }; √ int a[5] = { 12, 34, 0, 0, 0 }; √ int a[5] = { 0 }; √ int a[ ] = { 12, 34, 56 ,78 ,9 }; √ int a[5] = { 12, 34, 56 ,78 ,9,18,20 }; ×

《c语言程序设计教学资料》第8章---数组

《c语言程序设计教学资料》第8章---数组
printf(“%d”, a[i]);
一维数组的初始化
不为自动数组初始化,数组中的元素值是不确定的 不为静态或外部数组初始化,则对数值型数组元素, 初值为0,而对字符型数组元素,初值为空字符 ‘\0’ 对数组元素初始化的实现方法:
1.在定义数组时对数组元素赋以初值。
例如: int a[10]={0,1,2,3,4,5,6,7,8,9}; 将数组元素的初值依次放在一对花括弧内。经过上 面的定义和初始化之后,a[0]=0,a[1]=1,a[2]=2, a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8, a[9]=9。
0
30
b1]
1
34
b[2]
2
38
b[3]
3

3c
b[4]
4
40
c
52
44
a
61
48
i
14678910235
4c
b[8]
8
50
b[9]
9
54
b[10]
10
58
c和a的值因数组越界编辑p而pt 被破坏了 b[11]
11
5c
二维数组程序举例
例: 将一个二维数组行和列元素互换,存到另一个二维数 组中。
数组名 [下标] 下标可以是整型常量或整型表达式。例如: a[0]=a[5]+a[7]-a[2*3]
注意
定义数组时用到的“数组名[常量表达式]” 和引用数 组元素时用到的“数组名[下标]” 是有区别的。 例如∶ int a[10]; // 定义数组长度为10
t=a[6]; //引用a数组中序号为6的元素
sizeof(数组名)
编辑ppt

《C语言程序设计》课件 第五章 数组

《C语言程序设计》课件 第五章 数组
若二维数组名a代表的起始地址为5948,则它的三个元 素a[0]、a[1]和a[2]分别对应了起始地址5948、5956和 5964。
a(5948)
a[2](5964) a[1](5956) a[0](5948) 图 5-10
a[2][1] (5968) a[2][0] (5964) a[1][1] (5960) a[1][0] (5956) a[0][1] (5952) a[0][0](5948)
return 0;
}
5.1.4一维数组程序举例
3.用选择法对输入的n个学生的单科成绩进行 从小到大排序。
编程思路: 直接选择排序的过程是:首先在所有数据中找出值 最小(最大)的数据,把它与第1个数据交换,然后 在其余的数据中找出值最小(最大)的数据,与第2 个数据交换......依次类推,这样,n个数据经过n-1轮 交换后可得到有序结果。
printf("%3d ",a[i]); printf("\n"); return 0; }
5.1.3 一维数组的初始化 5.1.3 一维数组的初始化
数组初始化常见的格式:
1.用大括号括起来的常量表达式列表,常量表达式 之间用逗号进行分隔: int a[10]={1,2,3,4,5,6,7,8,9,10};
注意:
不要将a[i][j]写成a[i,j],否则编译系统会将逗号分隔 符作为逗号运算符处理,即将a[i,j]视为a[j]。
5.2.2二维数组元素的引用
可以将二维数组看成是特殊的一维数组。
例如,二维数组a[3][2]可以看成是长度为3的一维数组, 所含的3个数组元素分别为:a[0]、a[1]、a[2]
for(i=0;i<3;i++) for(j=0;j<5;j++)

C语言程序设计 一维数组

C语言程序设计 一维数组

8
如果

我们对变量可以编号引用,例如a8可曰之“第8个头文字a 的变量”,那么

我们可以写出如下的代码
void main() { int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, sum=0; for(int i=1; i<=10; i++) { scanf(“%d”, &ai ); sum=sum+ ai ; } float average=sum/10; for(int i=1; i<=10; i++) if (ai >=average) printf(“%d\n”, ai ); }
数组首地址
a[97]
a
a[1]
a[0]

11
数组的定义

数组的定义:我们定义变量一样定义数组名和类型,并定义数组 大小表示数组中有多少个元素。用方括号表示数组大小 这里是 数组的 数组 堆栈框 定义数组就象定义变量一样,同时为数组分配内存。 图。 main() main { char letters[4]; int values[3]; ….. } letters
庆幸

幸亏只输入10个学生成绩,如果要求输入10000个 学生 ?
我们已经知道了循环语句能以简洁的程序完成大量的重复操作,那么,能 不能用循环语句来顺序执行10个数a1、a2…a10个数与average的比较呢? 不能。因为我们无法让循环体中的语句在这次执行时是“if (a1 > average)”,下次执行时变成“if (a2> average)”,再下次又变成“if (a3 > average)”。循环做的是相似的操作,更确切地说,每次循环所执行 的语句必须相同,虽然执行的效果可以不同,例如:for(int i=1;i<=10;i++)printf(“%d”,i);在屏幕上输出的依次是1、2、3…10,但 那是靠语句中变量值的改变,而不是靠语句中变量名的改变来实现的:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.1一维数组
5.1.1找最小数
【例5-1】输入10个整数,找出其中的最小数,然后输出这10个数和最小数。

参考程序如下:
/*程序5-1.c*/
#include<stdio.h>
int main()
{
int i,min,a[10];/*定义数组*/
printf("Enter data:");/*提示输入*/
for(i=0;i<10;i++)
scanf("%d",&a[i]);/*输入10个数*/
min=a[0];/*假设下标为0的元素最小*/
for(i=1;i<10;i++)/*找最小值a[i]*/
if(a[i]<min)min=a[i];
for(i=0;i<10;i++)
printf("%2d",a[i]);
printf("\nmin=%d\n",min);
return0;
}
运行结果
Enter data:3251094161837
3251094161837
min=1
数组的功能很明确,输入10个数,找出最小数,然后输出这10个数和最小数。

这就要求保存输入数据,并对它们进行处理,程序中用了一个整型数组,而不是若干个整型变量来存放它们。

定义一个整型数组a后,在内存中开辟了10个连续的单元,用于存放数组的10个元素a[0]~a[9]的值,这些元素的类型都是整型,有数组名a和下标唯一确定每个元素。

这些元素在内存中连续存放。

在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分。

5.1.2一维数组的定义
定义一个数组,需要明确数组变量名,数组元素的类型和数组的大小。

定义一维数组的形式为:
类型说明符数组名[常量表达式];
例如:
int a[5];
它表示数组名为a,此数组有5个元素,每个元素都是整型。

编译系统为该数组在内存中分配5个连续的存储单元,这5个数组元素为a[0],a[1],a[2],a[3],a[4]。

a[0]a[1]a[2]a[3]a[4]
说明:
⑴数组名的定义规则与变量名相同,遵循标识符定名规则。

⑵常量表达式表示数组元素的个数,即数组长度,数组元素的编号从0开始。

常量表达式中可以包括常量和符号常量,但必须是整数,不能包含变量。

也就是说,不允许对数组进行动态定义。

例如:
int a[n];/*非法数组定义,因为n是一个变量*/
⑶类型说明符可以是int、float、double和char等,例如:
char c[20];/*定义一个字符型数组*/
float f[10];/*定义一个实型数组;*/
⑷数组的下标表示元素在数组中的位置,它是一个整数,可以用常量、变量或表达式来表示。

包含N个元素的数组的合法下标为0,1,2,…,N-1,其中最大的下标是N-1。

对于一个数组a[10],数组中最后一个元素为a[9]。

注意:不能使用数组元素a[10]。

⑸带有一个方括号的数组称为一维数组,带有两个方括号的数组称为二维数组,例如:
int a[2];float b[2][3];
表示数组a是一维数组,b是二维数组。

5.1.3数组的初始化
数组定义时可以对各元素指定初始值,称为数组的初始化。

形式如下:
int x[5]={0,1,2,3,4};
表示对一个整型数组赋初值,使x[0]=0,x[1]=1,x[2]=2,x[3]=3,x[4]=4。

01234
a[0]a[1]a[2]a[3]a[4]
说明:
1.普通数组如果不初始化,其元素值为所分配内存中的垃圾值;
2.对static数组元素不赋初值,系统会自动赋以0值;
3.只给部分数组元素赋初值,例如:
int fib[10]={0,1};
对数组的前两个元素赋初值,其余元素的值为0。

4.当全部数组元素赋初值时,可不指定数组长度,例如:
int b[]={2,4,6,8,10};
上述初始化语句等价于:
int b[5]={2,4,6,8,10};
5.1.4数组的引用
由于数组有多个分量,对数组的使用只能逐个引用数组元素,不能一次引用整个数组。

其引用形式为:
数组名[下标];
下标可以是整型常量,也可以是整型表达式。

例如:
a[2]=1;
a[2+1]=2;
a[i+j];(i和j为整型变量)
【例5-2】将数组array的10个元素赋初值,并输出。

/*程序名:5_2.c*/
/*程序功能:输出数组元素的值*/
/#include<stdio.h>
int main()
{
int i,array[10];
for(i=0;i<10;i++)//初始化数组
array[i]=i;
for(i=0;i<10;i++)
printf("%2d",array[i]);
printf("\n");
}
运行结果:
0123456789。

相关文档
最新文档