实验七 一维数组的应用
- 格式:doc
- 大小:68.50 KB
- 文档页数:3
实验七数组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 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。
实验报告课程名称程序设计实验项目名称数组班级与班级代码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 一维数组的应用一、实验目的(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.掌握一维数组的应用(排序、查找、插入和删除)。
【实验内容】一、定义一个一维数组,可以存放10位同学的成绩,对成绩进行初始化,计算出总分和平均成绩,并输出到显示器上。
程序分析:定义一个长度为10的数组s[10],运行循环对其进行初始化(输入),定义另变量sum和ave存放总分和平均分。
程序代码:附上自己的程序二、输入一个整数,将其插入一含有9个数的有序序列中,确保插入后其仍然有序,。
1、算法分析:①将待插入的数与序列中的每个数进行比较,找到其插入的具体位置i;②将从第i个数组元素开始,一直到原数组中的最后一个元素,整体往后移,空出一空间来存储待插入的整数。
2、程序代码:#include "stdio.h"void main(){int a[10]={2,5,7,11,14,19,21,33,67};int i,k,m;printf(“Array :”);for(i=0;i<9;i++)printf(“%4d”,a[i]);printf(“\nPlease input the keyword:”);补充自己的程序}【实验分析与讨论】1、分析基本排序算法。
2、对有序数组进行插入、删除、查找操作的实现。
【DIY】一、改错:往一个递增的数列中插入一个数。
#include "stdio.h"void main(){int a[11],i=0,key,j;printf("please enter ten numbers\n");for(i=0;i<10;i++)scanf(“%d”,a[i]);printf(“please enter a number\n”);scanf(“%f”,&key);for(i=0;i<10;i++)if(key>a[i-1]||key<a[i])for(j=11;j>i;j--)a[j]=a[j-1];a[i]=key;for(i=0;i<11;i++)printf(“%d”,&a[i]);}。
一维数组应用实验过程中遇到的问题及解决哎呀,今天我们来聊聊一维数组应用实验过程中遇到的问题及解决方法吧!这个问题可不简单,咱们得好好探讨探讨。
我们要知道一维数组是啥?简单来说,就是一堆数字按照顺序排在一起,就像我们排队买东西一样,先进先出嘛!那么,一维数组有哪些应用呢?比如说,我们可以用它来记录同学们的身高、体重、年龄等信息,还可以用它来模拟股票市场的走势等等。
但是,在实际操作过程中,我们可能会遇到一些问题,下面我就来给大家讲讲这些问题及解决方法。
我们来看看第一个问题:如何创建一个一维数组?这个问题可不能小觑哦,因为如果我们连一维数组都创建不好,后面的实验可就没法进行了。
其实,创建一维数组的方法有很多种,比如说我们可以直接用数组字面量来创建,也可以用new Array()来创建。
这里我给大家举个例子吧:```javascript// 使用数组字面量创建一维数组var arr1 = [1, 2, 3, 4, 5];// 使用new Array()创建一维数组var arr2 = new Array(1, 2, 3, 4, 5);```看到这里,大家是不是觉得很简单呢?不过,接下来还有一个问题可能会困扰大家:如何给一维数组赋值?这个问题可就有点难度了,因为我们要确保赋值的顺序和元素的位置是一致的。
不过别担心,这个问题也有解决办法。
我们可以使用下标来给一维数组赋值,例如:```javascript// 给一维数组arr赋值arr[0] = 1;arr[1] = 2;arr[2] = 3;arr[3] = 4;arr[4] = 5;```好了,现在我们已经知道如何创建和赋值一维数组了。
那么接下来我们来看看第二个问题:如何遍历一维数组?这个问题可是非常重要的哦,因为只有掌握了遍历方法,我们才能更好地操作和利用一维数组。
遍历一维数组的方法有很多种,比如说我们可以使用for循环来遍历,也可以使用forEach()方法来遍历。
实验七一维数组的应用
实验时间: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、冒泡法排序和选择法排序的基本思想是什么?。