一维数组的定义赋值遍历.ppt

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=4;i>=0;i--) printf(“%d”,a[i]);
}
一维数组的遍历
• 数组的遍历一般用循环语句实现 • 注意下标的取值范围,不能越界(编
译系统对下标的越界不做检查)
例题:从键盘输入10个整数存放在数组中,
找出其中最大的一个数,输出该最大数。
解法1:记下最大数其值 main() {
}
解法2:记下最大数相应的下标 main() {
int i, max_id,a[10]; printf("enter data:\n"); for(i=0;i<10;i++) scanf("%d", &a[i]); max_id=0; //假定下标为0的元素最大 for(i=1;i<10;i++)
if(a[i]>a[max_id]) max_id=i;
课堂练习
– 2. 修改上例:
• 要求输出数组元素中所有5的倍数,怎么做?
课堂练习
– 3. 修改上例,要求实现求数组元素中所有下
标为偶数的元素的和怎么做?
小结
– 数组的定义、初始化、引用、输入、输出概念、 操作必须掌握
– 数组下标从0开始 – 数组名代表数组首地址,是一个常量 – C语言不允许动态定义数组,即定义数组时数
}
课堂练习
• 2.模仿上例,求该数组中最大的那个数,并 且输出。
课堂练习
– 1、新建一个项目,建立一个能存放100个数据 的数组,为该数组赋值,赋值采用循环语句, 元素值为:数组下标×2,然后按正序和逆序 输出
• 定义输入函数:int input(int a[], int len); • 定义正序输出函数:int outz(int a[], int len); • 定义逆序输出函数:int outn(int a[], int len); • 编写main函数调用上述函数,实现输入和输出
一维数组
主要内容
• 一维数组的定义 • 一维数组元素的引用 • 一维数组的初始化和赋值
• 一维数组的遍历
• 一维数组元素的查找 • 一维数组元素的排序
一维数组的定义
一维数组的定义
• 定义数组的语法: int a[10]; 数据类型说明符 数组名[数组长度];
注意:数组的空间分配是静态分配。数组长度只能是常 量,长度不能在程序运行过程中发生变化。
int i, max,a[10]; printf("enter data:\n"); for(i=0;i<10;i++) scanf("%d", &a[i]); max=a[0]; //假定a[0]的元素最大 for(i=1;i<10;i++)
if(a[i]>max) max=a[i];
printf(“最大数是%d\n", max);
一维数组的定义举例
int a[ ];
错误,没有指明数组的大小 int a[10];
#define SIZE 100 float b[SIZE];
正确 ,SIZE是常量,相当

float b[100];
int n=10; char c[n];
错误,数组的大小不能是变 量,应为 int a[10];
int 2a[10];
组长度表达式不能含有变量 – 数组元素与普通变量具有相同属性,可以进行
算术运算和比较大小等操作
一维数组元素的查找
一维数组元素的查找
• 思路与实现:利用循环遍历数组中的 元素,在遍历的过程中比较要查找的 数与数组元素是否相等,若相等,输 出下标,若到数组末尾都未找到,则 显示没有找到。
一维数组元素的查找
错误,数组名2a 不符合标识 符的命名规则
一维数组元素的引用
一维数组元素的引用
数组就是一组变量的集合,每个数组元素相当于是一个变量 数组元素的表示: 数组名[下标] 如:int a[5];所定义的数组就是五个变量的集合,分别是:
a[0], a[1],a[2], a[3], a[4] int a[N]; 下标的取值范围:0~N-1 ,其中N为数组的大小 下标是整型值,可以是整型常量、整型变量或整型表达式
一维数组的初始化
初始化注意事项:
(1) 允许初始化一部分元素,其他没有赋初值的元素初值为0; int a[5]={1,2}; 相当于 int a[5]={1,2,0,0,0};
(2)允许初始化时省略数组的长度,数组的长度为赋初值的个数; int a[]={1,2,3,4,5}; 相当于 int a[5]={1,2,3,4,5};
scanf(“%d”,&a[4]);
printf(“%d\n”,a[4]);
printf(“%d\n”,a[3]);
printf(“%d\n”,a[2]);
printf(“%d\n”,a[1]);
printf(“%d\n”,a[0]);
}
main() {int i, a[5];
for(i=0;i<5;i++) scanf(“%d”,&a[i]);
课堂练习:
1.从键盘输入10个整数保存到数组中,求平均值并 输出。
#include <stdio.h> float average(int b[],int length); main() {
int a[10],i; float result; printf("请输入10个整数:\n"); for(i=0;i<10;i++) {
scanf(“%d”,&a[0]);
scanf(“%d”,&a[1]);
scanf(“%d”,&a[2]);
scanf(“%d”,&a[3]);
scanf(“%d”,&a[4]);
printf(“%d\n”,a[4]);
printf(“%d\n”,a[3]);
printf(“%d\n”,a[2]);
scanf("%d",&a[i]); } result=average(a,10) printf(“平均值=%f\n",result); }
float average(int b[ ],int length) {
int sum=0, i; float ave;
for(i=0;i<10;i++) {
sum+=b[i]; } ave=(float)sum/10; return ave;
printf(“%d\n”,a[1]);
printf(“%d\n”,a[0]);
}
从键盘输入5个整数,保存到数组a中;再逆序 输出。
main()
{
int a[5];
scanf(“%d”,&a[0]);
scanf(“%d”,&a[1]);
scanf(“%d”,&a[2]);
scanf(“%d”,&a[3]);
printf(“最大数是%d\n",a[max_id]);
}
讲解-数组名作函数参数
#include <stdio.h>
void outputScore(int score[],int length); //函数声明
main()
{
int score[10]={1,2,3,4,5,6,7,8,9,10};
}
练习题1:
定义一个一维字符数组cnum, 再从键盘上 输入一个字符ch,查找数组中是否有字符 与ch相等。如果有,输出相应的下标;如 果没有,输出“该字符在数组中不存在” 。
练习题2:
• 从键盘上输入一串字符,存储到一个字符 数组中,然后统计数组中各个英文字符的 个数(统计是区分字母的大小写)。
scanf("%d", &num[i]); printf(“input x:”); scanf("%d", &x); for(i=0; i<10; i++)
if (num[i]==x) //找到了 break;
if(i==10)//没有找到 printf(“该数在数组中不存在 ");
else printf(“该数在数组中的下标是%d”,i);
例:定义一个一维数组num, 再从键ቤተ መጻሕፍቲ ባይዱ 上输入一个整数x,查找数组中是否有元 素的值与x相等。如果有,输出相应的下 标;如果没有,输出“该值在数组中不存 在” 。
一维数组元素的查找
#include <stdio.h> main() {
int num[10], x, i, j; for(i=0; i<10; i++)
如:a[i] a[3+1] a[2*i-1] 注意:下标不能越界,否则可能覆盖其他数据,造成严重后果
一维数组的初始化和赋值
一维数组的初始化
• 定义数组之后,与普通变量一样,数组是沒有 初始值的,各存储单元的值都是不定的
• 初始化:定义数组的同时赋初值
• 语法: 数据类型说明符 数组名[长度]={数值1,数值 2,…}; 如 : int data[5]={1,2,3,4,5};
例:a={1,3,5,7,9}; 错误,应单独为每个元素赋值 例:a=1; 错误,应单独为每个元素赋值 对数组的整体赋值只能在初始化时进行
一维数组的遍历
从键盘输入5个整数,保存到数组a中;再逆序输出。
main()
{
int a0,a1,a2,a3,a4;
scanf(“%d”,&a0);
scanf(“%d”,&a1);
scanf(“%d”,&a2);
scanf(“%d”,&a3);
scanf(“%d”,&a4);
printf(“%d\n”,a4);
printf(“%d\n”,a3);
printf(“%d\n”,a2);
printf(“%d\n”,a1);
printf(“%d\n”,a0);
}
main()
{
int a[5];
(3)不能对整个数组初始化; int data[5]=1; 错误,应为: int data[5]={1,1,1,1,1};
一维数组的赋值
• 数组的赋值只能对数组元素单独操作, 不能对数组整体操作。
• 赋值的两种方式:int a[5]; 1. 赋值运算符 如:a[3]=8; 2. 输入函数 如:scanf(“%d”,&a[3]);
outputScore(score,10);
//函数调用
}
void outputScore(int a[ ],int length) {
int i=0;
//函数定义
printf("学生成绩如下:\n"); for(i=0;i<length;i++)
printf("%d %-3d\n",i+1,a[i]); printf("\n"); }
相关文档
最新文档