实验七 一维数组的应用

合集下载

一维数组应用实例

一维数组应用实例

数组特点
Visual Basic 程序设计
1)、数组是一组相同类型的元素的集合;
2 )、数组中各元素有先后顺序,它们 在内存中按排列顺序连续存储在一起;

3 )、所有的数组元素是用一个变量名命名的一个 集合体,而且每一个数组元素在内存中独占一个内 存单元,可视为同一个内存变量。为了区分不同的 数组元素,每一个数组元素都是通过数组名和下标 来访问的,如A(1,2),B(5)。
A = Split(Text1.Text, “,”) N = UBound(A) Total = 0 MaxNum = Val(A(0))

MinNum = Val(A(0))
Visual Basic 程序设计
Visual Basic 程序设计
Visual Basic 程序设计

1、一维数组: 一个数组若只有一个下标就能确定一个数组元素的数组中的位置


定义形式:
Dim 数组名([下标下界 To ]下标上界 ) As 类型名称


如:Dim
a(1 to10) as integer
Dim b(10) as integer
Visual Basic 程序设计
Visual Basic 程序设计
一维数组 应用实例
实例一 分类统计
解题思路:定义一个有11个元素的一维数组a( 0 to 10), a(0):0-9分的学生人数; a(1):10-19分的学生人数; a(2):20-29分的学生人数; … a(9):90-99分的学生人数; a(10):100分的学生人数;

[下界1 To] 上界1,[下界2 To] 上界2,…
Visual Basic 程序设计

一维数组的应用举例:排序问题

