当前位置:文档之家› 排序C++程序实验报告

排序C++程序实验报告

数据结构实验报告

实验名称:实验四——排序

学生姓名:

班级:

班内序号:

学号:

日期:

1.实验要求

使用简单数组实现下面各种排序算法,并进行比较。

排序算法:

1、插入排序

2、希尔排序

3、冒泡排序

4、快速排序

5、简单选择排序

6、堆排序(选作)

7、归并排序(选作)

8、基数排序(选作)

9、其他

要求:

1、测试数据分成三类:正序、逆序、随机数据

2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其

中关键字交换计为3次移动)。

3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒

(选作)

4、对2和3的结果进行分析,验证上述各种算法的时间复杂度

编写测试main()函数测试线性表的正确性。

2. 程序分析

插入排序类似于玩纸牌时整理手中纸牌的过程,它的基本方法是寻找一个指定元素在待排序元素中的位置,然后插入。

直接插入排序的基本思想可以这样描述:每次讲一个待排序的元素按其关键码的大小插入到一个已经排序好的有序序列中,直到全部元素排序好。元素个数为1时必然有序,这就是初始有序序列;可以采用顺序查找的方法查找插入点,为了提高时间效率,在顺序查找过程中边查找边后移的策略完成一趟插入。

希尔排序又称“缩小增量排序”,是对直接插入排序的一种改进,它利用了直接插入的两个特点:1.基本有序的序列,直接插入最快;2.记录个数很少的无序序列,直接插入也很快。希尔排序的基本思想为:将待排序的元素集分成多个子集,分别对这些子集进行直接插入排序,待整个序列基本有序时,再对元素进行一次直接插入排序。

冒泡排序的基本思想是:两两比较相邻的元素,如果反序,则交换位置,直到没有反序的元素为止。具体的排序过程是:将整个待排序元素划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的元素;对无序区从前向后依次将相邻元素的关键码进行比较,若反序则交换,从而使得关键码小的元素向前移,关键码大的元素向后移;重复执行前一个步骤,直到无序区中没有反序的元素。

快速排序元素的比较和移动是从两端向中间进行的。快速排序的基本思想是:在分区中选择一个元素作为轴值,将待排序元素划分成两个分区,使得左侧元素的关键码均小于或等于轴值,右侧元素的关键码均大于或等于轴值,然后分别对这两个分区重复上述过程,直到整个序列有序。

