实验五 数组_2010
数组及应用实验报告

一、实验目的1. 理解数组的定义和概念,掌握数组的声明、初始化和访问方法。
2. 掌握一维数组和二维数组的操作,包括元素的赋值、排序、查找等。
3. 熟悉数组在实际编程中的应用,如排序算法、查找算法等。
4. 培养解决实际问题的能力,提高编程水平。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C/C++三、实验内容1. 一维数组的声明、初始化和访问2. 一维数组的排序(冒泡排序、选择排序、插入排序)3. 一维数组的查找(线性查找、二分查找)4. 二维数组的声明、初始化和访问5. 二维数组的操作(求和、求平均值、查找最大值和最小值)6. 数组在实际编程中的应用(如冒泡排序算法实现、字符串匹配)四、实验步骤1. 一维数组的声明、初始化和访问(1)声明一个整型一维数组,如int arr[10];(2)初始化数组,如arr[0] = 1, arr[1] = 2, ...;(3)访问数组元素,如printf("%d", arr[i]);2. 一维数组的排序(1)冒泡排序:比较相邻元素,如果逆序则交换,重复执行,直到排序完成。
(2)选择排序:每次选择未排序部分的最小(或最大)元素,放到已排序部分的末尾。
(3)插入排序:将未排序的元素插入到已排序部分的合适位置。
3. 一维数组的查找(1)线性查找:逐个比较数组元素,找到目标元素则返回其位置。
(2)二分查找:在有序数组中,先确定中间元素,再与目标元素比较,根据比较结果缩小查找范围。
4. 二维数组的声明、初始化和访问(1)声明一个整型二维数组,如int arr[3][4];(2)初始化数组,如arr[0][0] = 1, arr[0][1] = 2, ...;(3)访问数组元素,如printf("%d", arr[i][j]);5. 二维数组的操作(1)求和:遍历二维数组,将所有元素相加。
C语言实验五实验报告——数组

C语言实验五实验报告——数组一、实验目的:1.了解数组的概念和基本使用方法;2.掌握一维数组和二维数组的定义、初始化、赋值及基本运算实现;二、实验内容与方法1.理论部分数组是一些具有相同类型的数据元素按一定顺序排列组合而成的集合,在程序设计中它是一个变量列表,由若干相同数据类型的元素组成。
通常用一个名字和一个下标来表示,下标可理解为数组元素在数组中的位置编号。
数组的特点:数组是根据顺序排列的元素的集合;所有的元素必须是相同类型。
数组的定义方法:1. 定义数组,数组元素类型 + 数组名[元素的个数];2. 元素的个数必须是整型常量或变量,定义时必须明确、指定元素的个数;3. 声明一个数组时,除了要指定数组的类型外,还要指定数组的名称;4. 数组定义完后,需要对其中的每个元素进行初始化。
可以在定义数组时赋初值,也可以通过赋值符号,对数组元素逐个进行赋值。
数组的初始化:1. 元素个数之间用逗号分开,最后1个元素后无逗号;2. 支持部分元素初始化;3. 定义和初始化可以一步完成。
二维数组数组可分为一维和多维数组。
一维数组可以看作是包含多个元素的向量,而二维数组可以看做是包含了多个一维数组的矩阵。
二维数组有行号和列号,因此,它同样需要两个下标。
数组元素类型数组名[行数][列数];数组元素类型数组名[ ][ ] = { {元素1, 元素2, ……}, {元素1, 元素2, ……}, ……{元素1, 元素2, ……}}2.实验代码**问题1:**定义一个一维数组a,包含有5个元素,分别为1,2,3,4,5;**问题2:**定义一个一维数组a,接收用户从键盘输入的5个数值,分别打印存储的各个元素。
三、实验结果与分析结果分析:定义了一个5个元素的一维数组a,并初始化了各个元素的值,其元素分别为1,2,3,4,5.循环遍历一遍数组a,并打印数组元素。
程序执行正常。
3.针对问题3:定义一个二维数组a,由4行3列组成,每个元素初始化为0,打印存储的各个元素;程序运行结果如下:四、实验总结:该实验主要是通过对C语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
第五组--信号波形合成电路实验(2010年电子竞赛C题论文)2