一维数组的应用举例:排序问题
10
C语言程序设计
C语言程序设计
一维数组的应用举第例五:排章序问数题 组
数据的排序就是将一批数据由小大到(升序)或由 大到小(降序)进行排列。常用的有选择法、冒泡法。 1.选择法排序
算法 (升序 )
( 设有n个数,存放在数组A(1)…..A(n)中)
1)第1遍:从中选出最小的数,与第 1个数交换 位置;
(演示)
753 8 91 6 4
后面,经n-1次两两相邻比较后,最大的数已交换
到最后一个位置。
演示
2)第 2 趟:将前n-1个数(最大的数已在最后)按 上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较,
在第j趟中要进行n-j次两两比较。
7
一维数组的应用举例:排序问题 冒泡法排序算法的流程图:
scanf("%d",&a[i]);
for(i=0;i<N-1;i++)
/*第i遍*/
for(j=0;j<N-i-1;j++)
/*相邻2个数比较*/
if(a[j]>a[j+1])
/*如果a[j]>a[j+1]*/
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
/*交换a[j]和a[j+1]*/
printf("input %d numbers:\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]); for(i=0;i<N-1;i++)
ቤተ መጻሕፍቲ ባይዱ

C语言实验报告数组

C语言实验报告数组

实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。

实验七 一维数组的使用

实验七 一维数组的使用
实验卡
课程名称
程序设计基础(C)
班级
09给排水、09城规
09土木(3)
顺序号
7
实验名称
实验七一维数组的使用
实验目的
1.理解一维数组的定义、类型、数组元素和下标的概念
2.掌握一维数组的声明、初始化和数组元素访问的方法
实验内容
1、定义一个一维数组,类型为整型长度为10.要求从键盘输入10个整数到数组,并打印(要求分别按照下标从小到大和下标从大到小打印出对应的数组元素)。
2、编程实现在一维整型数组中输出、验证教材例4-1、例4-2、例4-3
4、编写一个程序,计算若干学生的某门功课的平均成绩,找出最高分和最低分。
5、教材第75页2、4
实施情况
备注

c语言实验7数组实验报告

c语言实验7数组实验报告

实验报告课程名称程序设计实验项目名称数组班级与班级代码14级计算机科学与技术1班实验室名称(或课室) SS1-332专业计算机科学与技术任课教师学号:姓名:实验日期:2014年月日广东商学院教务处制一.实验目的1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。

2.熟练掌握字符数组和字符串函数的使用。

3.熟练掌握一位数组以及一位数组元素的存储关系。

4.熟练掌握一位数组和二维数组的使用以及在函数中的传递。

5.通过上机实践掌握与数组有关的算法。

二、实验内容上机题1输入并运行以下程序。

实验内容:用2个数组对第3个数组进行赋值#include<stdio.h>main(){int i,a[5],b[5],c[5];a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for(i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}实验步骤○1int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。

a[0]~a[4]也可以看成是变量标识字符,[]中的数值称为数组下标,下标从0开始。

○2数组赋值方法和一般变量一样。

例如,a[0]=2表示将2赋给a[0]。

运行结果上机题2 输入并运行以下程序。

实验内容:对不指明数组的数组进行赋值并用循环结构进行求和#include<stdio.h>main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6};sum=0;for(i=0;i<=10;i++)sum+=a[i];printf("sum=%d\n",sum);}实验结果实验小结○1对全部元素赋初值时,可以不指定数组长度,C编译系统自动根据初值个数来决定数组长度。

第7章 一维数组应用

第7章 一维数组应用

第七章 数组
但是不能简写为: 但是不能简写为: static int a[10] = {0*10}; 注意:当程序不给数组指定初始值时, 注意:当程序不给数组指定初始值时, 编译器作如下处理: 编译器作如下处理: (1)编译器自动把静态数组的各元素初 始化为0 始化为0。 (2)编译器不为动态数组自动指定初始 值。
第七章 数组
特别强调:
1.
2.
3. 4.
在运行C语言程序过程中,系统并不自动检验 并不自动检验数组元 在运行 C 语言程序过程中,系统 并不自动检验数组元 素的下标是否越界 因此在编写程序时, 越界。 素的下标是否越界。因此在编写程序时,保证数组下 标不越界是十分重要的。 标不越界是十分重要的。 个数组元素,实质上就是1个变量, 1 个数组元素 , 实质上就是1 个变量 ,它具有 和相同 类型简单变量一样的属性, 类型简单变量一样的属性,可以对它进行赋值和参与 各种运算。 各种运算。 语言中,数组作为1个整体,不能参加数据运算, 在C语言中,数组作为1个整体,不能参加数据运算, 单个的元素进行处理 只能对单个的元素进行处理。 只能对单个的元素进行处理。 通常用数组和循环配合使用,来引用数组元素。 通常用数组和循环配合使用,来引用数组元素。
数组定义的一般形式: 数组定义的一般形式:
数组名[整型常量表达式 整型常量表达式] 类型说明符 数组名 整型常量表达式 例: int a[10]
第七章 数组
表示以下信息: int a[10] 表示以下信息: 定义一个数组,数组名a 10个元素 个元素, 定义一个数组,数组名a,有10个元素,每个元素的类型均为 int。 int。 10个元素分别是 a[0]、a[1]、....、a[8]、a[9]。 个元素分别是: 这10个元素分别是:a[0]、a[1]、....、a[8]、a[9]。 各个数组元素是排成一行 的一组下标变量, 排成一行的一组下标变量 各个数组元素是 排成一行 的一组下标变量 , 用一个统一的 数组名来标识,用一个下标来指示其在数组中的位置。 数组名来标识,用一个下标来指示其在数组中的位置。 说明: 说明: 数组下标从0开始。 数组a的第1个元素是a[0] a[0], 1)数组下标从0开始。如:数组a的第1个元素是a[0],数组 的第8个元素是a[7]数组a[n] 中的元素从a[0]到 a[n-1]共 的第8个元素是a[7]数组a[n] 中的元素从a[0]到 a[n-1]共 a[7]数组 a[0] n个。 2)C语言不允许对数组的大小做动态定义,如: 语言不允许对数组的大小做动态定义, int n; scanf("%d",&n); int a[n]; 因为在编译时, 编译器根据已知数组大小分配内存 编译器根据已知数组大小分配内存, 因为在编译时,C编译器根据已知数组大小分配内存,以后 不再动态调整。 不再动态调整。

实验7 一维数组的应用

实验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中的数就是最大数。

一维数组的定义和使用

一维数组的定义和使用

一维数组的定义和使用一维数组是一种存储相同类型数据元素的线性数据结构。

它的定义形式为:```<数据类型> <数组名>[<数组长度>];```其中,数据类型是指数组中存储的元素类型,数组名是指数组的名称,数组长度是指数组中元素的个数。

一维数组的使用包括数组的初始化、元素的访问和修改等操作。

1. 数组的初始化可以分为静态初始化和动态初始化两种方式:- 静态初始化:直接给数组元素赋初值,如`int[] arr = {1, 2, 3, 4, 5}`;- 动态初始化:先声明数组,再给数组元素赋值,如`int[] arr = new int[5]; arr[0] = 1; arr[1] = 2; ...`。

