实验 3 方法和数组
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;
实验3 — 排序方法比较
实验3 —排序方法比较
一.实验目的:
掌握顺序表的常用排序方法,掌握一种计时方法,测试算法的稳定性。二.实验内容:
1) 分别编写函数实现冒泡排序、快速排序和简单插入排序算法;
2) 2路归并排序;
3) 编制一个应用程序,它将随机产生的N个0~65535之间的整数插入到一个顺序
表中,然后分别用上述排序算法对这个顺序表进行排序;记录并显示各种方法的
运行时间;
三.源代码:
#include"stdio.h"
#include"math.h"
#include"time.h"
#include"stdlib.h"
#define SIZE 5000 //每组元素的个数
#define SIZE2 12 //每组元素的个数(测试稳定性)
struct ele //为了检验算法的稳定性,每个元素设为结构体。里面有内容和初始顺序。
{
int data;
int no;
};
typedef struct ele ELE;
void creat(ELE a[],int n);//生成函数
void creat2(ELE a[],int n);//生成函数
void display(ELE a[],int n);//显示函数
void bubble(ELE a[],int n);//冒泡排序函数
void insert(ELE a[],int n);//插入排序函数
void quick(ELE a[],int low,int high);//快速排序函数
int qpass(ELE a[],int low,int high);
void merge(ELE a[],ELE b[],int l, int m,int n);
数组和函数实验报告
数组和函数实验报告
实验目的:通过实验了解数组和函数的概念,并掌握数组和函数的基本使用方法。
实验材料:计算机、编程软件
实验步骤:
1.数组的定义和使用
- 创建一个新的项目,并在项目中新建一个文件。命名为ArrayExperiment.c,后缀名为.c表示这是一个源代码文件。
- 在ArrayExperiment.c文件中编写以下代码:
```
#include <stdio.h>
int main
int arr[5] = {10, 20, 30, 40, 50};
for(int i = 0; i < 5; i++)
printf("%d\n", arr[i]);
}
return 0;
```
-代码分析:
- `int arr[5] = {10, 20, 30, 40, 50};`定义了一个大小为5的整型数组arr,并给数组赋初始值10,20,30,40,50。
- `for(int i = 0; i < 5; i++)`通过for循环遍历数组,输出数组arr的元素。
2.数组作为函数参数
- 在ArrayExperiment.c文件中编写以下代码:
```
#include <stdio.h>
void printArr(int arr[], int size)
for(int i = 0; i < size; i++)
printf("%d\n", arr[i]);
}
int main
int arr[5] = {10, 20, 30, 40, 50};
printArr(arr, 5);
北邮数据结构实验 第三次实验 排序剖析
数据结构实验报告
1.实验要求
(1)实验目的
通过选择下面两个题目之一,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况。
(2)实验内容
使用简单数组实现下面各种排序算法,并进行比较。
排序算法:
1、插入排序
2、希尔排序
3、冒泡排序
4、快速排序
5、简单选择排序
6、堆排序(选作)
7、归并排序(选作)
8、基数排序(选作)
9、其他
要求:
1、测试数据分成三类:正序、逆序、随机数据
2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其
中关键字交换计为3次移动)。
3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒
(选作)
4、对2和3的结果进行分析,验证上述各种算法的时间复杂度
编写测试main()函数测试排序算法的正确性。
2. 程序分析
2.1 存储结构
顺序表:
示意图:
2.2 关键算法分析
(1)测试数据的产生:正序、逆序、随机数据
用两个数组实现乱序、顺序以及逆序数据的排序。
基本思想为:随机序列产生一个指定长度的乱序序列,然后通过memcpy()函数拷贝到第
二个数组里,第二个数组作为乱序序列的保存数组,每次对第一个数组进行排序,之后拷贝第二个数组中的乱序序列到第一个数组,实现各次乱序排列。只要算法正确(第一步可以检验),之后顺序排列只需反复对第一个数组进行操作即可,再后用第二个数组保存逆序数组,然后同样在每次排序之后复制第二数组存储的乱序序列到第一组,对第一组反复排序即可。
<1> pRandom1=new long int[Max+1];pRandom2=new long int[Max+1];
java 实验三 控制语句 实验报告
Scannersc=newScanner(System.in);
intsum=sc.nextInt();
System.out.println("请输入要排序的数据:");
int[] a=newint[sum];
for(inti=0; i<a.length; i++){
实验3—4、猜数字游戏:请学习通用对话框以及随机数的生成。
实验要求:完成一个Java应用程序,实现下列功能:
1)程序随机分配给客户一个1—100之间的整数
2)用户在输入对话框中输入自己的猜测
3)程序返回提示信息,提示信息分别是:“猜大了”、“猜小了”和“猜对了”。源自文库
4)用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。
intrealNumber=(int)(Math.random()*100)+1;
intyourGuess=0;
String str=JOptionPane.showInputDialog("输入您的猜测:");
yourGuess=Integer.parseInt(str);
while(yourGuess!=realNumber){
importjava.io.*;
C语言程序设计实验指导
C语⾔程序设计实验指导
C语⾔实验指导
吴元斌编
重庆三峡学院计算机科学与⼯程学院
实验总体说明
⼀、实验的⽬的
学习C语⾔程序设计不能满⾜于学会C语⾔的语法规则,能看懂书上的程序,⽽应当熟练地掌握程序设计的全过程,即独⽴编写源程序、独⽴上机调试、独⽴运⾏程序和分析结果。
上机实验的⽬的,不仅仅是为了验证教材和讲课的内容,或者验证⾃⼰所编写的程序的正确与否。实验的主要⽬的⾄少包括如下⼏点:
1.加深对讲授内容的理解,尤其是⼀些语法规定。通过实验来掌握语法规则
是⾏之有效的⽅法。
2.熟悉所⽤的开发平台。
3.学会上机调试程序。通过反复调试程序掌握根据出错信息修改程序的⽅法。
4.通过调试完善程序。
⼆、实验前的准备
1.了解所⽤的计算机系统(包括C语⾔开发平台)的性能和使⽤⽅法。
2.复习和掌握与本实验有关的教学内容。
3.准备好上机所需的程序,切忌不编程或抄别⼈的程序去上机。
4.对程序中出现的问题应事先估计,对程序中⾃⼰有疑问的地⽅应先作上记
号,以便上机时给予注意。
5.准备好调试程序和运⾏程序所需的数据。
三、实验过程中应注意的问题
1.上机实验应⼀⼈⼀组,独⽴实验。
2.上机过程中出现的问题,⾸先⼒争⾃⾏解决,若不⾏可求助于同学和⽼师。
尤其对“出错信息”,应善于分析判断,找出出错的⾏,然后检查该⾏或
其上⼀⾏。
3.记录好上机过程中出现的各种问题和解决的⽅法。
4.上机实验平台的使⽤⽅法见附录A和附录B。
5.上机结束后,应及时写出实验报告(主要内容:题⽬、程序清单与结果、)。
四、完成实验报告
实验报告包括以下内容:
1.实验⽬的
VB实验任务12答案
实验任务12
课程名称:程序设计基础VB
实验名称——实验十二数组(2)
一、实验目的:
1.掌握数组的声明和数组元素的引用
2.掌握定长数组的使用
3.掌握数组的基本操作算法
4.掌握控件数组的使用
二、实验内容(包括实验要求(题目)、实验步骤、程序清单、运行情况):
实验1在课前做好,课上验证
实验1人工写出如下程序的运行结果,并利用单步调试工具验证执行流程和运行结果,进一步深入弄清和理解数组的访问。
(1)执行下面程序,单击命令按钮,输出结果是。
Option Base 1
Dim arr() As Integer
Private Sub Form_Click()
Dim i As Integer, j As Integer
ReDim arr(3, 2)
For i = 1 To 3
For j = 1 To 2
arr(i, j) = i * 2 + j
Next j
Next i
ReDim Preserve arr(3, 4)
For j = 3 To 4
arr(3, j) = j + 9
Next j
Print arr(3, 2); arr(3, 4)
End Sub
(2)运行程序,单击窗体,则在窗体上显示的是。
Option Base 1
Private Sub Form_Click()
Dim a , Sum As Integer, i
Sum = 0
a=Array(1,3,5,7,9,11,13,15,17,19,21,23)
For Each i In a
If i/3 = i\3 Then Sum = Sum + i
C语言实验报告 实验三 参考答案
实验十 参考答案(指针)
三、实验内容( 按要求完善或设计以下程序,并调试分析运行结果)
1. 程序填空题 给定程序BLACK10-1.C 中,函数fun 的功能是:将形参n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n 传回所指变量。
例如,输入一个数:27638496,新的数:为739。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
【解题思路】
第一处:t 是通过取模的方式来得到*n 的个位数字,所以应填:10。
第二处:判断是否是奇数,所以应填:0。
第三处:最后通形参n 来返回新数x ,所以应填:x 。
2. 程序改错题 给定程序MODI10-1.C 中函数fun 的功能是: 计算n 的5次方的值(规定n 的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。
例如,7的5次方是16807, 其低3位数的和值是15。
【解题思路】
第一处:变量d 的初始值应为1。
第二处:整除的符号是 /。
3. 程序设计题 请编写函数fun ,它的功能是:求出能整除形参x 且不是偶数的各整数,并按从小到大的顺序放在pp 所指的数组中,这些除数的个数通过形参n 返回。 例如,若 x 中的值为: 35,则有 4 个数符合要求,它们是: 1, 5, 7, 35。
【解题思路】
本题是求出能整除形参x 且不是偶数的各整数,并按从小到大的顺序放在pp 所指的数组中,这些除数的个数通过形参n 返回。
【参考答案】
《程序设计础—C程序实验》
1.输入并运行以下程序。
#include<stdio.h>
main()
{int a;
float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
}
若运行时从键盘上输入1234567890↙
则程序运行结果是:
4.详细记录数据的输入、输出信息,按要求写出实验报告。
三、实验内容
1.输入并调试以下程序:
(1)#include<stdio.h>
main()
{inta[3],i,j;
for(i=0;i<=2;i++)a[i]=0;
for(i=0;i<=2;i++)
for(j=0;j<2;j++)
a[j]=a[i]+1;
2.输入并运行以下程序。
#include <stdio.h>
main()
{int c;
char d;
c=67;d='C';
putchar(c);putchar(d);
putchar('B');putchar(66);
离散数学实验三
if(flag)break; } if(!flag) cout<<"因为所有成员都满足分配性,所以这是一个分配格。\n";
四、运行结果:
首先是输入界面: 然后输入24:
然后询问是否再次输入:
这次输入99:
特殊情况,若输入0或者负数:
此时会一直提示输入错误直到输入成功。 若输入1:
若输入非Y,则退出程序:
成 绩
批阅人
日 期
for(i=0;i<n;i++){ for(j=n-1;j>=0;j--){ if(GBS(a[i],a[j])==m && GYS(a[i],a[j])==1){ cout<<a[i]<<"有补元素"<<a[j]<<"。\n"; break; } if(j==0){ flag=1; } } } if(!flag){ cout<<"因为所有成员都有补元素,所以这是一个有补格。\n"; } 4、判断是否为分配格: flag=0;//已知肯定是分配格, 这里只是进一步确信,flag标记是否有反例 for(i=0;i<n;i++){ for(j=0;j<n && j!=i;j++){ for(k=0;k<n && k!=j && j!=i;k++){ if(GYS(a[i],GBS(a[j],a[k]))!=GBS(GYS(a[i],a[j]),GYS(a[i],a[k flag=1; cout<<"因为"<<a[i]<<"∧("<<a[j]<<"∨"<<a[k]<<")!=(" <<"∧"<<a[j]<<")∨("<<a[i]<<"∧"<<a[k]<<"),所以这不是一个布尔格。\n";// a∧(b∨c)==(a∧b)∨(a∧c) break; } if(GBS(a[i],GYS(a[j],a[k]))!=GYS(GBS(a[i],a[j]),GBS(a[i { flag=1; cout<<"因为"<<a[i]<<"∨("<<a[j]<<"∧"<<a[k]<<")!=(" <<"∨"<<a[j]<<")∧("<<a[i]<<"∨"<<a[k]<<"),所以这不是一个布尔格。\n";// a∨(b∧c)==(a∨b) ∧ (a∨c) break; } } if(flag)break; }
微机实验-3(十六进制数组显示程序-子程序结构)
十六进制数组 显示程序设计
实验目的Biblioteka Baidu
1、掌握16进制数转换为ASCⅡ码 的程序设计方法。 。 2、学习在程序中调用DOS系统功 能的方法。 3、学习子程序设计方法。
实验内容及要求
实验程序包括2个功能 1、(功能1 )编写程序产生十六 进制数00H~FFH,并存放在内存 Hex数组中。 实现功能1,并在DEBUG环境观察 Hex数组元素。
实验内容及要求
2、(功能2)编写程序将内存Hex数 组中十六进制数00H~FFH转换成 ASCⅡ码并依次显示在计算机屏幕上。 3、要求将功能1和功能2分别用2个子 程序实现,并观察屏幕的显示结果。
实验内容及要求
4、完成程序的设计、调试程序、 运行程序并记录结果。 5、完成实验报告。
实验内容及要求
实验内容及要求
6、编程思路 【3】程序结束时应使用DOS系统功能调 用返回系统提示符。即程序代码段的最 后两条指令应是: MOV AH,4CH INT 21H
实验报告要求
1、实验目的 2、实验内容及心得体会。 3、程序框图。 4、程序清单(应有程序注释)。
结 束
6、编程思路 【1】采用子程序结构时,源程序中应定 义子程序: 子程序名 PROC NEAR … ;子程序内容 RET 子程序名 ENDP
实验内容及要求
6、编程思路 【2】16进制数转换ASCⅡ码的算法参考课本第170页例题 【4.59】。 16进制数码: 0,1,…9,A,B,C,D,E,F ASCⅡ码 30H,31H,…39H,41H,42H,…46H 转换时 0~9 → 30H~39H,加30H; A~F → 41H~46H,加30H再加7 转换程序要先判断16进制数是0~9还是A~F,然后再转换。
实验5数组--习题及答案
实验5 数组
班级:学号:
姓名:日期:
一、实验目的
(1)掌握一维数组和二维数组的定义、赋值和输入输出方法;
(2)掌握字符数组和字符串函数的使用;
(3)掌握与数组有关的算法(特别是排序算法)。
二、实验内容
1.阅读下面程序,写出程序运行结果,并且上机进行验证。
(1) #include "stdio.h"
void main()
{
int i,n[4]={0,0,0,0};
for(i=1;i<4;i++)
{
if (i==3) break;
n[i]=n[i-1]+1;
}
printf("n[i-1]=%d n[i]=%d\n",n[i-1],n[i]);
}
(2)#include "stdio.h"
void main()
{
char ch[]={'0','1','2','3','4','5','6','7','8','9'};
int i=0,m=2,r,x=42; char b[80];
while(x)
{
r=x%m; x/=m;
b[i++]=ch[r];
}
for(--i;i>=0;i--)
printf("%c",b[i]);
printf("\n");
}
(3)#include "stdio.h"
void main()
{
int a[][3]={9,7,5,3,1,2,4,6,8};
int i,j,s1=0,s2=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i==j) s1=s1+a[i][j];
if(i+j==2) s2=s2+a[i][j];
}
printf("s1=%d s2=%d",s1,s2);
实验6 数组——参考答案
实验6 数组
一、一维数组实验
2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。例如:
0 1 2 3 4 5 6 7 8 9
#include<stdio.h>
void main()
{
int i, j, a[10], t;
printf("Input 10 number: ");
for(i=0; i<10; i++) /*读入数据*/
scanf("%d", &a[i]);
printf("origin data: ");
for(i=0; i<10; i++) /*输出原始数据*/
printf("%d ", a[i]);
printf("\n");
for(i=0,j=9; i<j ; i++,j--) /*逆序存放*/
{
t=a[i];
a[i]=a[j];
a[j]= t;
}
printf("After reversed: "); /*输出逆序存放后的数据*/
for(i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n");
}
3. 编程:输入n个(1<n<=10)正整数并保存到数组中,求出最大值、最小值、平均值,以及最大值、最小值在数组中的下标分别是多少。例如:
5
#include <stdio.h>
void main()
{
int i, n , max, min, a[10], sum;
float average;
printf("Input n (1<n<=10): ");
实验三 字符串数组的使用、简单脚本文件和函数的编写 答案
实验三字符串数组的使用、简单脚本文件和函数的编写[实验目的]
1.掌握字符串数组的创建和构造方法及常用字符串函数的使用。
2.熟练掌握MATLAB 控制流的使用方法。
3.熟悉M 脚本文件、函数文件的编写方法和技巧。
[实验原理]
与数值数组相比,串数组在MATLAB 中的重要性较小,但不可缺少。如果没有串数组及
相应的操作,那么数据可视化、图形用户界面的制作将会遇到困难。字符串与数值数组是两
种不同的数据类,它们的创建方式也不同。字符串的创建方式是:将待建的字符放在“单引
号对”中。注意,“单引号对”必须是在英文状态下输入,其作用是MATLAB 识别送来内容
“身份”所必需的,如A=’This is an example!’;就创建了一个字符串A。注意创建带
单引号的字符串时,每个单引号符用“连续2 个单引号符”标识。字符串的标识同数值数组
同,而且也可以使用size 指令观察串数组的大小。串数组的ASCII 码可以通过指令abs 和
double 来获取,而用char 指令可以把ASCII 码变为串数组,另外,MATLAB 可以很好的支持中文字符串数组。对于复杂串数组的创建,一是可以直接创建,但是要保证同一串数组的各行字符数相等,即保证各行等长,不推荐,太繁琐。二是可以利用串操作函数创建多行数组,比如char,
str2mat, strvcat 等,具体操作自己通过帮助体会。另外还可以通过转化函数产生数码字符长,比如A_str=int2str(A) 就是把整数数组A 转换成串数组,如果是非整数将被四舍五入后再转换,类似的函数还有num2str(把非整数数组转换为串数组,常用于图形中数据点的标识)、mat2str (把数值数组转换成输入形态的串数组,常与eval 指令配用)。
实验3-数组指针
实验三数组与指针
程序填空
1.(顺序)查找
本题分值:10
题目描述:随机产生10个整数存放到数组中(下标0的位置不放,从下标1开始),输入待查找的整数x,查找x是否存在于这10个数中。若存在,则输出x(最初)出现在这批数中的位置序号(例如1或2或……);若不存在x,则输出“不存在”。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码:
#include<iostream>
using namespace std;
int main()
{
int a[101],k,x;
for(k=1;k<=10;k++)
{
a[k]=rand()%101;
cout<<a[k]<<" ";
}
cout<<endl;
cin>>x;
for(int i=1;i<=10;i++)
if(a[i]==x)
break;
if(i<=10)
cout<<"x存在,它的位置序号是:"<<i<<endl;
else
cout<<"不存在!"<<endl;
return 0;
}
2.简单的插入
本题分值:10
题目描述:输入5个整数依次存放到数组a中(从下标1开始存放),再输入待插入的整数x以及它要插入到数组中的位置下标k(1≤k≤5),要求插入后不影响a中原来下标为k到5的所有元素的先后顺序。请按照数组中的元素顺序,输出插入前的5个整数和插入后的这6个整数。提示:插入时,应该先从后往前地(从下标5到下标k)将每个数组元素都后移1个位置,最后再将x存放到下标k的元素中。请在计算机上调试以下程序以补足其中的空格。
java实验题
实验一基本程序设计
(1)编写一个程序,读入一笔费用与酬金率,计算酬金和总钱数。例如,如果用户输入10作为费用,15%作为酬金率,计算结果显示酬金为¥1.5,总费用为¥11.5。
public class Exercise2_5 {
public static void main(String[] args) {
// Read subtotal
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("Enter subtotal: ");
double subtotal = input.nextDouble();
// Read subtotal
System.out.print("Enter gratuity rate: ");
double rate = input.nextDouble();
double gratuity = subtotal * rate / 100;
double total = subtotal + gratuity;
System.out.println("Gratuity is " + gratuity);
System.out.println("Total is " + total);
}
}
(2)(求ASCII码对应的字符)编写程序接受一个ASCII码(从0到128的整数),然后显示它所代表的字符。例如用户输入的是97,程序显示的是俄字符a。 public class Exercise2_8 {