简单选择排序的基本思想是:第1趟,在待排序记录r[1…n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2…n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟,在待排序记录r[i…n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

2.1 存储结构

2.2 关键算法分析

1、直接插入排序

自然语言描述:

(1)将整个待排序的记录划分成有序区和无序区。有序区为待排序记录的第一个记录,无序区为所有剩余带待排序记录。

(2)从第二个数据开始依次插入到有序区中,直到所有记录插入完毕。

(3)在r[0]处设置“哨兵”,记为要插入的记录r[i],在自i-1起往前查找的过程中,同时后移记录。

(4)找到插入位置后,将待插入记录插入到有序表中。

(5)重复执行(3)、(4),直到无序区中没有记录。

伪代码描述:

1.初始化比较次数Cnum=0,移动次数Mnum=0

2.for(int i=2;i

2.1比较次数++

2.2 if(r[i]

2.2.1设置哨兵r[0]=r[i],移动次数++

2.2.2 for(j=i-1;r[0]

2.2.2.1 r[j+1]=r[j]

2.2.2.2比较次数++;移动次数++;

2.2.3 r[j+1]=r[0],移动次数++

时间复杂度:

最好情况下,待排序序列为正序,每趟秩序与有序序列的最后一个纪录的关键码比较一次,移动两次记录。总的比较次数为n-1,记录移动的次数为2(n-1)。因此,时间复杂度为O(n)。

最坏情况下,待排序序列为逆序,比较次数为(n+2)(n+1)/2,移动次数为(n+4)(n-1)/2因此,时间复杂度为O(n2).

平均情况下,总的比较次数为n(n-1)/4,移动次数为(n+4)(n-1)/4,因此,时间复杂度为O(n2)

空间复杂度:S(1)

直接插入排序只需要一个纪录的辅助空间,用来作为待插入记录的暂存单元和记录的插入位置的过程中的“哨兵”以及交换记录时的暂存单元。

2、希尔排序

自然语言描述:

(1)假设待排序记录为n个,先取整数d

(2)对每个子序列分别进行直接插入排序。在每个子序列中,待插入记录和同一子序列中的前一个记录比较,在插入记录r[i]时,自r[i-d]往前查找待插入位置,在查找过程中,记录后移也是移动d个位置。

(3)当搜索位置j<=0或者r[0]>=r[j],表示插入位置已经找到。在整个序列中,前d个记录分别是d个子序列的第一个记录,所以从第d+1个记录开始插入。

(4)再缩小d,重复以上步骤,再对每个子序列进行直接插入排序,直到d=1,即将所有记录放在一组进行一次直接插入排序,最终将所有记录重新排序得到有序序列。

伪代码描述:

1.初始化比较次数Cnum=0,移动次数Mnum=0

2.for(int d=n/2;d>=1;d=d/2)

2.1 for(int i=d+1;i

2.1.1比较次数++

2.1.2 if(r[i]

2.1.2.1 r[0]=r[i],移动次数++

2.1.2.2 for(j=i-d;i>0&&r[0]

2.1.2.2.1 r[j+d]=r[j]

2.1.2.2.2比较次数++,移动次数++

2.1.2.3 r[j+d]=r[0],移动次数++

时间复杂度:

希尔排序的时间性能分析是一个复杂的问题,因为它是所取增量的函数。有人在大量实验的基础上指出,希尔排序的时间性能在O(n2)和O(nlog2n)之间,当n在某个特定范围时,希尔排序的时间性能约为O(n1.3)

空间复杂度:S(1)

希尔排序只需要一个纪录的辅助空间,用于暂存当前待插入的记录。

3、冒泡排序

自然语言描述:

(1)将整个待排序的记录划分成有序区和无序区,初始有序区为空,无序区包括所有待排序记录。设置变量pos,此位置之后的所有记录均已经有序。

(2)对无序区从前向后一次将相邻记录的关键码进行比较,若反序则交换,从而使得关键码小的记录前移,关键码大的记录后移。

(3)每趟冒泡排序开始之前,设pos初值为0,在该趟排序过程中,只要有记录的交换,pos就大于0。通过pos是否为0判断是否有记录的交换,从而判断冒泡排序是否结束。

伪代码描述:

1.初始化比较次数Cnum=0,移动次数Mnum=0,int pos=n-1

2.while(pos!=0)

2.1int bound=pos,pos=0

2.2for(int j=1;j

2.2.1比较次数++

2.2.2 if(r[j]>r[j+1])

2.2.2.1 r[0]=r[j],r[j]=r[j+1],r[j+1]=r[0]

2.2.2.2 pos=j,Mnum+=3

时间复杂度:

最好情况下,待排序记录序列为正序,算法只执行了一趟,进行了n-1次关键妈的比较,不需要移动记录,时间复杂度为O(n)

最坏情况下,待排序记录序列为反序,每趟排序在无序序列中只有一个最大的纪录被交换到最终位置,故算法执行n-1趟,第i趟排序执行了n-1次关键码的比较和n-i次记录的交换,这样,关键码的比较次数为n(n-1)/2,记录的移动次数为3n(n-1)/2。

平均情况下,起泡排序的时间复杂度与最坏情况同数量级。

空间复杂度:S(1)

起泡排序只需要一个纪录的辅助空间,用来作为记录交换的暂存单元。

4、快速排序

自然语言描述:

(1)取第一个记录作为基准,设置两个参数i,j分别用来指示将要与基准记录进行比较的左侧记录位置和右侧记录位置,也就是本次划分的区间。

(2)右侧扫描过程:将基准记录与j指向的记录进行比较,如果j指向记录的关键码大,则j--,重复右侧扫描过程,直到右侧的记录小,即反序,执行r[i]=r[j]

(3)左侧扫描过程:将基准记录与i指向的记录进行比较,如果i指向记录的关键码大,则i--,重复右侧扫描过程,直到右侧的记录小,即反序,执行r[j]=r[i]

(4)重复执行(2)、(3),直到i、j指向同一位置。

(5)r[i]=pivot

(6)返回i的位置

伪代码描述:

1.int i=first; int j=end; int pivot=r[i]

2.while(i

2.1while((i=pivot))

2.1.1j--;比较次数++

2.2r[i]=r[j]

2.3if(i

2.3.1移动次数++

2.4while((i

2.4.1 i++;比较次数++

2.5r[j]=r[i]

2.6if(i

2.6.1移动次数++

3.r[i]=pivot

4.return i

时间复杂度:

最好情况下,每次划分对一个记录定位后,该记录的左侧子序列和右侧子序列的长度相同。在具有n个记录的序列中,对一个记录定位要对整个待划分序列扫描一遍,则所需时间为O(n)。时间复杂度为O(nlog2n)。

最坏情况下,待排序记录序列正序或逆序,每次划分只得到一个比上一次划分少一个纪录的子序列(另一个子序列为空)。此时,必须经过n-1次递归调用才能把所有记录定位,而且第i趟划分需要经过n-i次关键码的比较才能找到第i个记录的基准记录,因此总的比较次数为n(n-1)/2,记录的移动次数小于等于比较次数。因此时间复杂度为O(n2).

平均情况下,可以用归纳法证明,其数量级也为O(nlog2n)。

空间复杂度:

由于快速排序是递归的,需要一个栈来存放每一层递归调用的必要信息,其最大容量应与递归调用的深度一致,最好情况下为S(nlog2n),最坏情况下,因为要进行n-1次递归调用,所以,栈的深度为S(n),平均情况下,栈的深度为S(log2n)。

5、简单选择排序

自然语言描述:

(1)将整个记录划分为有序区和无序区,初始有序区为空,无序区包括所有待排序记录。

设置变量index,记录一次比较中关键码最小的位置。

(2)第i趟简单选择排序的待排序区间是r[i]-r[n],首先将index设定为当前无序区的第一个位置,然后用r[index]与无序区中其他记录进行比较,若有比r[index]小的记录,就将index改为这个新的最小的记录的位置。

(3)如果index不等于i,则将它与无序区中第一个记录交换,有序区增加一个记录,无序区减少一个记录。

(4)重复(2)(3),直到无序区只剩下一个记录为止。此时所有记录已经按照从小到大的顺序排好。

伪代码描述:

1.初始化比较次数Cnum=0,移动次数Mnum=0

2.for(int i=1;i

2.1int index=i

2.2for(int j=i+1;j

2.2.1Cnum++

2.2.2if(r[j]

2.2.2.1 index=j

2.2.3if(index!=i)

2.2.

3.1r[0]=r[i];r[i]=r[index];r[index]=r[0]

2.2.

3.2M num+=3

时间复杂度:

待排序序列为正序时,记录的移动次数最少,为0次。在待排序序列为逆序时,记录的移动次数最多为3(n-1)次。

无论记录的初始排列如何,关键码的比较次数相同,第i趟排序需进行n-1次关键码的比较,而简单选择排序需进行n-1趟排序,则总的比较次数为n(n-1)/2=O(n2)。所以,总的时间复杂度为O(n2),这是简单选择排序最好、最坏、和平均的时间性能。

空间复杂度:S(1)

简单选择排序过程中,只需要一个用来作为记录交换的暂存单元。

3. 程序运行结果

测试条件:

问题规模的数量级是10,正序、逆序和随机顺序数组分别为

int r1[10]={3,14,23,36,47,59,63,71,82,90};

int r2[10]={90,82,71,63,59,47,36,23,14,3};

int r3[10]={47,36,82,3,14,90,23,71,59,63};

测试结论:

程序对不同序列的数组运用各种不同方法进行排序时均能得到正确的排序结果,同时能够给出正确的比较次数和移动次数。

4. 总结

通过本次实验,我熟悉了各种排序方法的思路和优缺点,并根据时间复杂度和空间复杂度对几个方法进行了对比,用C++程序实现了对数据的排序,对每种排序方法实现的过程也都了然于胸。

插入排序:n*n的时间复杂度,稳定排序,原地排序。在数据大部分都排好了,用插入排序会给你带来很大的方便。数据的移动和交换都很少。

希尔排序:n*log(n)的时间复杂度,非稳定排序,原地排序。主要思想是分治,不过他的分治和合并排序的分治不一样,他是按步长来分组的,而不是想合并那样左一半右一半。

开始步长为整个的长度的一半,然后每组排序。接个步长减为原来的一半在分组排序,直到步长为1,排序之后希尔排序就完成了。这个思路很好,是插入排序的升级版,我觉得他是一个特别好的排序方法了。他的缺点就是两个数可能比较多次,但效率也是很高的。

冒泡排序,n*n的时间复杂度,稳定排序,原地排序。冒泡排序的思想很不错,一个一个比较,把小的上移,依次确定当前最小元素。因为他简单,稳定排序,而且好实现,所以用处也是比较多的。

选择排序,n*n的时间复杂度,稳定排序,原地排序。选择排序就是冒泡的基本思想,从小的定位,一个一个选择,直到选择结束。和插入排序是一个相反的过程,插入是确定一个元素的位置,而选择是确定这个位置的元素。它的好处就是每次只选择确定的元素,不会对很多数据进行交换。所以在数据交换量上应该比冒泡小。

排序算法实验报告

数据结构实验报告 八种排序算法实验报告 一、实验内容 编写关于八种排序算法的C语言程序,要求包含直接插入排序、希尔排序、简单项选择择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。 二、实验步骤 各种内部排序算法的比较: 1.八种排序算法的复杂度分析〔时间与空间〕。 2.八种排序算法的C语言编程实现。 3.八种排序算法的比较,包括比较次数、移动次数。 三、稳定性,时间复杂度和空间复杂度分析 比较时间复杂度函数的情况:

时间复杂度函数O(n)的增长情况 所以对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。 时间复杂度来说: (1)平方阶(O(n2))排序 各类简单排序:直接插入、直接选择和冒泡排序; (2)线性对数阶(O(nlog2n))排序 快速排序、堆排序和归并排序; (3)O(n1+§))排序,§是介于0和1之间的常数。 希尔排序 (4)线性阶(O(n))排序 基数排序,此外还有桶、箱排序。 说明: 当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O〔n〕; 而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O〔n2〕; 原表是否有序,对简单项选择择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。 稳定性: 排序算法的稳定性:假设待排序的序列中,存在多个具有相同关键字的记录,经过排序,这些记录的相对次序保持不变,则称该算法是稳定的;假设经排序后,记录的相对次序发生了改变,则称该算法是不稳定的。 稳定性的好处:排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,可以防止多余的比较; 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序

c语言实验报告

c语言实验报告及建议

实验6 数组 一、实验目的 (1)掌握一维数组和二维数组的定义、赋值和输入输出方法。 (2)掌握与数组有关的算法(特别是排序算法)。 (3)掌握字符数组和字符串的使用方法。 (4)能正确定义数组的指针,熟练使用指针访问数组元素。 (5)学会使用字符串的指针和指向字符串的指针变量。 (6)学会使用指针数组处理多个字符串数据。 二、实验预备知识: 三、实验容 1.观察下面给一维数组赋值有什么错误,怎样修改,写出正确运行后的结果。 #include "stdio.h" main() { int i,a[3],sum=0; scanf(“%d,%d,%d”,a); for(i=0;i<=3;i++) sum=sum+a[i]; printf("sum=%d",sum); } 错误语句:scanf(“%d,%d,%d”,a);改正: scanf("%d,%d,%d",&a[0],&a[1],&a[2]); 运行结果: 1,1,1,sum=3 2.(1)补全下面的程序,程序的功能是求一位数组的中最小元素的值及其所在的下标号。#include "stdio.h" main() { int i,a[10],min,index; (1) for(i=0;i<10;i++) /*利用一充循环给数组a赋值*/ scanf(“%d”, (2)&a[i] ); for(i=0, (3)min-a[0] ;i<10;i++) /*求数组a中的最小值min及其对应的下标index*/ if(min>a[i]){ (4) min=a[i];index=i; } printf("MIN=%d,index=%d\n",min,index); }

C语言实验报告-实验2 顺序结构程序设计

实验2 顺序结构程序设计 一、实验目的 1. 学会使用自然语言或伪代码描述算法 2. 掌握变量、运算符、表达式的使用 3. 熟悉顺序结构程序中语句的执行过程 4. 掌握标准输入流对象cin及标准输出流对象 二、实验内容 编写程序在屏幕上显示如图2-1所示的菜单。 图2-1 学生选课管理系统主界面 实验步骤: 范例: 1)在VS2008中新建项目,在项目中新建C++源文件,输入下面程序,并且编译、连接。 //*************************************************************** //* 程序名:实训2_1.cp * //* 主要功能: * //* 显示主菜单,并获取用户输入的模块编号 * //*************************************************************** #include // 包含输入输出接口文件 using namespace std; // 引用标准命名空间 void mainMenu(); int main() // 定义主函数 { // 主函数开始 mainMenu(); return 0; } void mainMenu() { system("cls"); cout<<"\n\n\n\n\n"; cout<<"\t\t|---------------学生选课系统(学生版)------------|\n";

cout<<"\t\t|\t 0. 退出 |\n"; cout<<"\t\t|\t 1. 学生信息管理 |\n"; cout<<"\t\t|\t 2. 教师信息管理 |\n"; cout<<"\t\t|\t 3. 课程信息管理 |\n"; cout<<"\t\t|\t 4. 学生选课管理 |\n"; cout<<"\t\t|\t 5. 学生成绩管理 |\n"; cout<<"\t\t|\t 6. 信息统计模块 |\n"; cout<<"\t\t|-----------------------------------------------|\n\n"; cout<<"\t\t\t请输入模块编号(0-6):"; } 2)运行范例所示程序,观察输出结果 实训1要求编写程序在屏幕上显示如图2-2所示的菜单。 图2-2 学生信息管理菜单 实验步骤: 1) 修改范例的源程序,将各条输出语句按上图所示进行修改即可。注意增加或删除一些空格或-,使右边的|对齐。

C程序设计综合实验报告

课题一:根据条件进行学生成绩排名 1.在函数中进行10个学生成绩从高到低排名 sort(int a[10]) 2.改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名, 3.改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为…a?按升序排,style为?d?按降序排。(a:ascending 升,d:descending 降) #include int select() { int x; printf("\nWelcome enter this program\n"); printf("\t0:enter 10 students' scores\n"); printf("\t1:enter n students' scores\n"); printf("\t2:choose your style\n"); printf("\t3:over\n"); do { printf("\nPlease enter your choice\n"); scanf("%d",&x); if(x<0||x>3) printf("Sorry your choice is wrong,please enter again\n"); else return x; }while(1); } void scort1(int a[10]) { int i,j ,t; printf("Please enter the scores\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) { for(j=9;j>=i;j--) if(a[j]

c语言排序实验报告

c语言排序实验报告 C语言排序实验报告 引言: 排序是计算机科学中非常重要的一项基础操作,它在各个领域都有广泛的应用。本实验旨在通过使用C语言实现不同的排序算法,对比它们的性能和效率,并 对排序算法的实现原理进行深入探讨。 一、实验背景 排序算法是将一组无序的数据按照特定的规则进行重新排列的过程。在计算机 科学中,常用的排序算法包括冒泡排序、选择排序、插入排序、快速排序等。 这些算法的不同之处在于其时间复杂度、空间复杂度以及稳定性等方面的差异。 二、实验目的 1. 理解不同排序算法的基本原理和实现方法; 2. 掌握C语言的基本语法和数组操作; 3. 比较不同排序算法的性能和效率。 三、实验过程 1. 冒泡排序 冒泡排序是一种简单的排序算法,它通过比较相邻元素的大小并交换位置来实 现排序。具体实现过程如下: ``` void bubbleSort(int arr[], int n) { for (int i = 0; i < n-1; i++) { for (int j = 0; j < n-i-1; j++) {

int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } ``` 2. 选择排序 选择排序是一种简单直观的排序算法,它每次从待排序的数据中选择最小(或最大)的元素放到已排序序列的末尾。具体实现过程如下: ``` void selectionSort(int arr[], int n) { for (int i = 0; i < n-1; i++) { int minIndex = i; for (int j = i+1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int temp = arr[i];

c程序实验报告

c程序实验报告 C程序实验报告 引言: 计算机编程是现代科技领域中不可或缺的一部分,而C语言作为一种高效、灵 活的编程语言,在软件开发中被广泛应用。本实验旨在通过实践,探索C语言 的基础知识和编程技巧,并通过实验结果来验证和巩固所学知识。 实验一:C语言基本语法 在本实验中,我们首先学习了C语言的基本语法和常用数据类型。通过编写简 单的程序,我们熟悉了变量的声明和初始化、运算符的使用、条件语句和循环 语句的控制流程等基本概念。实验中,我们编写了一个简单的计算器程序,可 以进行基本的加减乘除运算,并输出结果。通过这个实验,我们更加深入地理 解了C语言的基本语法和程序执行的过程。 实验二:函数和数组 在本实验中,我们学习了函数的定义和调用,以及数组的使用。通过编写程序,我们掌握了函数的参数传递和返回值的使用,了解了函数的封装和模块化编程 的思想。同时,我们也学习了数组的声明和初始化,以及数组元素的访问和操作。通过编写一个学生成绩管理程序,我们可以输入学生的成绩,计算平均分 并输出最高分和最低分。这个实验让我们对函数和数组的使用有了更深入的了解。 实验三:指针和字符串 在本实验中,我们学习了指针的概念和使用。指针是C语言中非常重要的概念,通过指针可以直接访问内存中的数据,提高程序的效率和灵活性。我们学习了

指针的声明和初始化,以及指针的运算和指针与数组的关系。同时,我们还学习了字符串的表示和操作,了解了字符串的常见函数和库函数的使用。通过编写一个简单的字符串反转程序,我们加深了对指针和字符串的理解和应用。实验四:文件操作和结构体 在本实验中,我们学习了文件的读写操作和结构体的使用。文件操作是C语言中常用的技术,通过文件操作可以实现数据的读取和存储。我们学习了文件的打开和关闭,以及读写文件的函数和方法。同时,我们也学习了结构体的定义和使用,结构体可以将多个不同类型的数据组合在一起,方便操作和管理。通过编写一个学生信息管理系统,我们可以将学生的信息存储到文件中,并可以进行查询和修改。这个实验让我们对文件操作和结构体有了更深入的了解。实验五:动态内存分配和链表 在本实验中,我们学习了动态内存分配和链表的使用。动态内存分配可以根据程序的需要在运行时分配和释放内存,提高内存的利用率。我们学习了动态内存分配的函数和方法,以及内存泄漏和内存溢出的问题。同时,我们也学习了链表的定义和使用,链表可以动态地存储和管理数据,方便进行插入和删除操作。通过编写一个简单的通讯录程序,我们可以动态地添加和删除联系人,并可以进行查询和打印。这个实验让我们对动态内存分配和链表有了更深入的了解。 结论: 通过本次实验,我们全面了解了C语言的基本语法和常用技巧,掌握了函数、数组、指针、文件操作、结构体、动态内存分配和链表等重要概念和技术。通过实践,我们加深了对C语言的理解和应用,并提升了编程能力。C语言作为

c语言顺序结构程序实验报告

c语言顺序结构程序实验报告 C语言顺序结构程序实验报告 引言: C语言作为一种高级编程语言,具有广泛的应用领域。在本次实验中,我们将 学习和实践C语言中的顺序结构程序设计。通过编写一系列的实验程序,我们 将深入了解顺序结构的概念和原理,并掌握如何使用C语言编写简单的顺序结 构程序。 实验目的: 1. 了解顺序结构程序的概念和特点; 2. 掌握C语言中的基本数据类型和变量的声明; 3. 学习使用C语言中的输入输出函数; 4. 熟悉C语言中的基本运算符和表达式; 5. 掌握C语言中的条件语句和循环语句的使用。 实验步骤: 1. 实验程序一:计算圆的面积和周长 首先,我们需要声明一个常量PI,并定义一个变量radius用于存储圆的半径。然后,通过输入函数获取用户输入的半径值,并使用相应的公式计算圆的面积 和周长。最后,通过输出函数将计算结果显示在屏幕上。 2. 实验程序二:华氏温度转换为摄氏温度 在这个实验中,我们需要定义一个变量fahrenheit用于存储华氏温度的值。 然后,通过输入函数获取用户输入的华氏温度,并使用相应的公式将其转换为 摄氏温度。最后,通过输出函数将转换后的摄氏温度显示在屏幕上。

3. 实验程序三:判断一个数是否为偶数 在这个实验中,我们需要定义一个变量num用于存储用户输入的数值。然后,通过输入函数获取用户输入的数值,并使用条件语句判断该数是否为偶数。最后,通过输出函数将判断结果显示在屏幕上。 4. 实验程序四:计算1到n的累加和 在这个实验中,我们需要定义一个变量n用于存储用户输入的数值。然后, 通过输入函数获取用户输入的数值,并使用循环语句计算1到n的累加和。最后,通过输出函数将计算结果显示在屏幕上。 实验结果与分析: 通过以上实验程序的编写和运行,我们成功实现了顺序结构程序的设计。在实 验程序一中,我们计算了圆的面积和周长,通过输入函数获取用户输入的半径值,并使用相应的公式计算出了圆的面积和周长。在实验程序二中,我们将华 氏温度转换为摄氏温度,通过输入函数获取用户输入的华氏温度,并使用相应 的公式将其转换为摄氏温度。在实验程序三中,我们判断了一个数是否为偶数,通过输入函数获取用户输入的数值,并使用条件语句判断该数是否为偶数。在 实验程序四中,我们计算了1到n的累加和,通过输入函数获取用户输入的数值,并使用循环语句计算出了1到n的累加和。 结论: 通过本次实验,我们深入了解了C语言中的顺序结构程序设计。通过编写一系 列的实验程序,我们掌握了C语言中的基本数据类型和变量的声明,学习了使 用C语言中的输入输出函数,熟悉了C语言中的基本运算符和表达式,并掌握 了C语言中的条件语句和循环语句的使用。通过实践,我们加深了对顺序结构

c语言实验报告

c语言实验报告 一、引言 C语言是一种广泛应用于计算机科学和软件开发领域的编程语言。它的简洁性、高效性以及跨平台的特性使其成为许多开发人员的首选。本篇实验报告将介绍我在学习C语言过程中进行的几个实验项目,并详细记录每个实验的步骤、结果以及对C语言的理解。 二、实验一:Hello World! 在学习任何一门编程语言时,第一个示例程序往往是输出"Hello World!"。这个简单的程序虽然看似微不足道,却能够帮助初学者了解基本的编译和运行过程。在实验中,我使用了C语言的基本语法,编写了一个简单的Hello World程序,并成功地将其编译并运行。这个小小的成就让我对C语言有了初步的认识和信心。 三、实验二:计算器程序 为了更深入地理解C语言的数据类型和运算符,我决定编写一个简单的计算器程序。这个程序可以实现基础的四则运算和一些简单的数学函数,如平方根和求幂等。通过这个实验,我学会了

如何使用变量、条件语句和循环结构来实现计算功能,并通过不断调试和修改,使程序更加健壮和高效。 四、实验三:数组与排序 数组是C语言中非常重要的概念,在实验三中,我探索了数组的用法和特性,并将其应用于一个排序算法中。我选择了冒泡排序作为实验的排序算法,通过比较相邻元素的大小并不断交换位置,最终将数组中的元素按照升序排列。这个实验使我更加熟悉了数组的操作,也加深了我对算法思想和效率的理解。 五、实验四:文件操作 在现实世界中,大部分的应用程序需要与文件进行交互。为了学习如何使用C语言进行文件操作,我进行了实验四。在这个实验中,我编写了一个小程序,能够读取一个文本文件的内容,统计其中不同字符的数量,并将结果输出到另一个文件。通过这个实验,我了解了如何打开、关闭和读写文件,也学习了异常处理以及文件操作的一些注意事项。 六、实验五:数据结构和指针

C语言实验报告总结(共6篇)

c语言上机实验心得 在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好c语言,这对我们以后的发展是十分重要的。 说到这,上机实验当然就是一个必不可少的环节了,c语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。 通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了c语言那就大错特错了。 我主要存在以下的这些缺点: 1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。而在最后 输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。 2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解 题了。 3、 4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够 深刻。 5、 6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在 一点问题。 为了能更好地学好c语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。 实验中我深刻意识到完成程序的编写,决不意味着万事大吉。认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。所以程序的调试是一个技巧性很强的工作,它可能比编一个程序耗时更多。由此可看出上机实践的重要性。 通过本次c语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。编程的时候有因为顺利编出程序而开心过、有因为做得比人家慢而郁闷过、有因为不知从何入手而无奈过、有因为不知错出在哪而彷徨过??但随着练习的增多,我对c语言比以前熟了很多,不再只是纸上谈兵,我都有能力独立做出一些程序,可能对于一些“高手来说这不算什么,或者他们早就会了,但我依然觉得很开心,因为我跟我自己比是进步了。 当然,我还得感谢老师的指导与帮助,如果没有老师和其他同学的指点,我可能对c语言还是一筹莫展,在实验中遇到的大大少少的问题与所犯过的错误将是我以后的要加以注意的地方与认真审查的部分,为我奠定坚固的基石。伴随着学习的深入,我发现高深的东西还有很多很多,不懂不熟的知识还有很多,所以我不能停步,对c语言,我以后会更加努力学习的。

C语言程序设计实验报告

C语言程序设计实验报告 一、引言 C语言程序设计是计算机科学与技术专业中的一门基础课程。通过实验学习,我深入了解了C语言的基本语法和程序设计的思想,掌握了一定的编程能力。本文将详细介绍我在C语言程序设计实验中所进行的实验项目、实验结果和实验心得。 二、实验项目 1. 实验一:C语言程序设计基础 在这个实验中,我编写了一个简单的C语言程序,实现了对用户输入的两个整数进行相加并输出结果的功能。在程序设计中,我正确使用了C语言的基本语法,包括变量定义、输入输出函数的调用等。 2. 实验二:条件语句和循环结构 这个实验要求我编写一个C语言程序,实现对用户输入的分数进行等级评定的功能。根据用户输入的分数,程序将输出相应的等级,如优秀、良好、及格等。为了实现这个功能,我灵活运用了条件语句和循环结构,使程序具有良好的交互性。 3. 实验三:数组和字符串 在这个实验中,我学习了C语言中数组和字符串的使用方法,并编写了一个程序,实现了对一个整数数组的排序功能。通过实验,我进

一步掌握了数组的声明、初始化和遍历等操作,提高了我对C语言程序设计的理解。 4. 实验四:函数和指针 实验四要求我编写一个C语言程序,实现对一个数组中的元素求和的功能。在这个实验中,我了解了函数的定义和调用、指针的基本概念以及函数指针的使用。通过编写程序,我加深了对函数和指针的理解,并提高了程序的运行效率。 三、实验结果 通过以上实验项目的设计与实现,我得到了如下实验结果: 1. 实验一的结果是可以正确进行数值相加并输出结果。 2. 实验二的结果是根据输入的分数得到相应的等级评定。 3. 实验三的结果是对输入的整数数组进行排序,并输出排序后的结果。 4. 实验四的结果是对数组中的元素进行求和,并输出求和结果。 四、实验心得 通过整个实验过程,我深刻认识到了C语言程序设计的重要性和应用广泛性。C语言不仅是其他高级编程语言的基础,也是培养程序设计思维和逻辑思维的重要工具。通过实验,我不仅掌握了C语言的基础知识和编程技巧,还培养了自己解决问题和分析问题的能力。

c程序实验报告总结

c程序实验报告总结 C程序实验报告总结 在本次实验中,我们使用C程序语言进行了一系列实验,并对实验结果进行了 总结和分析。本文将对实验过程和结果进行详细的总结,以及对实验中遇到的 问题和解决方法进行讨论。 实验一:基本语法和数据类型 在第一个实验中,我们对C程序的基本语法和数据类型进行了学习和实践。通 过编写简单的程序,我们掌握了C语言中的变量声明、赋值和基本运算符的使 用方法。同时,我们也学习了C语言中的数据类型,包括整型、浮点型和字符 型等。通过实验,我们对C语言的基本语法和数据类型有了更深入的理解。 实验二:条件语句和循环结构 在第二个实验中,我们学习了C语言中的条件语句和循环结构。我们通过编写 程序来实现条件判断和循环操作,进一步加深了对C语言控制语句的理解。我 们还学习了C语言中的逻辑运算符和关系运算符的使用方法,以及如何使用if 语句、switch语句和for循环、while循环等循环结构。通过实验,我们对C语 言中的控制语句有了更深入的认识。 实验三:函数和数组 在第三个实验中,我们学习了C语言中的函数和数组的使用方法。我们通过编 写程序来实现函数的定义和调用,以及数组的声明和使用。我们还学习了C语 言中的指针和动态内存分配的方法,以及如何使用指针来操作数组。通过实验,我们对C语言中的函数和数组有了更深入的了解。 总结和展望

通过本次实验,我们对C程序语言有了更深入的理解和掌握。我们不仅学习了C语言的基本语法和数据类型,还掌握了C语言中的控制语句和函数、数组的使用方法。通过实验,我们不仅提高了编程能力,还培养了动手实践和解决问题的能力。在未来的学习中,我们将继续深入学习C语言,不断提高自己的编程水平,为将来的工作和研究打下坚实的基础。

《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》 实验报告 2012~2013学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图):

2. (1) 改正后的源程序: (2) 运行结果(或截图): 五、思考题: 1. 一个C程序上机的步骤有哪些? 答: 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答: 成绩指导教师签名

实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容: 教材《C语言程序设计教程》第2章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。 main( ) { char m,n; m=280; n=320; printf(“%d\t%d\n”,m,n); printf(“%c\t%c\n”,m,n); } 2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include int main( ) { int a=3,b=4,c=8; float d,e; d=a+b/c; e=a+(float)b/c; printf("d=%f,e=%f\n",d,e); } 3. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include main( ) { int a,b,c,d,i,j,m,n; a=b=c=d=3; i=a++; j=++b; m=c--;

c语言实验报告模板

c语言实验报告模板 引言 在计算机科学与技术领域,C语言是一门非常重要的编程语言。作为一种通用的高级编程语言,它具有简洁、高效、可移植等特点,被广泛应用于软件开发、系统编程、嵌入式系统等领域。为 了提高学生对C语言的理解和应用能力,我所在的学院进行了一 系列C语言实验。本报告旨在总结和分享我在C语言实验中的学 习和体会,同时提供一个实验报告的模板,以供其他学生参考。 实验一:C语言基础知识 在第一次实验中,我们主要学习了C语言的基础知识。包括C 语言的语法结构、变量和数据类型的使用、运算符和表达式的应 用等。通过编写简单的程序,如打印"Hello, World!"等,我们熟悉 了C语言的基本语法和编译运行的过程。在实验过程中,我们还 掌握了如何使用编译器进行错误调试,提高了我们的程序设计和 调试能力。 实验二:C语言数组和字符串的应用 实验二主要涉及C语言中数组和字符串的应用。通过练习,我 们掌握了数组的定义和声明,以及数组与指针的关系。我们还学

习了如何使用数组进行排序、查找等操作,并通过编写程序实现 了几个经典的排序算法,如冒泡排序、插入排序等。此外,我们 还学习了字符串的表示和处理方法,并实现了字符串的拼接、复 制等功能。 实验三:C语言函数和指针的应用 在实验三中,我们学习了C语言中函数和指针的应用。通过编 写函数来实现特定的功能,我们掌握了函数的定义和调用方法。 同时,我们还了解了函数的参数传递机制,包括按值传递和按引 用传递。在实验过程中,我们还学习了指针的基本概念和用法, 包括指针变量的定义和使用,指针与数组的关系等。通过实验, 我们强化了对函数和指针的理解,并在编程实践中加深了对其应 用的熟练度。 实验四:C语言文件处理 实验四是关于C语言文件处理的实验。我们学习了如何使用C 语言读写文件,并实现了文件的复制、合并等操作。通过实验, 我们了解了文件指针的概念和使用方法,并熟悉了文件操作函数,如fopen、fread、fwrite等。我们还学习了如何处理文本文件和二 进制文件,并通过实际示例加深了对文件处理的理解和实践。

C语言实验报告

C语言实验报告 C语言实验报告1 一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能! 一、心得与感想 首先,在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。在做题的过程中让我们把这些知识复习了一遍,强化了知识! 其次,这次作中所碰到的题目,在实训中已经接触过,所我们都比较深知这些题目的要求和算法,因次在编写小程序时比较快,而且算法也是比较简化,运算准确。鉴次我明白很多编程题要经过多次编写修改与调试,才会得到最简略的算法。 再次,平时我们学C语言视乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用! 虽然我这次是编写一个菜单的程序,但是如果我么留心的话,我们身边有许多电子设备都是内置有程序的,我们也可以在此次专题实训过后,自行确定其他的专题进行编写程序,这样可以让我们的知识更加深化丰富! 这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最后的时间里才

上交的作业。每当我把程序写完以后,却由于每一台电脑的识别格式不一样而导致我所写的文件一次次的被损坏,尽管这样,我仍然没有放弃,最后还赶在截止时间到来之前上交了我的作业! 这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不轻易的向老师询问,因为好像蛮简单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在老师和与同学讨论下完成的。 在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。 C语言实验报告2 学号:__________ 姓名:__________ 班级:_________ 日期:__________ 指导教师:__________ 成绩:__________ 实验六综合实验

顺序结构程序设计-C语言程序实验报告

安徽工程大学 高级语言程序设计实验报告 班级姓名同组者/ 成绩 日期2019.09.30 指导教师 实验名称顺序结构程序设计 一、实验目的 1.掌握数据的输入/输出方法,能正确使用有关格式转换符。 2.掌握顺序结构程序中语句的执行过程。 3.掌握顺序结构程序的设计方法。 二、实验内容 1.P47页第一个程序的作用是依次输入2个整数,计算并输出这2个整数之差。 (1)分析程序,若运行时输出:200,160<回车>,预期结果是多少? (2)上机运行该程序,查看程序运行结果是否符合题目要求。如果不符合,请分析原因并修改程序,直至符合要求为止。 2.P47页第二个程序用于实现按下列公式计算并输出s1和s2的值:s1=3/(a+b)2,s2=ab/(a+b)3,其中a,b为整型数据。 (1)根据题意修改上述程序,并进行调试,直到正确为止。 (2)在(1)的基础上,将“scanf("%d,%d",&a,&b);”改为“scanf("%d%d",&a,&b);”后再编译、连接、运行。 3.分析P47页第三个程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致,并分析其原因。 4.编程实现下列功能并上机调试运行。 (1)设圆半径为r,求圆周长和面积。要求用scanf函数输入数据,输出时取小数点后两位。 (2)输入一个3位十进制整数,分别输出百位、十位以及个位上的数。 (3)从键盘输入一个带两位小数的实数,将其整数部分和小数部分分离后输出。

(4)用getchar函数读入两个字符,然后分别用putchar和printf函数输出这两个字符。 *思考题: 5. 若实验内容1的程序改为P48页第一个程序段,运行该程序,输入5,3,查 看程序运行结果是否与自己预测的结果一致,并分析原因。 6.若实验内容1的程序改为P48页第二个程序段,运行该程序,输入5,3,查看 程序运行结果是否与自己预测的结果一致,并分析原因。 7.在实验内容2的基础上若把程序第7行语句“s=3/(a+b)*(a+b)”改为 “s=3.0/[(a+b)*(a+b)],”然后编译、连接和运行。查看会出现什么结果,并分析原因。 三、算法流程图或实验步骤(可根据需要增删、修改) 1.(1)算法流程图: 原程序: #include void main ( ) { float a, b, c; printf("input a,b:"); scanf("%d,%d",&a,&b); c=a-b; printf("c=%d\n",c); } 修改后: #include void main ( ) { float a, b, c; printf("input a,b:"); scanf("%f,%f",&a,&b); c=a-b;

C程序实验报告

工程学院实验报告 课程名称: c程序设计课程代码: 8234510 学院(直属系): 年级/专业/班: 2010级汽电1班学生姓名: 学号: 31201008030 实验总成绩: 任课 教师: 开课学院: 工程学院实验中心名称: 交通实验中心 西华大学实验报告(理工类) 开课学院及实验室:汽车学院机房(5d-215)实验时间:年月日 1、实验目的 2、实验设备、仪器及材料 3、实验内容 一般实验: 3.1实验方案设计与选择(设计性、创新性实验需写该项内容) 3.2实验原理及实验步 骤(实验工作原理或实验的主要操作过程) 3.3实验记录(核心代码及调试过程) 注解:理工科实验需记录实验过程中的数据、图表、计算、现象观察等,实验过程中出 现的问题;其它如在计算机上进行的编程、仿真性或模拟性实验需记录程序核心代码以及程 序在调式过程中出现的问题及解决方法;记录程序执行的结果。 上机实验: 3.1上机实验的内容及要求 3.2算法设计思想与算法实现步骤 3.3程序核心代码,程序调试过程中出现的问题及解决方法 3.4 程序运行的结果 4、实 验总结 4.1实验结果分析及问题讨论 4.2实验总结心得体会 注解:实验总结的内容根据不同学科和类型实验要求不一样,一般理工科类的实验需要 对实验结果进行分析,并且对实验过程中问题进行讨论;在计算机上进行的编程、仿真性或 模拟性实验需要对上机实践结果进行分析,上机的心得体会及改进意见。其它实验应总结实 验过程写出心得体会及改进意见。 1、实验目的 (1) 熟悉c语言的集成环境,了解菜单的使用方法。 (2) 掌握c语言程序上机的编辑、编译、连接、运行的基本步骤。 (3) 了解c语 言程序的结构。 2、实验设备、仪器及材料 (1) 硬件环境 微型计算机(intel x86系列cpu)一台 (2) 软件环境 windows98/2000/xp操作系统 vc6.0集成开发环境 3、实验内容 3.1上机实验的内容及要求 (1) 熟悉vc中常用菜单项及对应快捷键的使用方法。 (2) 熟悉c语言程序上机的编辑、编译、连接、运行的基本步骤。 (3) 编程实现一个 字符串的输出。 (4) 编程输出两个数的最大值。 (5) 计算由键盘输入的任意两个整数的积。 3.2算法设计思想与算法实现步骤 (1)编程实现一个字符串的输出为程序一,编程中,定义一个空函数后,直接由利用 printf输出字符串。

c语言实验报告

计算机软件技术基础实验报告 实验一:线性表的排序与查找 一.实验内容 a)键盘输入一组无序数据,添加到线性表中; b)排序线性表并输出排序结果; c)键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序 表),输出结果; d)键盘输入一个数,并从线性表中删除相应的数据,输出结果。 二,源程序 // Experiment1。cpp :定义控制台应用程序的入口点。 // #include "stdafx.h” #include "iostream” #include 〈conio。h〉 // 程序实现有各种方法,这里给出一个实例。 // 定义一个线性表 const int nMaxSize = 15;// 最大值 int nLen = 0; // 表中元素个数 int nLinearList[nMaxSize]; // 定义操作 void LSort(); void LOut(); void LInsert(int n); void LDelete(int n); int main(int argc,TCHAR*argv[]) { // 输入数据并放入线性表中 printf(”Pleas e input data\n"); // std::cout 〈< "Please input data\n”; int nIn = 0; for (int i = 1; i <= 10;i++) { scanf(”%d”,&nIn);// std::cin >〉nIn; nLinearList[i] = nIn; nLen++;

} LSort();// 排序线性表 LOut();// 输出结果 printf(”Please input a data to i nsert \n”); scanf(”%d”,&nIn); LInsert(nIn);// 输入一个数字,并插入到线性表中LOut(); printf(”Please input a data to delete \n"); scanf("%d”,&nIn); LDelete(nIn);// 输入一个数字,并从线性表中删除LOut(); char chTmp; printf(”Please input a char to finish this program."); chTmp = getch(); return 0; } void LSort()// 冒泡排序,由大到小 { int j,F,k,M; F=nLen; while(F〉0) {k=F-1;F=0; for(j=1;j<=k;j++) {if(nLinearList[j]〈nLinearList[j+1]) {M=nLinearList[j]; nLinearList[j]=nLinearList[j+1]; nLinearList[j+1]=M; F=j;}}} } void LOut() { printf("\n”); for (int i = 1;i 〈= nLen;i++) { printf( "%d, ", nLinearList[i]); }

C语言程序实验报告

《高级程序设计语言》 实验报告 题目:实验一 C语言程序开发环境及上机过程完成人:冯孔丽 专业班级:软件18冯孔丽 学号: 指导教师: 2019年 1 月7 日 广西科技大学计算机与通信工程学院

第二章 1 实验目的: (1)掌握基本输入、输出函数的格式及其主要用法。 (2)掌握数据类型的概念及简单变量的定义和使用方法。 (3)熟悉宏定义命令和文件包含命令的用法。 (4)学会顺序结构程序设计的基本方法 2 实验内容: 1.某学生有两门考试课程,实行百分制考核。编写程序,输入这两门课程的成绩,计算其平均成绩。 2.编写程序,将摄氏温度(C)转换为华氏温度(F)转换公式为F=9C/5+32。 3.输入一个100~999内的整数,然后反序显示这个数,如输入123,则输出321。 3 程序设计 1)操作代码: ○1#include int main() { int sl, s2, ave ; scanf("%d%d",&sl,&s2); ave=(s1+s2)/2; printf("Average: %d\n",ave); return 0; } ○2#include int main() { float f, c ; scanf("%f",&c); f=9*c/5.0+32; printf("F=%6. 2f\n",f); return 0; } ○3#include int main() { int a,wl,w10,w100; scanf("%d",&a) ; w1=a%10; w10=(a/10)%10; w100=a/100; printf("%d%d%d\n", wl, w10, w100);

相关主题
文本预览
相关文档 最新文档