2. 元素的访问和修改可以通过数组下标来进行操作:- 访问数组元素:使用数组下标来获取数组中的元素值,下标从0开始,如`int value = arr[0]`;- 修改数组元素:使用数组下标来修改数组中的元素值,如`arr[0] = 10`。

下面是一个示例代码,演示了一维数组的定义和使用:```javapublic class ArrayExample {public static void main(String[] args) {// 静态初始化int[] arr1 = {1, 2, 3, 4, 5};// 动态初始化int[] arr2 = new int[5];arr2[0] = 10;arr2[1] = 20;arr2[2] = 30;arr2[3] = 40;arr2[4] = 50;// 访问数组元素System.out.println("arr1[0] = " + arr1[0]); System.out.println("arr2[2] = " + arr2[2]); // 修改数组元素arr1[0] = 100;arr2[2] = 300;System.out.println("arr1[0] = " + arr1[0]);System.out.println("arr2[2] = " + arr2[2]); }}```输出结果:```arr1[0] = 1arr2[2] = 30arr1[0] = 100arr2[2] = 300。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七一维数组的应用
实验时间:2010年11月19日
【实验目的】
1、掌握一维数组的定义、赋值和输入、输出的方法;
2、能用循环处理数组,用数组存储数据;
3、掌握与数组应用有关的算法(例如求最大值、最小值算法,冒泡法排序算法、选择法排序算法等)。

【实验内容】
1、一维数组的定义、赋值、输入和输出;
2、用循环处理数组,数组元素的引用;
3、数组的应用:求最大值、最小值问题,冒泡法排序,选择法排序。

【实验步骤】
一、在E或F盘上建立以自己的学号命名的文件夹。

二、上机验证题
1、分析以下程序,写出运行结果。

/* 文件名:ex7_1.c */
#include <stdio.h>
#define N 10
main ( )
{
int k;
float a[N],av,s;
s=0.0;
printf("请输入10个数:\n");
for (k=0; k<N; k++) /* 输入N个数,存放到a数组中,并求和 */ {
scanf("%f",&a[k]);
s=s+a[k];
}
av=s/N; /* 求N个数的平均值并输出 */
printf("average=%.2f\n",av);
for (k=0; k<N; k++) /* 输出大于平均值的数 */
if (a[k]>av)
printf("%.0f\t",a[k]);
}
2、分析以下程序,写出运行结果
/* 文件名:ex7_2.c */
#include <stdio.h>
main ( )
{
int a[10],i,max,min,maxpos,minpos;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
max=min=a[0];
maxpos=minpos=0;
for(i=0;i<10;i++)
{
if(max<a[i])
{
max=a[i];
maxpos=i+1;
}
else if(min>a[i])
{
min=a[i];
minpos=i+1;
}
}
printf("max=%d,pos=%d\n",max,maxpos);
printf("min=%d,pos=%d\n",min,minpos);
}
3、分析以下程序,写出运行结果。

/* 文件名:ex7_3.c */
#include <stdio.h>
main ( )
{
char str[20];
int i,num;
gets(str);
if(str[0]!=' ')
{
num=1;
}
else
{
num=0;
}
for(i=1;str[i]!='\0';i++)
{
if(str[i]!=' ' && str[i-1]==' ')
{
num++;
}
}
printf("num=%d\n",num);
}
三、编程题:
1、在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。

源程序以ex7_4.c保存在自己的文件夹内。

(可以用冒泡法排序,也可以用选择法排序)
2、青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。

源程序以ex7_5.c保存在自己的文件夹内。

3、已知5名学生的学号和4门课的成绩,试求个人平均成绩和各门课的平均成绩。

源程序以ex7_6.c保存在自己的文件夹内。

【实验小结】
应知:
1、数组的概念及数组元素的引用;
2、数组的地址及数组元素的存储形式;
3、冒泡法排序和选择法排序的基本思想。

应会:
1、一维数组的定义、赋值、输入与输出;
2、用循环结构处理数组的方法;
3、一维数组应用有关的算法(求最大值、最小值问题,冒泡法排序,选择法排序)。

【实验思考】
1、何谓数组?它有何特点?如何定义说明和使用?
2、数组元素的赋值、输入与输出,通常采取什么方法?
3、冒泡法排序和选择法排序的基本思想是什么?。

相关文档
最新文档