高,在高压、高频、大功率的场合不适用。 综合以上的分析,由 TI 公司生产的宽带低失真单位增益稳定的电压反馈运算放
大器 OPA842 组成的滤波电路满足本次设计的要求,因此选择方案二。 1.1.3 移相电路
方案一:用双极性运算放大器 OP07 组成的移相电路,由于 OP07 具有非常低的 输入失调电压,所以在很多应用场合不需要额外的调零措施。OP07 是一种低噪声, 非斩波稳零的双极性运算放大器,由它组成的移相电路具有电路简单、工作可靠、成 本低、波形好、适应性强,而且可以提供 180°的相移。
表一:信号编码表
A0
A1
X
1
0
0
1
0
波形 正弦波 方波 三角波
A0、A1 表示波形设定端;X 表示任意状态;1 为高电平;0 为低电平。 74LS14 非门对输出的信号进行整形,使输出的波形更加的理想。 3.1.2 分频电路 分频电路如附录图 3 所示,由 74LS90、74LS00、CD4013 三片芯片组成。先将 300KHz 的方波信号进行 3 分频、5 分频、15 分频,再通过 D 触发器二分频,最终得到 50KHz、 30KHz、10KHz 的正弦波信号。 74LS90 不仅可以用于计数,还能用于分频,一片 74LS90 可构成最大进制计数器 是十进制,若分频数大于 10,则要用两片或多片级联,级联后高位的周期即为分频 后的周期,但占空比并非 50%,这就需要用 D 触发器对分频后的方波进行整形。74LS00 是四集成与非门,在电路中起缓冲隔离的作用。CD4013 是由两个相同的、相互独立 的数据型触发器构成。每个触发器有独立的数据、置位、复位、时钟输入和 Q 及 Q
方案三:用 MAX038 精密、高频波形发生器来产生方波信号,电路结构简单,能产 生 0.1Hz~20MHz 的方波信号,波形的频率和占空比可以由电流、电压或电阻控制 。 MAX038 构成的电路低失真、低漂移、外围元件少、可靠性和稳定性好,但相对于上 面的方案而言,价格会稍高一点。
程序设计实验报告总结.doc

程序设计实验报告总结实验五使用数组的程序设计班级学号姓名一、实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出方法。
(2)掌握字符数组的使用。
(3)掌握与数组有关的算法。
二、实验内容及步骤1、验证性实验输入已编好的源程序,然后进行编辑、编译、连接和运行,观察运行结果。
(1)某数列前两项为0,1,以后各项均为前相邻两项之和,输出该数列前20项。
#include<stdio.h>main(){long i,x[20];x[0]=0;x[1]=1;for(i=2;i<20;i++)x[i] =x[i-1]+x[i-2];for(i=0;i<20;i++)printf("% ld\t",x[i]);}输出结果:(2)从键盘输入N个自然数,然后按升序进行排列。
用;比较法;#include<stdio.h>#define N 10main(){int a[N],t,i,j;for(i=0;i<N;i++) /*本循环输入N个原始数据*/scanf ("%d", &a[i]);for(i=0;i<N-1;i++) /*本循环完成排序*/for(j=i+1;j<N;j++) /* x[i]与它后边所有元素逐一比较,大则交换*/if (a[j]<a[i]) {t=a[j];a[j]=a[i];a[i]=t;}for(i=0;i<N;i++) /* 输出排序后的数组*/printf(" %d",a[i]);}输出结果:2、完成以下程序,并进行调试(1)从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别统计下列内容:a)统计不及格人数并打印不及格学生名单;b)统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单;c)统计各分数段的学生人数及所占的百分比程序代码:#include<stdio.h>int F1(int i,int sum,int *a,int *counter){int j;printf("不及格学生名单:");for(j=1;j<i-1;j++){sum+=a[j];if(a[j]<60){printf("%3d",j);counter[0]++;}}return sum;}F2(int i,float average,int *a,int *counter){int j;printf("average=%f,成绩大于等于平均分的学生名单:",average);for(j=1;j<i-1;j++){if(a[j]>=average){printf("%3d",j);counter[11]++;}}}F3(int i,int *a,int *counter){int j;for(j=1;j<i-1;j++){if(a[j]<=10) counter[1]++;else if(a[j]>10&&a[j]<=20) counter[2]++;else if(a[j]>20&&a[j]<=30) counter[3]++;else if(a[j]>30&&a[j]<=40) counter[4]++;else if(a[j]>40&&a[j]<=50) counter[5]++;else if(a[j]>50&&a[j]<=60) counter[6]++;else if(a[j]>60&&a[j]<=70) counter[7]++;else if(a[j]>70&&a[j]<=80) counter[8]++;else if(a[j]>80&&a[j]<=90) counter[9]++;else if(a[j]>90&&a[j]<=100) counter[10]++;}printf("各分数段人数: 百分比:\n");for(j=1;j<=10;j++)printf("%d %f\n",counter[j],(float)(counter[j])/(i-2)); }main(){static int a[31],counter[12],flag;int i=1,j=1,sum=0;float average;printf("请输入学生成绩并以负值结束: ");do{scanf("%d",&a[i]);if(a[i]<0)flag=1;i++;}while(flag==0);sum=F1(i,sum,a,counter);printf("不及格人数=%d\n",counter[0]);average=(float)sum/(i-2);F2(i,average,a,counter);printf("大于等于平均分人数=%d\n",counter[11]);F3(i,a,counter);}运行结果:(2)编写一个程序,利用字符数组实现两个字符串的比较。
Vb实验五数组的应用

《Visual Basic 6.0程序设计》实验报告(五)一、实验名称:数组的应用(4学时)二、实验目的:1.掌握数组的声明和数组元素的引用;2.掌握静态数组和动态数组的声明和使用;3.学会应用数组解决与数组有关的常用算法问题;4.掌握控件数组的建立和应用。
三、实验环境多媒体计算机WindowsXP操作系统Visual Basic 6.0四、实验内容及实验步骤(或记录)1.输入10名同学的成绩,求平均分、最高分和最低分。
设计步骤如下:①在窗体上添加3个标签(Label1、Label2和Label3)和3个文本框(Text1、Text2和Text3),设计界面如图7.2所示。
各控件的主要属性和作用如表1所示。
控件的属性和作用②编写程序代码如下:Private Sub Command1_Click()Dim Score(1 To 10) As Integer '声明存放成绩的数组ScoreDim i As Integer,Max As Integer,Min As Integer,Average As SingleFor i = 1 To 10 '逐一输入每个同学的成绩Score (i) = Val (InputBox ("输入第" & Str(i)& "个学生的成绩","成绩统计",""))Next iEnd SubPrivate Sub Command2_Click()Dim i As IntegerDim sum As Single, aver As Singlesum = Score (1) ' sum 用于存放总成绩,初值为数组中的第一个元素Max = Score (1) ' 设变量Max的初值为数组中的第一个元素Min = Score (1) ' 设变量Min的初值为数组中的第一个元素For i = 2 To 10 ' 通过循环依次比较,求最大、最小值;求总和If Score(i) > Max Then Max = Score(i)If Score(i) < Min Then Min = Score(i)sum = sum + Score(i)Next iaver = sum / 10 ' 求平均值Text1.Text = Format (Average, "0.00 " ) ' 以两位小数显示平均值Text2.Text = MaxText3.Text = MinEnd Sub2.生成20个0到100之间的随机整数存于数组A,然后将这20个数按递增顺序排序。
数组实验报告

实验四使用数组的程序设计学号姓名一、实验目的1、正确理解数组的概念,熟练掌握一维数组和二维数组的定义和初始化方法。
2、熟练掌握字符数组和字符串的区别和使用、字符串函数的使用。
3、熟练掌握一维数组、二维数组以及字符串的输入和输出方法。
4、了解数组的地址、数组元素的地址及一维数组和二维数组的存储结构。
5、掌握字符窜的结束标志,正确使用字符串的结束标志对字符串进行处理。
6、通过编程和调试程序,加深对数组、字符数组和字符串函数应用的理解。
7、实验前复习数组、字符数组和字符串函数的概念。
二、实验内容1、打印fabonacci数列的前20项,该数列前两项为1,以后各项均为前相邻两项之和。
程序代码:#include "stdio.h"void main(){int a[20],i;a[0]=1;printf("%d\t",a[0]);a[1]=1;printf("%d\t",a[1]);for(i=2;i<20;i++){a[i]=a[i-1]+a[i-2];printf("%d\t",a[i]);}}对程序进行测试,并观察运行结果。
将程序的运行情况写在下面。
『运行结果:』2、从键盘输入一个班学生(最多30人)的成绩,然后按降序进行排列。
程序代码:#include "stdio.h"#define N 30void main(){int a[N],i,t,k=1;printf("请输入30个人的成绩,中间用空格隔开,并按回车结束:\n");for(i=0;i<N;i++)scanf("%d",&a[i]);while(k<N){for(i=N-1;i>0;i--)if(a[i]>a[i-1]){t=a[i];a[i]=a[i-1];a[i-1]=t;}k++;}for(i=0;i<N;i++){printf("%d\t",a[i]);}printf("\n");}对程序进行测试,并观察运行结果。
C语言实验五实验报告——数组

C语言实验五实验报告——数组实验五:数组实验目的:1.掌握数组的定义和使用;2.熟悉数组在函数中的传递;3.练习编写使用数组的程序。
实验原理:数组是一组相同类型的变量的集合,这些变量称为数组的元素。
数组的名字是一个指针常量,它存放的是数组首个元素的地址。
数组元素在内存中是连续存放的,可以通过下标访问每一个元素。
数组的定义:数组的定义格式为:数据类型数组名[数组长度];数组的初始化:数组可以在定义时进行初始化,也可以在定义之后通过赋值进行初始化。
数组作为函数参数:数组可以作为函数的形参进行传递,可以通过指针传递整个数组,也可以传递数组的部分元素。
实验步骤:1.编写一个程序,实现对学生成绩的管理。
要求如下:-使用一个数组保存学生的成绩;-能够动态添加学生的成绩,并显示添加成功的信息;-能够计算学生的平均成绩,并显示;-能够根据用户输入的学号查找对应学生的成绩,并显示。
2.编写一个程序,实现对一组整数进行排序。
要求如下:-首先自定义一个整数数组,数组元素个数为用户输入;-编写一个函数,实现对数组进行排序,要求使用选择排序算法;-在主函数中调用该函数,对数组进行排序后显示。
实验结果与分析:1.学生成绩管理程序运行结果如下:```-------学生成绩管理系统-------[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:90添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:85添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:2平均成绩为:87.5[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:3 [1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:4退出系统。
```2.整数排序程序运行结果如下:```-------整数排序-------请输入待排序的整数个数:6请输入第1个整数:5请输入第2个整数:3请输入第3个整数:9请输入第4个整数:2请输入第5个整数:7请输入第6个整数:1排序前的整数序列为:539271排序后的整数序列为:123579 ```实验总结:通过本次实验,我深入理解了数组的原理和用法,并且掌握了数组在函数中的传递。
2010级用高级语言程序设计实验报告quan

