第7章 一维数组应用 1
一维数组应用 c语言 精品教案
一维数组应用 c语言精品教案下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!一维数组应用 C语言精品教案一维数组是 C语言中非常重要且常用的数据结构。
C_C++语言程序设计基础-7-1一维数组
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
掌握一维和二维数组的定义和数组元素的引用方法(精)
static int arr[3][2]={{1, 2},{3}}; /*采用第①种赋初值方式*/ static int arr[3][2]={ 1, 2, 3}; /*采用第②种赋初值方式*/ 上面二种对数组arr部分元素赋初值的结果是相同的, 都是对数组arr的前面3个元素赋初值,后面叁个元素未 赋初值,系统自动化赋以0值。
12
§7.2 二维数组的定义和引用
在计算机中多维数组其实只是一个逻辑上的概念,在内 存中,多维数组只按元素的排列顺序存放,形成一个序 列,就好似一维数组一样。 §7.2.1 二维数组的概念
二维数组的应用很广,例如平面上的一组点的集合就可 用二维数组表示,平面上的点可用二维数组来表示:
08:47
13
⑦元素个数代表着数组的长度。
08:47 5
§7.1.2 一维数组使用
数组一经定义后,就可在程序中使用,使用格式如下: 数组名[下标] 例如 : var[3]=28; var[4]=var[2]; str[3]= ‘d’; str[2]=str[4]; printf(“%d”, a[0]); 说明: ①下标可以是整数或整型表 达式 。如:var[i+j]=2; ②C编译不检查下标是否 “出界”。
下标的值不应超过数组的长度,如var数组的长度为5, 则下标的取值在0~4的范围内。
08:47 6
【例7-1】 一维数组在程序中的使用
/*exam7_1.c 一维数组在程序中的使用*/ #include <stdio.h> main() { int i,a[5]={1,2,3,4,5}; /*初始化数组*/ printf("输出数组元素的正确值: \n"); for(i=0;i<5;i++) printf("%d\t",a[i]); printf("\n输出超出下标的元素的值:\n"); for(i=5;i<10;i++) /*使用超出下标的元素*/ printf("%d\t",a[i]); printf("\n改变数组元素的值:\n");
C语言程序设计:第7章 一维数组
int arr[ARR_SIZE];
{
int i = 0;
int i = 0;
float aver = 0;
float ave = 0;
for(i=0;i<ARR_SIZE;i++)
for(i=0;i<len;i++)
{
{
printf("请输入第%d个整数:",i+1);
//把数组中的所有数据加起来
{
printf("第%d 个数是:%d\n", i + 1, a[i]);
}
return 0; }
19
本次课议题
❖一维数组的定义 ❖一维数组的初始化 ❖一维数组的存储 ❖一维数组的引用 ❖一维数组作为函数参数
20
一维数组作为函数参数
1>数组作为函数参数可以理解为形参数组和实参数组共享
一块内存空间,形参数组的长度可以省略,编译器不会检查。
注意:
如有数组int arr[N];则数组的下标为:0 ~ N-1,
即最大的下标为数组长度-1。
17
一维数组的引用(cont...)
课堂练习:编写程序从键盘上接收10个整数存到一个一维数组中,之后
在屏幕上逐个输出这10个数。
#include <stdio.h>
#define ARR_SIZE 10
scanf("%d",&arr[i]);
ave += a[i];
}
}
aver = avg(arr,ARR_SIZE);
//平均值=总值/总个数;
printf("平均值是:%f\n",aver);
实验7 一维数组的应用
实验7 一维数组的应用一、实验目的(1)掌握一维数组的定义及初始化方法。
(2)掌握利用一维数组解决问题的常用编程方法。
二、实验内容1.把一个一维数组中所有的奇数放在另一个数组中并输出,一维数组的数据由初始化方式提供。
在编写源程序前请思考如下问题:算法描述:(1)先定义两个大小相同的数组a和b,并将第一个数组初始化(2)分别用两个变量i和j控制两个数组的下标值的变化,初始值都为0 (3)用循环对a数组的每个元素依次进行处理,如果a[i]是奇数,则将a[i]赋给b[j],同时让i加1、j也加1,否则只让i加1,继续对下一个元素进行处理。
#include<iostream>using namespace std;int main(){int a[10],b[10],i,j;cout<<"请输入十个数:"<<endl;for(i=0,j=0;i<10;i++,j++){cin>>a[i];if(a[i]%2==1){b[j]=a[i];cout<<"输入的奇数是:"<<b[j]<<endl;}elsecout<<"没有输入奇数"<<endl;return 0;}}2.将一维数组中的每一个元素向后移动一个位置,最后的元素移到第一个位置。
数组大小由一个符号常量N决定,数组元素的值由随机函数产生。
Rand算法描述:先数组最后一个元素保存在一个临时变量中,然后将倒数第二的元素移到最后一个位置上,再将倒数第三的元素移到倒数第二的位置上,依此类推,最后保存在临时变量中最后元素移到第一的位置。
3.使用键盘为一维数组输入10个整数,然后输出数组的所有元素、并输出最大值、最小值和平均值。
算法描述:找最大数的算法类似于打擂台,先定义一个变量max用来在放最大数(充当擂台),开始假设第一个数就是最大数,然后其后的数依次和max中的数进行比较,如果比max中的数大则取代它,否则max中的数不变,最后留在max中的数就是最大数。
第7章 一维数组应用
第七章 数组
例如:一维数组: 例如:一维数组: mark[100]; float mark[100]; 低地址 每个数据元素占用 的字节数,就是基 的字节数,就是基 类型的字节数 类型的字节数 一个元素占4个 一个元素占 个字节
高地址
86.5 92.0 77.5 52.0
. . . 94.0
mark[0] mark[1] mark[2] mark[3]
第七章 数组
第7章 数组
7.1 一维数组
7.1 一维数组 数组是一组有序数据的集合 有序数据的集合, 数组是一组有序数据的集合,数组中每一个元 素的类型相同 类型相同。 数组名和下标来唯一确定数 素的类型相同。用数组名和下标来唯一确定数 组中的元素。 组中的元素。 7.1.1 一维数组的定义(先定义后使用)全部元素均指定初值,定义中可以省略元素的个数, 如果全部元素均指定初值,定义中可以省略元素的个数, 可以省略元素的个数 例: static int a[5] = {1,2,3,4,5}; 可以写为: 可以写为: static int a[ ] = {1,2,3,4,5}; 两种写法一样效果, 两种写法一样效果,系统会自动根据元素的个数来确定数组的 大小,但是如果是局部制定元素值则不能省略长度值。例如: 大小,但是如果是局部制定元素值则不能省略长度值。例如: {1,2,3};不可以写为 不可以写为: static int a[5] = {1,2,3};不可以写为: {1,2,3};这样系统会自动根据初始值 static int a[ ] = {1,2,3};这样系统会自动根据初始值 个数来认为数组只含有三个元素,即默认其长度为3 个数来认为数组只含有三个元素,即默认其长度为3。 5、与给变量初始化不同的是给数组初始化只能在定义时进行, 与给变量初始化不同的是给数组初始化只能在定义时进行, {1,2,3};不能写成 不能写成: 如: static int a[5] = {1,2,3};不能写成: static int a[5]; a[5] = {1,2,3};(因为a[5]指单个元素) {1,2,3};(因为a[5]指单个元素) a[5]指单个元素
一维数组的定义和引用
• unsigned int *p; p=sing; while (*p) { sound(*p++); delay(*p++);
nosound(); } }
§7.2 二维数组的定义和引用
• 7.2.1 二维数组的定义与引用
类型说明符 数组名[常量表达式][常量表
达式]
说明:元素的排列顺序是
按行存放的,这在数组初始化和指针表
9 8 8 8 8 8 8 5 55 5
8 9 5 5 5 5 5 8 44 4
5 5 9 4 4 4 4 4 82 2
4 4 4 9 2 2 2 2 28 0
2 2 2 2 9 0 0 0 00 8
0 0 0 0 09
输入n个数给a[1]到a[n] For j=1 to n-1
For i=1 to n-j
• 表示形式: 数组名[下标] • 下标可以是整型常量或表达式。例如: • a[0]=a[5]+a[7]-a[2*3]
• EG: main( ) {
• int i, a[10] ; • for (i=0;i<=9;i++) • a[i]=i ; • for (i=9;i>=0;i– –) • printf(“%d”,a[i]); •} • 运行结果: • 9876543210
1 000 5600 0000
•int a[3[4]={{1},{},{6}};
1000 0000 6000
4.若对全部元素赋值,第一维的长度可省略, 但第二维的长度不可省.
static int a[2][2]={1,2,3,4}; 等同于 static int a[ ][2]={1,2,3,4};
C语言一维数组的定义和引用数组
printf("a[%d][%d]=%f\n",i,j,a[i][j]);}
}
3.多维数组的定义和在内存中的存放顺 序:
如 int a[2][3][4]; 共24个元素,在内存中排列的顺序是 :第三维变化最快,然后是第二维,第 一维最慢。
7.2.2 二维数组的引用 形式:数组名[下标][下标] 其中:下标是整型或字符型的常量,变量或表 达式。(定义时不能使用变量)
运行:input 6 numbers: 输入:9 8 5 4 2 0 输出:0 2 4 5 8 9
7.2 二维数组的定义和引用 7.2.1 二维数组的定义 1.一般形式:类型说明符 数组名[常量表达式][常量 表达式]
如:float a[3][4] 定义数组a具有三行四列 在C中,可将二维数组看着是特殊形式的一维数组。
int a[5] a[0], a[1], a[2], a[3], a[4] 5个元素 ,下标从0 ~ 4
注意:
在Turbo C 中超过定义的数组下标元素是可以引用的,系 统不作检查。
例T7-0-1.c
main( )
{int i, a[5];
for(i=0;i<=4;i++)
printf (a[%d]=%d\ n,i,a[i]=i+1);
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; r=i;c=j}
1 2 34 a= 9 8 7 5
《一维数组的应用》授课课件
数组的下标都有一个范围,即“0~[数组长度-1]”
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
array[0]=1;
int[] array={1,1,2,……};
教学过程 ON 案例导入 任务1 任务二:计票
任务一:写票
☺ 介绍候选人
任务2
任务3 评价总结 布置作业
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
10个 变量
int a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
一维数组的定义
int[] array=new int[10];
教学过程 ON 案例导入 任务1 任务2 任务三:找最高票
比较a1,a2,a3的大小
任务3 评价总结 布置作业
1
比较a1和 a2,找出
较大值
2
用较大值 与a3比较
3
找到最大 值
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
任2
任务3 评价总结 布置作业
教学过程 ON 案例导入 任务1 任务2 任务3 评价总结 布置作业
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
遍历
如果有人投1 1号候选人的票数+1
for(i=0;i<10;i++) {}
if(a[i]==1) a1++;
数组的基本概念一维数组二维数组字符数组数组的应用举例
但变量间不存在确定的相互关系。
数组的概念引入
用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进行排序。
3 名?
30 名?
数组的基本概念
数组:一种常用的构造型数据类型。 由具有固定数目 相同类型 的元素按一定顺序排列。
特点: 1、数组元素的个数是确定,不可改变,元素值可变 2、数组元素的类型必须相同,不允许混合。
判断
错误: int n=5; int a[n]; 正确: #define N 5 int a[N];
正确: int a[10], b[5][4]; char name[8], ch[2][3]; float x[8*2+1], table[2][3][4]; #define NUM 40; int a[NUM], b[NUM+2];
比较n-2次
这种排序方法之所以叫“冒泡法”,是因为在排序过程 中,较小的数象气泡一样逐渐往前冒(向上冒),大的 数逐渐向后沉,最终完成排序。
起泡排序
对具有n个元素的序列按升序进行起泡排序的步骤: • 首先将第一个元素与第二个元素进行比较,若为 逆序,则将两元素交换。然后比较第二、第三个 元素,依次类推,直到第n-1和第n个元素进行了 比较和交换。此过程称为第一趟起泡排序。 经过第一趟,最大的元素便被交换到第n个位置。 • 对前n-1个元素进行第二趟起泡排序,将其中最大 元素交换到第n-1个位置。 • 如此继续,直到某一趟排序未发生任何交换时, 排序完毕。对n个元素的序列,起泡排序最多需要 进行n-1趟。
定义时赋值
1、对数组的全部元素赋初值。 int a[3]={3,6,9}; a[0]=3; a[1]=6; a[2]=9; 2、对数组的部分元素赋初值。 int a[4]={3,6,9} ; a[0]=3; a[1]=6; a[2]=9; a[3]=0; 3、对全部数组元素赋初值时,可以不指定数组长度。但若提供 初值的个数与定义的数组长度不一样,则数组长度不能省略。 int a[]={3,6,9}; int a[3]; a[0]=3; a[1]=6; a[2]=9;
一维数组应用
一维数组的相关应用1.数组的定义:定义格式:数据类型数组名[数组的长度]其中:数据类型就是前面讲到的int、float、long、double、char等基本类型,当然也可以是我们后面还要介绍的其他类型(此处暂不考虑)。
数组名与普通变量的起名规则是一样的。
但不能与同一函数中的其他任何变量起一样的名字。
数组的长度定义是数组的长度只能是常量或常量表达式,否则就会出现编译错误。
例如:我们要定义一个整型数组,它里面能够存放10个元素,则应该定义成如下形式:int a[10];其他类型的数组与此类似,如:float f1[5], f2[10];long long1[10], long2[50];char ch1[30], ch2[10];也可以采用常量表达式来定义:如#define N 100main() {float num[N]; //定义了具有N个浮点型数据元素的数组,其中N为常量…}以下列举一些关于数组的应用,记住一点,数组的操作跟循环是息息相关的。
一维数组对应单重循环,后面要讲的二维数组对应的是二重循环。
2.给一维数组元素赋值:程序如下#include <stdio.h>main() { myfunc( ); }myfunc( ) {int a[10], i;printf(“input ten int number:\n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i<10; i++)scanf(“%d”, &a[i]);}3.一维数组元素的输出:程序如下#include <stdio.h>main() { myfunc( ); }myfunc( ){int a[10], i;printf(“input ten int number:\n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/ for (i=0; i<10; i++)scanf(“%d”, &a[i]);/*下面的代码,将已经赋值的数组各元素输出到屏幕上*/for (i=0; i<10; i++)printf(“%d “, a[i]);}4.对一维数组元素进行相应处理后再输出。
C语言C++07-1 一维数组
思考
2013-7-30
33
改进的方向
1. 数据的类型改为数组; 2. 数据的输入改为通过for循环初始化; 3. 数据的比较通过for循环实现。是单循 环实现还是双循环实现呢?
2013-7-30
34
分 析:
共有4个数, i为循环的次数, j为比较的次数; i=1 j=3 i=2 j=2 i=3 j=1
2013-7-30 31
main() 将任意五个数从小到大排序。 { int a,b,c,d,e,t; scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); if(a>b) { t=a;a=b;b=t;} if(b>c) { t=b;b=c;c=t;} if(c>d) { t=c;c=d;d=t;} if(d>e) { t=d;d=e;e=t;} printf("no 1:%d,%d,%d,%d,%d\n",a,b,c,d,e); if(a>b) { t=a;a=b;b=t;} if(b>c) { t=b;b=c;c=t;} if(c>d) { t=c;c=d;d=t;} printf("no 2:%d,%d,%d,%d,%d\n",a,b,c,d,e); if(a>b) { t=a;a=b;b=t;} if(b>c) { t=b;b=c;c=t;} printf("no 3:%d,%d,%d,%d,%d\n",a,b,c,d,e); if(a>b) { t=a;a=b;b=t;} printf("no 4:%d,%d,%d,%d,%d\n",a,b,c,d,e); 2013-7-30 32 getch();}
02-一维数组的应用(上)
C语言程序设计第7章数组——一维数组的应用(上)主讲人:王燕C 语言程序设计例1: 从键盘输入一批正整数,求它们的累加和及平均值。
例2: 对整型数组进行逆置,并输出逆置后的结果。
第7章 数组——一维数组典型案例 一维数组的定义: 元素类型名 数组名[常量表达式]例:int a[5];例1:从键盘上输入一批正整数,求它们的累加和,及平均值。
⏹问题分析:☐1)定义长度为N(大于实际个数)的整型数组。
☐2)循环读入一批整数并存于数组中。
☐3)遍历数组,求出累加和。
☐3)输出累加和及平均值⏹代码实现:main(){ int i, a[N],n,sum=0;printf("please input the data:");for(i=0; ;i++){ scanf("%d",&a[i]);if(a[i]<0)break;}n=i;for(i=0; i<n; i++)sum+=a[i];printf("the sum is %d\n",sum);printf("the average is %.2f\n",1.0*sum/n);例2:将数组中的n个整数逆置。
逆置是指将数组中的元素按照与原来位置顺序相反的顺序重新存放。
例如:若原来序列为: 3,1,5,2,7逆置后序列为:7,2,5,1,3例2:将数组中的n个整数逆置。
⏹问题分析:☐1)定义长度为N(大于实际个数)的整型数组。
☐2)读入个数n。
☐3)循环读入n个整数并存于数组中。
☐4)遍历数组的一半元素,首尾依次交换。
☐5)输出逆置后的结果。
⏹代码实现:C 语言程序设计 第7章 数组——一维数组典型案例 main() { int i, n, arr[50], t;printf("Please input the size of array:\n"); scanf("%d", &n);printf("\nPlease input %d integers:\n",n); for(i=0; i<n; i++)scanf("%d", &arr[i] );for(i=0; i<n/2; i++) /*从前到后逆置的数组*/ { t=arr[i];arr[i]=arr[n-i-1];arr[n-i-1]=t;}for(i=0; i<n; i++) /*输出逆置后的数组*/ printf("%d ", arr[i] );C语言程序设计谢谢大家!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章 数组
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; }
x++; else if (a[i]==0) y++; else z++; } printf (“%d\t%d\t%d”,x,y,z); }
运行结果: 运行结果: 3 2 5
第七章 数组
2、下列程序是对一维数组的10个元素的前五个与后五个首尾对换即 、下列程序是对一维数组的 个元素的前五个与后五个首尾对换即 a[0]与a[9] 、a[1]与a[8]……a[4]与a[5],请阅读程序并补充程序。 与 与 与 ,请阅读程序并补充程序。 void main ( ) { int i, t,a[10]={3,5,7,9,11,18,16,14,12,10}; for (i=0;i<10;1++) printf (“a[%d]=%-4d”,i,a[i]); printf (“\n”); for ( i=0 ; i<=4 ; i++ ) 循环体部分 { ; t=a[i]; 为a[i]与a[9与 ; a[i]=a[9-i]; 1]交换的语 交换的语 a[9-i]=t; ; } 句 for (i=0;i<10;1++) printf (“a[%d]=%-4d”,i,a[i]); }
第七章 数组
main ( ) { int a[N],i,r,step; for (i=0;i<10;i++) { /******************found*******************/ scanf (“%d”,a[i]); } &a[i] r=fun(a); if (r!=-1) { step=a[r]; a[r]=a[0]; a[0]=step; } for (i=0;i<10;i++) printf (“%d”,a[i]); printf (“\n”); return 0; }
第七章 数组
使数组元素a[0] a[9]的值为 a[0]~ 的值为0 然后逆序输出。 [例6.1] 使数组元素a[0]~a[9]的值为0~9,然后逆序输出。 main() { int i,a[10];/*定义一个含有 个元素的 数组 定义一个含有10个元素的 数组*/ 定义一个含有 个元素的a数组 for (i=0;i<=9;i++) a[i] = i; /*用for循环定义一个含有 个元素的a数组 用 循环定义一个含有10个元素的 数组 循环定义一个含有 个元素的 */ for(i=9;i>=0; i--) /*用for循环逆序输出 数组 个元 循环逆序输出a数组 用 循环逆序输出 数组10个元 素*/ printf("%d ",a[i]); } 运行结果: 运行结果: 9 8 7 6 5 4 3 2 1 0
for (i=2;i<lim;i++) { for (j=2;j<i;j++) if (i%j==0) break; if (j>=i) a[n++]=i; } return n;
/*****************end**************** limit,i,sum,aa[MAX]; clrscr (); printf (“please input alnteger: ”); scanf (“%d”,&limit); sum=fun(limit,aa); for (i=0;i<sum;i++) { if (i%10==0&&i!=0) printf (“\n”); printf (“%5d”,aa[i]); } getch (); }
分析如下: 分析如下:
第七章 数组
分析: 分析: 1、看交换规律: 、看交换规律: a[0]与a[9] ,a[1]与a[8] ,a[2]与a[7] ,a[3]与a[6] ,a[4]与a[5] 。 与 与 与 与 与 2、看下标变化规律,0对9,1对8,2对7,3对6,4对5看出交换的 、看下标变化规律, 对 , 对 , 对 , 对 , 对 看出交换的 之和为一个常数9, 交换。 元素下标 之和为一个常数 ,故a[i]与a[9-i] 交换。 与 3、看下标变化与元素个数的关系:共10个元素需交换 对,i从0变 、看下标变化与元素个数的关系: 个元素需交换5对 从 变 个元素需交换 化到4,即变化的次数与元素个数n关系为 关系为: 到 化到 ,即变化的次数与元素个数 关系为:i=0到i<=n/2-1. 4、从看程序中看考点。main中第一个 的作用是打印原始数组, 、从看程序中看考点。 中第一个for的作用是打印原始数组 中第一个 的作用是打印原始数组, 第二个for实现前 个元素与后5个元素进行首尾互换故填空为 实现前5个元素与后 第二个 实现前 个元素与后 个元素进行首尾互换故填空为 (i=0;i<=4;i++) for循环体中应该是当前 对应的元素 与a[9-i]的交换语句,以t作 循环体中应该是当前i对应的元素 的交换语句, 作 循环体中应该是当前 对应的元素a[i]与 的交换语句 为中间变量。 第三个for把交换后的 为中间变量。故: t=a[i]; a[i]=a[9-i]; a[9-i]=t;第三个 把交换后的 数组再打印一次。 数组再打印一次。 根据分析结果,填写程序: 根据分析结果,填写程序: