实验五 数组
- 格式:doc
- 大小:34.00 KB
- 文档页数:1
C++语言程序设计形考二实验五上机实验5:数组应用程序设计一、实验内容有如下程序:#include<iostream>using namespacestd;intmain(){__________________ //定义具有6个元素的整形数组dint data,i=0.// data用于暂存每一个输入数据,i记录已插入数据的个数。
cout<<"请输入6个整数:";do{ //输入并处理6个数据cin。
data;int j=i。
//j是候选的插入位置while(j>0){ //若j==0,它就是第一个数据的插入位置,无需进入循环。
if(data>=d[j-1]) __________。
//若找到插入位置,退出循环。
d[j]=d[j-1]。
//否则数据后移一个位置j--;}d[j]=data。
//数据插入到位置j处i++。
//i记录已插入数据的个数}while(________)。
//若缺乏6个数据,连续输入。
for(_______________________) cout<<d[i]<<' ';//表现数组中的6个数据cout<<endl;return 0;}此程序输入6个整数保存到一维数组d中,使得输入的数据在数组中始终按从小到大的顺序排列,最后顺序输出数组中的数据。
例如,若输入是5 7 4 29 3,程序的输出是:2 3 4 5 79.二、实验要求读懂步伐,弥补步伐中下划线处缺失的部分,上机测试,直至产生精确的输出成效。
三、实验结果截图。
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语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
程序设计实验报告总结实验五使用数组的程序设计班级学号姓名一、实验目的(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)编写一个程序,利用字符数组实现两个字符串的比较。
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 ```实验总结:通过本次实验,我深入理解了数组的原理和用法,并且掌握了数组在函数中的传递。
【2008春上机编程题_C07】【解题思路】:在理解上述要求基础上,只用一个主函数完成:找出Fibonacci 数列的前40个数,存放在一维数组m[40](声明长整型变量long)中,然后找出其中所有素数,存放在一维数组n[40]中(提示:n数组要求对素数总数以k计数),再选用一种排序法对一维数b进行降序排列,最后按长整型量以“%9ld”形式、一行五个数据将满足条件的数据输出到屏幕:【提示】:排序方法有“简单起泡法”;“双向起泡法”;“选择法”;所以要求学生在调试上述程序基础上按班组选取排序方法,编写本次作业。
(约定:起始Fibonacci数列存放在一维数组m[40]中,挑选出的素数存放在一维数组n[40]中,最后以升序排列的数组n输出,满足素数的个数设定为k)。
(参考教科书P134)(参考上机指导书P54例7.5、2010春完善程序题第15题或软件第七章填空第15题)原理为“下列程序的功能是对n数组n[0]~a[k-1]中存储的k个整数从大到小排序。
排序算法是:第一趟通过比较将k个整数中的最小值放在a[k-1]中,最大值放在a[0]中;第二趟通过比较将k个整数中的次小值放在a[k-2]中,次大值放在a[1]中,………,依次类推,直到待排序序列为递减序列。
”P50例7.2)【软件第七章】选择:1,下列一维数组的声明中,正确的是____(22)_____。
A. int a[];B. int n=10,a[n];C. int a[10+1]={0};D. int a[3]={1,2,3,4};5.以下程序运行后的输出结果是_____(25)___。
main(){ char a[7]="a0\0a0\0";int i,j;i=sizeof(a);j=strlen(a);printf("%d %d",i,j);}A.2 2B.7 2C.7 5D.6 28.以下声明中错误的是_____(27)_____。
上机实验5:数组应用程序设计一、实验内容有如下程序:#include <iostream>using namespace std;int main(){__________________ //定义具有6个元素的整形数组dint data,i=0; // data用于暂存每一个输入数据,i记录已插入数据的个数。
cout<<"请输入6个整数:";do{ //输入并处理6个数据cin>>data;int j=i; //j是候选的插入位置while(j>0){ //若j==0,它就是第一个数据的插入位置,无需进入循环。
if(data>=d[j-1]) __________; //若找到插入位置,退出循环。
d[j]=d[j-1]; //否则数据后移一个位置j--;}d[j]=data; //数据插入到位置j处i++; //i记录已插入数据的个数}while(________); //若不足6个数据,继续输入。
for(_______________________) cout<<d[i]<<' ';//显示数组中的6个数据cout<<endl;return 0;}此程序输入6个整数保存到一维数组d 中,使得输入的数据在数组中始终按从小到大的顺序排列,最后顺序输出数组中的数据。
例如,若输入是5 7 4 29 3,程序的输出是:2 3 4 5 7 9。
二、实验要求读懂程序,补充程序中下划线处缺失的部分,上机测试,直至产生正确的输出结果。
三、实验结果截图(请将实际上机运行的结果截图并上传)。
子程序设计2.6显示学生名次表rank编制一个程序,要求接受键盘输入的一个班的学生成绩,并存放于一个50字的grade数组中,其中grade+i保存学号为I+1的学生成绩。
然后根据grade中的学生成绩,把学生成绩依次填入50字的rank数组中,其中rank+i的内容是学号为i+1的学生的名次。
再按学号顺序把名次从终端上显示出来。
本题要做的主要工作和例2.2的内容是完全一样的,只是增加了由用户键入学生成绩及输出学生名次两个部分的内容,因此这三个部分可以用子程序结构来完成。
子程序结构划分的层次图如图2.17所示,可以看出,main为主要模块,其下一层的三个模块为程序的三大部分。
现将各模块说明如下:1.模块名:main 为总模块输入:从键盘输入一个班的学生成绩输出:显示一个班的学生成绩功能:根据输入的学生成绩,计算并显示学生名次。
算法如下:一个学生名次等于成绩高于该学生的人数+1.2.模块名:input输入:以学号为序型键盘输入一个班的学生成绩。
各个成绩之间用逗号隔开,最后以回车符号结束。
输出:把一个班的学生成绩存入grade数组。
功能:接受一个班的学生成绩。
调用子模块decibin把键盘输入的一个十进制数转换为二进制数。
调用子模块crlf完成回车,换行功能。
3.模块名:rankp输入:从grade数组取得一个班的学生成绩。
输出:以学号为序计算出该班每个学生的名次存入rank数组。
功能:计算一个班的学生成绩。
算法为:一个学生的名次等于成绩高于该生的学生人数加1.4,。
模块名;output输入:把rank数组取得一个班的学生名次。
输出:把一个班的学生名次以学号为序在总端上显示出来。
功能:先是一个班的学生名次。
调用子模块decibin把键盘输入的一个十进制数转换为二进制数。
调用子模块crlf完成回车,换行功能。
5:模块名:decilin输入:从键盘输入一个十进制数。
输出:把该数转换成二进制数并存入BX寄存器中。
封面:2015-2016学年第一学期,年级是2015级,指导教师:网络工程专业1班写:赵玉艳陈海宝;网络工程2班写:赵玉艳肖刚,其它如实填写。
实验名称:实验一用C语言编写简单程序;实验二分支结构程序设计;实验三循环结构程序设计;实验四函数程序设计;实验五数组程序设计;实验六指针程序设计;实验七结构体程序设计。
课程名称:程序设计基础(Ⅰ)实验时间:分别为9.28, 10.12, 11.9, 11.23, 12.7, 12.21, 1.4实验地点:X405组号,同组人以及成绩:不需要填写实验环境:Windows 7;Visual C++ 6.0。
实验目的实验一用C语言编写简单程序1. 熟悉VC6.0的编程环境,掌握运行C程序的基本步骤。
2. 了解C程序的基本框架,模仿例题编写简单的C语言程序。
3. 正确书写算术表达式、赋值表达式和关系表达式。
4. 掌握基本输入输出函数的使用,正确调用C语言提供的数学库函数。
5. 掌握简单的单步调试方法。
实验二分支结构程序设计1.熟练掌握关系表达式的使用。
2.熟练掌握使用else-if语句实现多分支结构程序设计。
3.熟练掌握关系表达式和逻辑表达式的使用。
4.熟练掌握字符型数据的输入输出。
5.熟练掌握用嵌套的if语句或switch语句实现多分支结构程序设计。
6.熟练掌握switch语句中的break语句的作用。
7.掌握使用断点调试程序的方法。
实验三循环结构程序设计1. 熟练使用for、while和do-while语句实现简单的循环程序。
2. 理解循环条件和循环体,以及for、while和do-while语句的相同及不同之处。
3. 掌握使用Debug菜单调试程序的方法。
4. 掌握break语句的使用。
5. 掌握continue语句的使用。
6. 熟练掌握嵌套循环程序设计。
实验四函数程序设计1. 熟练掌握函数的定义和调用。
2. 熟练掌握使用函数编写程序。
3.熟练掌握函数的实参、形参和返回值的概念及使用。
实验五数组的使用一实验目的要求1 掌握数组的概念和使用方法。
2 掌握数组初始化的方法。
3学会字符数组和字符串的应用。
4 学会用数组名作函数的参数。
二有关概念1 只有静态数组和外部数组才能初始化。
2 引用数组时,对下标是否越界不作检查。
如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。
3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。
4 如有如下定义:char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。
不要认为str是字符串变量,在其中存放一个字串“I love china”。
5 用数组名作函数实参时,传到形参的是数组的首地址。
三实验内容和步骤1 定义三个数组int a[5];int b[2][2];char c[10];(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。
(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。
(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I‟, …‟, …a‟, …m‟, …‟, …b‟, …o‟, …y‟。
然后用printf(“%s”,c)输出字符串,分析结果。
参考程序如下:(1)main(){ int i,x,y;static int a[5]={1,2,3,4,5};static int b[3][2]={{3,4},{6,7},{9,5}}static char c[10]={ …i‟, …l‟, …p‟, …q‟, …k‟, …s‟, …d‟, …e‟, …a‟};for(i=0;i<5;i++)printf( “%5d”,a[i]);for(x=0;x<3;x++)for(y=0;y<2;y++)printf(“%5d”,b[x][y]);for(i=0;i<10;i++)printf(“%3c”,c[i]);}(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:Printf(“%d”,a[4]);Printf(“%d”,b[2][1]);2 有一数组,内放10个整数,要求找出最小的数和它的下标。
一、实验背景随着计算机技术的不断发展,数组作为一种基本的数据结构,在编程领域得到了广泛的应用。
为了更好地理解和掌握数组的相关知识,我们进行了一系列的数组实验。
本次实验报告将对实验过程进行总结,并对实验结果进行分析。
二、实验目的1. 理解数组的基本概念和特点;2. 掌握数组的创建、访问和操作方法;3. 熟悉数组在编程中的应用;4. 培养实验操作能力和问题解决能力。
三、实验内容1. 数组的定义与创建2. 数组的初始化3. 数组元素的访问与修改4. 数组的排序与查找5. 数组的应用实例四、实验过程1. 数组的定义与创建实验一:定义一个整型数组,并初始化为10个元素。
代码如下:```c#include <stdio.h>int main() {int arr[10];// 初始化数组for (int i = 0; i < 10; i++) {arr[i] = i 2;}// 打印数组元素for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}printf("\n");return 0;}```2. 数组的初始化实验二:使用初始化列表直接初始化数组。
代码如下:```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};// 打印数组元素for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("%d ", arr[i]);}printf("\n");return 0;}```3. 数组元素的访问与修改实验三:访问和修改数组元素。
代码如下:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5};// 访问数组元素printf("The first element is: %d\n", arr[0]);// 修改数组元素arr[0] = 10;printf("After modification, the first element is: %d\n", arr[0]); return 0;}```4. 数组的排序与查找实验四:使用冒泡排序算法对数组进行排序。
实验五数组程序设计班级学号姓名实验地点完成日期成绩(一)实验目的与要求1、掌握一维数组和二维数组的定义、赋值和输入输出的方法;2、掌握字符数组和字符串函数的使用;3、掌握与数组有关的算法。
(二)实验内容1、对于输入的n个整数,先进行升序排序,然后进行二分查找。
(HLOJ 8005)2、如果矩阵A中存在这样的一个元素A[i][j]满足下列条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。
编写一个程序计算出矩阵A的马鞍点的值。
(HLOJ 1208)3、对给定的数据进行排序。
每组测试数据的结构是:第一行为一个整数N(0<N<100),表示后面有N个整数(每个整数最多可达80位)需要排序输出,先按长度排(短的在前),如长度一样则按大小排(小的在前)。
若遇到N等于零,则运行结束。
每组结果之间留一个空行。
(HLOJ 1154)(三)实验具体步骤1、对于输入的n个整数,先进行升序排序,然后进行二分查找。
解题思路:首先,认真解读题目,该题首先是要用到排序,因为还要进行查找二分查找,所以就要有两个数组,设为a数组和b数组,即在a数组中查找b数组里的元素,如果查到就输出该元素在a数组中的位置(即下标),查不到就输出零。
具体步骤,在输入一个n时,由n控制a数组的元素个数,输入n个数,然后用冒泡法对a数组进行升序排序。
然后输入一个m,用来控制b数组的元素个数(查找次数),然后是输入m个数到b数组,接下来就是要做二分查找。
二分查找即折半查找,主要思想为:将n个元素分成个数大致相同的两半,取a[mid]与欲查找的b[i]作比较,如果b[i]< a[mid],则在a[mid]左边在进行二分查找,否则就在a[i]的右边进行查找。
如果b[i]=a[mid]则找到b[i];就.输出b[i]在数组a[i]里的下标(mid+1),并退出循环。
如果找不到(即start>end了)就输出0。
C语言实验五实验报告-数组C 语言实验五实验报告数组一、实验目的本次实验旨在深入理解和掌握 C 语言中数组的概念、声明、初始化以及基本操作。
通过实际编写代码,熟练运用数组解决实际问题,提高编程能力和逻辑思维能力。
二、实验环境操作系统:Windows 10开发工具:Visual Studio 2019三、实验内容1、数组的声明和初始化声明一维数组,如`int arr10;`。
初始化一维数组,包括全部初始化,如`int arr5 ={1, 2, 3, 4, 5};`,以及部分初始化,如`int arr5 ={1, 2};`。
声明二维数组,如`int arr34;`。
初始化二维数组,如`int arr23 ={{1, 2, 3},{4, 5, 6}};`。
2、数组元素的访问和操作使用下标访问数组元素,如`arr0` 。
对数组元素进行赋值和修改操作。
遍历数组,使用循环打印数组元素。
3、数组的应用实现数组元素的排序,如冒泡排序、选择排序等。
查找数组中的特定元素,如顺序查找、二分查找等。
四、实验步骤1、数组的声明和初始化打开 Visual Studio 2019,创建一个新的 C 语言项目。
在源文件中,编写以下代码来声明和初始化一维数组:```cinclude <stdioh>int main(){int arr110;int arr25 ={1, 2, 3, 4, 5};int arr35 ={1, 2};printf("未初始化的数组 arr1 的元素:\n");for (int i = 0; i < 10; i++){printf("%d ", arr1i);}printf("\n");printf("全部初始化的数组 arr2 的元素:\n");for (int i = 0; i < 5; i++){printf("%d ", arr2i);}printf("\n");printf("部分初始化的数组 arr3 的元素:\n");for (int i = 0; i < 5; i++){printf("%d ", arr3i);}printf("\n");return 0;}```编译并运行代码,观察输出结果,理解数组的声明和初始化方式。
实验五查找及排序实验课程名:数据结构与算法(3)运行结果分析:运用顺序结构完成查询。
任务二:哈希表的开放定址法算法。
在输出结果中显示查找成功与查找不成功信息。
解答:(1)源代码:#include<string.h>#include<ctype.h>#include<malloc.h> // malloc()等#include<limits.h> // INT_MAX等#include<stdio.h> // EOF(=^Z或F6),NULL#include<stdlib.h> // atoi()#include<io.h> // eof()#include<math.h> // floor(),ceil(),abs()#include<process.h> // exit()#include<iostream.h> // cout,cin// 函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1// #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行(2)运行结果:(3)运行结果分析:运用哈希表开放定地址算法实现。
任务三:各种插入排序算法的实现。
解答:(1)源代码:#include<string.h>#include<ctype.h>#include<malloc.h> // malloc()等#include<limits.h> // INT_MAX等#include<stdio.h> // EOF(=^Z或F6),NULL #include<stdlib.h> // atoi()#include<io.h> // eof()(3)运行结果分析运用直插、折半插、路插的方法编写。
《C语言》实验指导书编(全校理工类本科用)2014年2月目录实验一简单C语言程序设计 (1)实验二顺序结构程序设计 (3)实验三选择结构程序设计 (5)实验四循环结构程序设计 (7)实验五数组程序设计 (10)实验六函数程序设计 (13)实验七指针程序设计 (16)实验八结构体程序设计 (17)附录1 C语言上机步骤 (18)实验一简单C语言程序设计实验类型:验证性实验课时: 4 指导教师:时间:2014 年月日课次:第节教学周次:第周实验分室:实验台号:实验员:一、实验目的1.掌握所用的C语言环境的基本操作方法。
2.掌握编辑、编译、连接和运行C程序。
3.掌握C程序的数据类型、运算符,表达式。
二、实验内容和要求1.打开C语言环境,编辑如下程序,写出运行结果。
#include <stdio.h>void main(){printf(“Hello World!\n”);}2. 在屏幕上显示下列图形:* * * ** * ** **3.完成习题集中习题一的内容4. 已知三角形的三边长为3,4,5,求三角形周长5 .完成习题集中习题二内容实验二顺序结构程序设计实验类型:验证性实验课时: 2 指导教师:时间:2014 年月日课次:第节教学周次:第周实验分室:实验台号:实验员:一、实验目的1.掌握基本输入输出函数、库函数的使用。
2.能够编程实现简单的结构化程序。
二、实验内容和要求1.执行程序,写出运行结果。
#include <stdio.h>void main(){float a = 9.1234567891234567890;double b = 9.1234567891234567890;printf("%f, %lf\n",a,b);printf("%.15f,%.15\n",a,b);};2.运行程序,写出结果。
#include <stdio.h>void main(){float x1;double y1 ;scanf("%f %lf ",&x1,&y1) ;printf("x1=%f,y1=%lf ",x1,y1) ;}程序运行时输入x的值123456789,输入y的值123456789。
浙江大学城市学院实验报告课程名称多核与并行程序设计实验项目名称实验五蒙特卡罗法求PI及排序算法学生姓名专业班级学号实验成绩指导老师(签名)日期【实验环境】硬件平台:联想4核,4GZ内存编译器:Microsoft Visual Studio C++ 6.0操作系统:Windows 2003 server sp2测试数据集合:由随机数函数产生的数据集合【实验1】一、问题描述蒙特卡洛算法可理解为通过大量实验,模拟实际行为,来收集统计数据。
本例中,算法随机产生一系列点,模拟这些点落在如下图所示的正方形区域内的情况。
其几何解释如下11图1如图1所示,正方形边长为1,左下顶点与原点重合,两边分别与x,y轴重合。
曲线为1/4圆弧,圆心位于原点,与正方形左下定点重合,半径为1。
正方形面积S1=1,圆弧内面积S2=ππ41412=r。
算法模拟大量点随机落在此正方形区域内,落在圆弧内的点的数量(n2)与点的总数(n1)的比例与面积成正比关系。
即π42121==S S n n (1) 由此可得124n n =π (2)因此,只要计算出落在圆弧内的点的数量在点总数中所占的比例,就能求出π的值。
由图1可知,所有点均落在正方形范围内,因此点的x 坐标满足10≤≤x 。
又,当点落在圆弧范围内,则点的二维坐标关系满足122≤+y x 。
检验每一个点是否满足此关系即可判定改点是否落在圆弧内。
二、串行算法描述本项目中使用了标准C 语言库中的产生随机数函数。
该函数原型为:int rand( void );此函数产生随机数列,每次调用时均返回0到RAND_MAX 之间的一个整数。
void srand( unsigned int seed );此函数为rand ()函数所生成的伪随机数序列设置起始点,使之产生不同的伪随机数。
算法:产生2n 个随机数据,范围[0,1],对每个数据点计算其坐标是否满足122≤+y x ,统计满足此关系的点的数量count ,则 n count4=π三、并行算法3.1 并行算法描述算法步骤:1、确定需要产生的点的个数n ,参与运行的处理器数m ;2、对每一个处理器,生成两个随机数x ,y ,范围[0,1];3、判断两个随机数x ,y 是否满足122≤+y x ;4、若满足,则变量COUNT i++;5、重复步骤2-4,直至每个处理器均生成n/m个随机点;6、收集COUNT i的值,并累加至变量COUNT中,此即为随机点落在圆弧内的数量;7、通过(2)式计算 的值。
C语言实验报告实验五参考答案实验五一维数值数组(参考答案)1、设计程序sy5-1.c,计算n门课程的平均分。
例如:若有5门课程的成绩是:90.5.72.80.61.5.55,则平均分是:71.80.算法分析:先求n门课的成绩总和,(累加求和),再用累和除以课程数。
参考答案:includevoid main()double score[30]。
sum=0,aver;int n,i;printf("Inputn:");scanf("%d",&n);printf("请依次输入%d门课程的成绩",n);for(i=0;i<n;i++)scanf("%lf",&score[i]);sum=sum+score[i];aver=sum/n;printf( "\nAverage scoreis: %5.2f\n"。
aver);运行结果:2、设计步伐sy5-2.c,对输入的10个整数按倒序寄存后输出成效。
算法阐发:利用“半数交流”算法,最前面的元素和末了面的元素交流,逐步向中央挨近。
可利用两个下标变量i和XXX。
参考答案:includeint main()int a[10]={1,2,3,4,5,6,7,8,9,10};int i,j,t;for( i=0,j=9.i<j。
i++,j--)//逐一向中,交换。
直到已没有元素没交换t=a[i]。
a[i]=a[j]。
a[j]=t;}// a[i]-数组前端的数,a[j]-数组后端的数printf("交流后数组元素是:");for(i=0;i<10;i++)printf("%5d",a[i]);//%5d,5透露表现宽度printf("\n");//输出完所有的数后换行return 0;运行结果:3、设计程序sy5-3.c,输入10个整数,找出其中的最大数及其所在的下标。
《程序设计语言》实验指导书徐东燕编北方民族大学计算机科学与工程学院2012年9月目录实验一 C语言编程环境熟悉及简单程序的编写(验证型实验,2学时) (3)实验二分支结构程序设计(设计型实验,2学时) (6)实验三循环结构程序设计(设计型实验,2学时) (8)实验四函数程序设计(设计型实验,2学时) (10)实验五数组程序设计((设计型实验,2学时) (12)实验六指针程序设计(设计型实验,2学时) (14)实验七结构体程序设计(设计型实验,2学时) (15)实验八程序结构与递归函数(综合性实验,2学时) (16)实验九指针进阶及综合程序设计(综合型实验,2学时) (17)实验十文件的程序设计(设计型实验,2学时) (18)参考文献 (20)课程编号:11101203 课程类别:专业基础课适用专业:计算机科学与技术、软件工程、网络工程、信管专业课程总学时:76 实验课学时:20开设实验项目数:10实验一C语言编程环境熟悉及简单程序的编写(验证型实验,2学时)一、实验目的与要求实验环境1.熟悉Cfree开发环境或Visual C++ 6.0的使用环境;2.掌握Cfree开发环境或Visual C++ 6.0环境下建立C程序的步骤;3.掌握C程序在Cfree开发环境或Visual C++ 6.0环境下的编辑、调试和运行的步骤、方法;4.理解C程序的一般结构;5.理解并掌握程序的顺序结构程序设计;6.在Cfree开发环境或Visual C++ 6.0环境下编写并运行基本的C程序;7.理解程序调试思想,能修改简单的C语法错误;8.掌握算术、赋值表达式,输入输入语句和简单数据处理方法。
二、实验环境1.微机每人一台,要求PⅢ以上处理器。
2.windows2000/xp操作系统。
3.Cfree开发环境或或Visual C++ 6.0开发环境。
三、实验预习与准备1.计算机基本操作练习。
2.Cfree开发环境或Visual C++ 6.0软件使用预习。
《C语言程序设计实验》指导书(简明版)**大学软件学院**年**月实验一顺序结构程序设计(2学时)一、实验目的1、熟悉C编译环境、简单C程序结构及书写方式、以及C程序的编辑、编译、连接、运行、调试的步骤;2、掌握C语言的基本数据类型及其输入输出格式,以及输入输出函数的使用方法;3、掌握C语言的算术运算符(特别是自增、自减运算符)、赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符的使用;4、掌握C语言顺序结构程序的执行流程、设计方法,能够根据实际问题灵活使用顺序结构,画出程序的算法流程图,设计出逻辑合理、思路清晰、结果正确的顺序结构程序。
二、实验内容及要求1、实验内容包括8道题目,分为基本内容和选做内容两部分。
要求:(1)基本内容中的实验题目是必须要完成的,选做内容中的实验题目可以根据自己的情况选做或全做(越多越好,适当加分);(2)在实验之前编写出基本内容、选做内容中的所有程序,实验前检查(视未完成情况适当扣分);(3)对于设计型题目,要求画出程序流程图(传统流程图和N-S图);(4)在上机实验过程中,注意总结和体会上机步骤(编辑、编译、连接、运行、调试、结果分析),注意培养观察、分析和排除编译错误、连接错误和程序逻辑错误的初步能力;(5)上机结束后,应按要求认真书写实验报告(格式见附件)。
2、基本内容(1)[验证型]编辑下列程序,然后进行编译、连接和运行,观察结果,并简要总结简单C程序的结构、书写格式以及上机过程;#include <stdio.h>int main( ){printf("Hello, world!\n");return 0;}(2)[验证型]通过运行下列程序,分析各种格式符的使用方法。
#include <stdio.h>int main( ){int a = 9, b = 2;float x = 32.8459, y = -792.451;char d = 'R';long n = 5461237;unsigned u = 65535;printf("%d,%d\n", a, b);printf("%3d,%3d\n", a, b);printf("%f,%f\n", x, y);printf("%-10f,%-10f\n", x, y);printf("%8.2f,%8.2\n", x, y);printf("%.4f,%.4f\n", x, y);printf("%3f,%3f\n", x, y);printf("%e,%10.2e\n", x, y);putchar(d);putchar('\n');printf("%c,%d,%o,%x\n", d, d, d, d);printf("%ld,%lo,%x\n", n, n, n);printf("%u,%o,%x,%d\n", u, u, u, u);return 0;}(3)[验证型]编辑下列程序,进行编译、连接和运行。
中国矿业大学计算机学院《高级程序设计语言》
实验五数组
一、实验目的
1.掌握一维数组和二维数组的定义、初始化、引用;
2.掌握字符数组与字符串的关系以及使用;
3.学习给函数传递数组的方法;
4.熟练字符串处理函数的应用;
5.掌握与数组有关的算法(特别是排序算法)。
二、实验要求
1.结合上课内容,独立完成程序设计,并调试程序,要给出测试数据和实验结果。
2.整理上机步骤,总结经验和体会。
3.完成实验报告和上交程序。
三、实验内容
1.将一个字符串str1中的小写字母变为大写字母,大写字母保持不变的方式存入另一个字
符串str2中。
2.定义一个二维数组存储五位学生五科考试的成绩,编写程序分别取出二维数组里的元素
值,经过累加之后列出总成绩,计算并输出每个同学的平均成绩,格式如下:第1个学生的总分为:*** 平均分为:**
第2个学生的总分为:*** 平均分为:**
第3个学生的总分为:*** 平均分为:**
第4个学生的总分为:*** 平均分为:**
第5个学生的总分为:*** 平均分为:**
3.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能
没有鞍点)。
至少准备两组测试数据:
1)二维数组有鞍点,如
1 2 3 4 5
2 4 6 8 10
3 6 9 12 16
4 8 12 16 20
2)二维数组没有鞍点,如
1 1
2
3
4 5
2 4 16 8 10
3 6 8 12 15
4 8 12 16 20
4.编写一程序,将两个字符串连接起来,结果取代第一个字符串。
(1)用字符数组,不用strcat函数(即自己写一个具有strcat函数功能的函数)(2)用标准库中的strcat函数;
(3)用string方法定义字符串变量。
5.有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出
该数是数组中的第几个元素的值。
如果该数不在数组中,则打印出“无此数”。