2010级用高级语言程序设计实验报告quan《高级语言程序设计》实验报告实验室名称:班级:学生姓名:学号:指导教师:学期:2009-2010学年上学期实验1 C 程序设计入门一、实验目的1、熟悉C 编程环境2、掌握简单C 程序的编辑、编译和运行方法二、知识要点1、用printf 函数输出指定字符串(转义字符的使用)2、计算并输出表达式的值3、程序书写风格三、实验预习(要求做实验前完成)1、若要在屏幕输出信息,需要用到库函数:2、输出的信息若需换行,需要用到换行符:3、按C 语言语法规则写出下列算法的表达式(1)26乘以49,再除以17:(2)求29除以6的余数:四、实验内容 (要求提供:① 算法描述或流程图② 源程序 )1、编程输出“我的信息”,包括姓名、性别、专业名称和课程名称,格式为:姓名:性别:专业名称:课程名称:2、编程求以下表达式的值:1491516232+-+ 3、编程计算并输出16.8与27.5两个数的和、差、积、商,要求输出界面为:和是:差是:积是:商是:五、实验结果要求写出运行界面并输出运行结果实验2─3 数据类型、常量变量及顺序结构程序设计一、实验目的1、掌握常量和变量的概念以及使用1、掌握变量的定义、赋值与引用2、掌握顺序结构相关语句的使用3、掌握scanf和printf输入、输出数据的方法二、知识要点1、变量与常量概念2、数据输入、输出的格式控制3、标准库函数与头文件的使用4、算术运算与赋值运算5、数据类型转换三、实验预习(要求做实验前完成)1、假如要定义两个整型变量x和y,语句int x y;错在哪里?2、把a的值赋给b,其语句是:3、如果使用语句scanf(“%d%d”,&x,&y);输入8和9两个整数,其输入格式应该是:4、如果使用语句scanf(“%d,%d”,&x,&y);输入8和9两个整数,其输入格式应该是:5、程序中如果要用到库函数sin,则应包含头文件:6、假设x是一个实型变量,语句printf(“%d”,x);错在哪里?7、语句x=10; y=20; printf(“y=%d, x= %d”,x,y); 能否交换x和y的值?四、实验内容(要求提供:①算法描述或流程图②源程序)1、输入两个人的身高,计算并输出他们的平均身高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五 数 组
[实验目的]
1、通过编程及上机调试,掌握数组类型的使用方法。
2、掌握字符数组的使用方法。
3、将数组灵活应用于程序设计中。
[实验内容与步骤]
1、计算、保存和输出Y i
Y X X i i i =+2522s i n()s i n () i=0,2,3,...,9
X i 由键盘输入。
2、某选举活动有五位候选人。
候选人按1~5编号,投票工作是在选票上方标记出某位候选 人的编号即可。
试编写一程序,使用数组变量count 保存并输出每位候选人的得票数。
如果所读取数为-1,读取选票结束;如果所读取数不在1~5的范围内,该选票被视作“废 票”, 程序应可以计算出废票数。
3、读入一串字符,以‘!’结束。
分别统计其中数字0,1,2,...,9出现的次数。
4、输入一串字符,以‘?’结束。
统计各字母出现的次数,并按字母出现的多少输出(先 输出次数多的,次数相同的按字母表顺序输出,不出现的字母不输出)。
例:输入 5B3aA+4-HDEH5DH?
输出 H 3
D 2
A 1
B 1
E 1
a 1
5、输入字符数组,剔除其中所有的字符‘c ’后再输出。
6、编写一个程序,输入两个字符串str1和str2,要求各串中无重复出现的字符,求两者的 交集。
若该交集非空,则输出结果。
7、输出下列形式的杨辉三角形的前10行
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
…
8、输入下述8个国家名字的字符串:CHINA 、JAPAN 、KOREA 、INDIA 、CANADA 、 AMERICA 、ENGLAND 和FRANCE ,要求将这些国名按字典顺序排序。
[习题与思考题]
1、插入排序。
以任意次序读入10个数。
将第一个数放在数组A 的第一个元素中。
以后与 已存入数组A 中的数进行比较,确定它在从小到大的排列中应处的位置。
将该位置及其
后面的元素向后推移一个位置,将新读入的数据填入空出的位置中。
这样在数组A中的数总是从小到大排列的。
10个数据处理完后输出数组A。
(其算法请参见流程图)2、有15个数存放在一个数组中,输入一个数,用折半查找法找出该数是数组中第几个元
素。
若该数不在数组中,则打印出“No found”。
3、输入3行3列的矩阵A,然后(用函数实现各小题功能)
(1)输出矩阵A。
(2)将对角线之外的上三角形中的每个元素加1,下三角形中的每个元素减1,输出矩阵A。
(3)找出现在在矩阵A中最大的元素及其行、列位置。
并输出。
(4)计算矩阵A的对角线上的元素之和。
(5)计算矩阵A的转置矩阵A T。
(要求将A转置存放)
4、计算2个矩阵a(M行P列),b(P行N列)的乘积。
5、某班学生有若干人(不超过40人),期终共考5门课,每个学生的成绩按学号顺序存
入计算机。
编程完成下列计算:
(1)求出每个学生的总分和平均分;
(2)每门课程的最高分,以及该得分学生的学号;
(3)统计各门课程成绩在60分以下学生所占的百分比。
6、编写一对函数实现互换日期表示法:nday(y,m,d)函数,将某年某月某日转换成这一年的
第几天;monday(y,n,mday)函数,将某年的第几天转换成这一年的某月某日,返回时mday[0]为月份数,mday[1]为这个月的第几天。
7、输入一字符数组,再输入一子字符数组,在前一字符数组中剔除所有的子字符数组后再
输出。
8、编程求解约瑟夫问题:M个人围成一圈,从第一个人开始报数,数到N的人出圈。
再
由下一个人开始报数,数到N的人出圈。
...印出依次出圈人的编号。
M值预先选定,N 值由键盘输入。
例:M=8,N=5
依次出圈的是5、2、8、7、...
插入排序流程图。