实验4数组1
- 格式:doc
- 大小:43.00 KB
- 文档页数:4
虚拟仪器实验报告四专业年级电信081班姓名学号08808030 成绩一、实验目的:LabVIEW编程软件入门学习二、实验内容:实验四字符串、数组、簇和矩阵4.1 字符串(String)4.2 数组(Array)4.3 簇(Cluster)4.4 矩阵(Matrix)三、实验结果:练习1组合字符串使用一些字符串功能函数将一个数值转换成字符串,并把该字符串和其他一些字符串连接起来组成一个新的输出字符串。
打开一个新的前面板,按照下图向其中添加对象练习2 字符串子集和数值的提取创建一个字符串的子集,其中含有某个数值的字符串显示,再将它转换成数值。
练习3 Build Text Express VI练习4 用循环创建数组使用For循环和While循环的自动索引(auto-indexing)功能自动创建数组。
练习5 创建二维数组使用两个嵌套的For循环(即一个循环在另一个循环内)可以创建二维数组。
嵌套的For循环创建二维数组时,外层循环创建行,内层循环创建列。
练习6 多图区图形创建含有多条曲线的图形,方法是创建一个数组,用它汇集传给单图区图形的类型的数据元素。
练习7使用创建数组功能函数使用创建数组函数,把一些元素和输出组织成一个更大的数组。
练习8 多态化练习多态化练习2练习9 簇排序前面板包含两个簇。
第一个簇中,第一个组件是数字控件;第二个簇中,第一个组件是数字指示器。
第一个图中簇控件正确连接到簇指示器。
第二个图中,簇顺序改变,此时连线无效。
练习10簇目的:学习创建簇、分解簇,再捆绑簇并且在另一个簇中显示其内容。
为第3章的习题2连续温度采集监测添加报警信息,如下图所示,当报警发生时输出报警信息,例如“温度超限!当前温度78.23℃”,正常情况下输出空字符串。
四、实验总结:这次实验的主要内容是字符串、数组、簇和矩阵,综合看来本次实验的内容更为晦涩难懂一些,从我的理解,前几次的实验时候的思想主要是一维的,平面的,而这回的实验内容要求我们用立体的,二维的思维去思考。
班级:计算机11-3班学号:姓名:曲玉昆成绩:_________实验四集合的交、并和差运算的实现1. 问题描述用有序单链表表示集合,实现集合的交、并和差运算。
2. 基本要求⑴对集合中的元素,用有序单链表进行存储;⑵实现交、并、差运算时,不另外申请存储空间;⑶充分利用单链表的有序性,算法有较好的时间性能。
3. 设计思想首先,建立两个带头结点的有序单链表表示集合A和B。
单链表的结点结构和建立算法请参见教材,需要注意的是:利用头插法建立有序单链表,实参数组应该是降序排列。
其次,根据集合的运算规则,利用单链表的有序性,设计交、并和差运算。
⑴根据集合的运算规则,集合BA 中包含所有既属于集合A又属于集合B的元素。
因此,需查找单链表A和B中的相同元素并保留在单链表A中。
算法如下:Array⑵根据集合的运算规则,集合BA 中包含所有或属于集合A或属于集合B的元素。
因此,对单链表B中的每个元素x,在单链表A中进行查找,若存在和x不相同的元素,则将该结点插入到单链表A中。
算法请参照求集合的交集自行设计。
⑶根据集合的运算规则,集合A-B中包含所有属于集合A而不属于集合B的元素。
因此,对单链表B中的每个元素x,在单链表A中进行查找,若存在和x相同的结点,则将该结点从单链表A中删除。
算法请参照求集合的交集自行设计。
template<class T>struct Node{T data;N ode<T>*next;};template <class T>class LinkList{public:L inkList(T a[],int n);//建立有n个元素的单链表~LinkList();v oid Interest(Node<T> *A, Node<T> *B);//求交集v oid Sum(Node<T> *A,Node<T> *B);/v oid Subtraction(Node<T> *A,Node<T> *B);v oid PrintList();v oid Show(int i);N ode<T> *first;};template<class T>LinkList<T>::LinkList(T a[],int n){N ode<T>*s;f irst = new Node<T>;f irst->next=NULL;f or(int i=0;i<n;i++){s = new Node<T>;s->data=a[i];s->next=first->next;first->next=s; }}template <class T>LinkList<T>::~LinkList(){N ode<T> *p,*q;p = first;//工作指针p初始化w hile(p) //释放单链表的每一个结点的存储空间{q = p;//暂存被释放结点p = p->next;//工作指针p指向被释放结点的下一个结点,使单链表不断开delete q; }}template<class T>void LinkList<T>::Interest(Node<T> *A,Node<T> *B){N ode<T> *pre,*p,*q;p re = A;p =A ->next;q = B->next;w hile(p&&q){if(p->data < q->data){pre->next = p->next;p = pre->next;}else if(p->data > q->data){q = q->next;}else{pre = p;p = p->next;q = q->next;} }}//求并集template<class T>void LinkList<T>::Sum(Node<T> *A,Node<T> *B{N ode<T> *pre,*p,*q;p re = A; p = A->next;q = B->next;w hile(p&&q){if(p->data < q->data){pre = p;p = p->next;}else if(p->data > q->data){q = q->next;}else{pre->next = p->next;p = p->next;q = q->next;}}}template<class T>void LinkList<T>::Subtraction(Node<T> *A,Node<T> *B){N ode<T> *pre,*p,*q,*pra;p re = A; pra = B; p = A->next; q = B->next;w hile(p&&q){if(p->data < q->data){pre = p;p = p->next; }else if(p->data > q->data){q = q->next;}else{pre->next = p->next;p = pre->next;q = q->next;}}}template<class T>void LinkList<T>::PrintList(){N ode<T> *p;p=first->next;//工作指针p初始化w hile(p != NULL)//遍历输出所有元素{cout<<p->data;p = p->next; }c out<<endl;}//菜单函数int meun(){i nt m;d o {c out<<"请输入对应数字(1、求交集2、求并集3、求差集4、结束运行)"<<endl;c in>>m;}while(m<1||m>4);return m;}int a[]={5,4,3,2,1},b[]={6,4,2};i nt n = 5,m = 3;L inkList<int> SL(a,n);L inkList<int> sl(b,m);L inkList<int> s(a,n);L inkList<int> S(b,m);L inkList<int> l(a,n);L inkList<int> L(b,m);static bool bl = true;template<class T>void LinkList<T>::Show(int i){s witch(i) {c ase 1:{Node<T> *p,*q;p = ;q = ;();();(p,q);();cout<<endl;cout<<"已求交集"<<endl;}break;c ase 2:{Node<T> *p,*q;p = ;q = ;();();(p,q);();();cout<<"已求并集"<<endl;}break;c ase 3:{Node<T> *p,*q;p = ;q = ;();();(p,q);();cout<<"已求差集"<<endl;}break;c ase 4:{bl = false; } break; }} void main(){w hile(bl == true){int i=meun();(i);}}。
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语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)数据结构基础及深入及考试习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系。
即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。
它依赖于计算机。
存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。
它由基本的数据类型构成,并包括一组相关的服务(或称操作)。
它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。
4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
5、在数据结构中,从逻辑上可以把数据结构分成(C)A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于(A)A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种。
2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为(E),删除一个元素需要移动的元素的个数为(A)。
A、(n-1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的。
”这个结论是(B)A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址(D)A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是(B)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是(A)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL7、非空的循环单链表head的尾结点P满足(C)A、p->ne某t==NULLB、p==NULLC、p->ne某t==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)A、O(1)B、O(n)C、O(n2)D、O(nlog2n)数据结构(第4版)习题及实验参考答案9、在一个单链表中,若删除p所指结点的后继结点,则执行(A)A、p->ne某t=p->ne某t->ne某t;B、p=p->ne某t;p->ne某t=p->ne某t->ne某t;C、p->ne某t=p->ne某t;D、p=p->ne某t->ne某t;10、在一个单链表中,若在p所指结点之后插入所指结点,则执行(B)A、->ne某t=p;p->ne某t=;B、->ne某t=p->ne某t;p->ne某t=;C、->ne某t=p->ne某t;p=;D、p->ne某t=;->ne某t=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点,则执行(C)A、->ne某t=p->ne某t;p->ne某t=;B、p->ne某t=->ne某t;->ne某t=p;C、q->ne某t=;->ne某t=p;D、p->ne某t=;->ne某t=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有1个前趋结点。
四《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。
2、掌握选择结构的程序设计。
3、掌握分支结构的嵌套。
二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。
自变量x与函数值均采用双精度类型。
(2)自变量x值从键盘输入,且输入前要有提示信息。
(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。
记录结果。
(5)源程序以sy4_1.c存盘。
2、编程,将一个百分制成绩转换成等级制成绩。
具体要求如下:(1)百分制与等级制的对应关系如下:(3)用键盘输入百分制成绩,输入前要有提示信息。
(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。
(5)输出结果中应包含百分制成绩和成绩等级。
(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。
记录结果。
(7)源程序以sy4_2.c存盘。
三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。
2、掌握三种常用的循环语句的格式和功能。
3、初步掌握循环结构的编程方法。
二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。
要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。
2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。
C语言实验参考答案实验一5、输入并运行自已编写的程序(教材第一章P14 三编程题)。
实验二1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。
#include <stdio.h>main(){float x,y,z,s,t,a;printf(“x,y,z=”);scanf(“%f,%f,%f”,&x,&y,&z);s=x+y+z;t=x*y*z;a=s/3;printf(“s=%f,t=%f,a=%f\n”,s,t,a);}2、编程。
要求用户输入两个整数a、b(分别为20、10),读取用户从键盘输入的值,然后:1)用整数输出这两个数的和、差;2)用长整型输出这两个数的积,用float输出商;3)用整数输出这两个数的余数,用float输出平均值。
#include <stdio.h>main(){int a,b,he,cha,yu;long ji;float shang,aver;printf(“a,b=”);scanf(“%d,%d”,&a,&b);he=a+b;cha=a-b;ji=(long)a*b;shang=1.0*a/b;yu=a%b;aver=(a+b)/2.0;printf(“a+b=%d,a-b=%d,a*b=%ld\n”,he,cha,ji);printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver);}实验三1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。
例如,输入整数5,程序运行后输出字符5。
#include <stdio.h>main(){int a;char c;printf(“a=”);scanf(“%d”,&a);c=a+48;putchar(c);}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 ```实验总结:通过本次实验,我深入理解了数组的原理和用法,并且掌握了数组在函数中的传递。
实验四数组实验课程名:高级语言程序设计(C)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。
二、实验内容1、任务名称: 调试下列c50101.c程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
写出调试过程。
源代码:#include <stdio.h>#define N 10void main(){ int i,a[N];double av=0;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);if((i+1)%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];av=av/N;printf("\nav=%f\n",av);}运行结果:(需要截图)运行结果分析:求平均数首先应该要求和,题目中求和没有给变量赋初值,这样得到的结果是不可预料的,求和后应除以总数,但不能用语句av=sum/10;因为这样得到的结果是去掉小数点后的结果,不准确,应用语句av=sum/10.0;。
2、任务名称: 下面c50102.c程序是输入5个数据,然后求它们的和并输出结果。
源代码:#include <stdio.h>void main(){int i,a[5],sum=0;scanf("%d",&a[5]);for (i=0;i<=5;i++)sum+=a[5];printf("sum=%d\n",sum);}运行结果:(需要截图)运行结果分析:语句scanf("%d,%d,%d,%d,%d", a );错误,因为数组元素的输入和输出只能逐个元素操作,而不能以数组名作整体操作。
一、实验目的1. 掌握数组的定义、声明、初始化和引用方法。
2. 熟悉数组在数据存储和操作中的优势。
3. 学习并实现一些常用的数组操作,如排序、查找、插入和删除等。
4. 提高编程能力,培养解决实际问题的能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 一维数组的定义、初始化和引用2. 二维数组的定义、初始化和引用3. 数组元素的查找4. 数组元素的排序5. 数组元素的插入和删除四、实验步骤1. 一维数组的定义、初始化和引用(1)定义一个整型一维数组,并初始化前5个元素为1、2、3、4、5。
(2)使用循环遍历数组,输出所有元素。
(3)使用指针遍历数组,输出所有元素。
2. 二维数组的定义、初始化和引用(1)定义一个整型二维数组,并初始化前3行3列的元素。
(2)使用嵌套循环遍历数组,输出所有元素。
(3)使用指针遍历数组,输出所有元素。
3. 数组元素的查找(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个函数,用于查找数组中是否存在指定的元素。
(3)在主函数中调用该函数,查找元素5在数组中的位置。
4. 数组元素的排序(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个冒泡排序函数,用于对数组进行排序。
(3)在主函数中调用该函数,对数组进行排序,并输出排序后的结果。
5. 数组元素的插入和删除(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。
(2)编写一个插入函数,用于在数组中插入一个新元素。
(3)编写一个删除函数,用于删除数组中的指定元素。
(4)在主函数中调用插入和删除函数,对数组进行操作,并输出操作后的结果。
五、实验结果与分析1. 一维数组的定义、初始化和引用实验结果:成功定义、初始化和引用了一维数组,并输出所有元素。
程序设计1实验习题实验一程序设计(1)实验习题实验一(1)运行以下程序,并解释运行结果。
#includestdio.hintmain(void){intx=1;unsignedu=;printf(x=%u=%d\n,x,x);printf(u=%u=%d\n,u,u);return0;}(2)运行以下程序,解释运行结果,并修改程序以使结果正确。
#includestdio.hintmain(void){intx=;printf(x+1=%d\n,x+1);return0;}(3)运行以下程序,解释运行结果。
程序1:#includestdio.hintmain(void){floata;doubleb;a=123456.789e4;b=123456.7 89e4;printf(%f\n%f\n,a,b);return0;}程序2:#includestdio.hintmain(){floata,b;a=123456.789e5;b=a+20;printf(%f\n,a);printf(%f\n,b);return0;}(4)求平方根:输入1个实数x,计算并输出其平方根(保留1位小数)。
(5)华氏温度转换为摄氏温度::度输入华氏温度f,计算并输出相应的摄氏温度c(保留2位位小数)。
c=5/9(f-32).(6)三天打鱼两天晒网:中国有句俗语叫三天打鱼两天晒网。
假设某人从某天起,开第始三天打鱼两天晒网,问这个人在以后的第n天中是打鱼还是晒网?编写相应程序)(第一天就是当天)。
例如:输入:103输出:Fishinginday103输入:35输出:Dryinginday35(7)按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元元出罚款;若达到或超出50%,就要吊销驾驶证。
请编写程序根据车速和限速自动判别对该机动车的处理。
输入格式:在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。
实验项目:实验一最简单的C程序设计(所属课程:《C语言程序设计》学时:2)一、实验目的1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。
2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。
3.掌握顺序结构程序设计的基本思路。
二、实验条件Pc和vc++编程环境三、实验内容1.熟悉编程环境。
2.输入并运行一个C程序3.掌握各种格式转换符的正确使用方法。
4.编程序:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
要求用scanf函数从键盘上输入数据(半径和高),输出各计算结果,输出时要求有文字说明,取小数点后2位数字。
5.编程序:用getchar函数输入两个字符给C1、C2,然后分别用putchar 函数和printf函数输出这两个字符。
四、实验步骤编写程序,输入数据,观察结果。
五、实验结果观察结果和预期是否一致。
实验项目:实验二选择结构程序设计(所属课程:《C 语言程序设计》学时:2)一、实验目的1.了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
2.学会正确使用逻辑运算符和逻辑表达式。
3.熟练掌握if 语句和switch 语句二、实验条件Pc 和vc++编程环境三、实验内容1.有一函数:≥−<≤−<=)10x (113x )10x 1(12x )1x (x y用scanf 函数输入x 的值,求y 值。
运行程序,输入x 的值(分别为x<1、1≤x <10、x ≥10三种情况),检查输出的y 值是否正确。
2.给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。
90分以上为A ,81~89分为B ,71~79分为C ,61~69分为D ,60分以下为E 。
3.输入4个整数,要求按由小到大顺序输出。
四、实验步骤编写程序,输入数据,观察结果。
五、实验结果观察结果和预期是否一致。
一、实验目的1. 理解数组的定义和特点。
2. 掌握数组的创建、初始化和赋值方法。
3. 熟悉数组的基本操作,如遍历、排序、查找等。
4. 了解数组在实际编程中的应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:C/C++3. 开发环境:Visual Studio 2019三、实验内容1. 数组的定义和特点数组是一种有序的数据集合,用于存储具有相同数据类型的元素。
数组具有以下特点:(1)数组中所有元素具有相同的数据类型;(2)数组中的元素按照一定顺序排列;(3)数组的大小在创建时确定,一旦创建,大小不能改变;(4)数组可以通过下标访问其中的元素。
2. 数组的创建、初始化和赋值(1)创建数组在C/C++中,可以通过以下方式创建数组:int arr[10]; // 创建一个整型数组,包含10个元素int arr2[3][4]; // 创建一个二维整型数组,包含3行4列的元素(2)初始化数组在创建数组时,可以同时初始化数组元素:int arr[5] = {1, 2, 3, 4, 5}; // 初始化整型数组arr (3)赋值数组在创建数组后,可以对数组元素进行赋值:int arr[5];arr[0] = 1;arr[1] = 2;arr[2] = 3;arr[3] = 4;arr[4] = 5;3. 数组的基本操作(1)遍历数组可以通过循环结构遍历数组元素:for (int i = 0; i < 5; i++) {printf("%d ", arr[i]);}(2)排序数组可以使用冒泡排序算法对数组进行排序:void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}(3)查找数组元素可以使用线性查找算法查找数组元素:int linearSearch(int arr[], int n, int x) {for (int i = 0; i < n; i++) {if (arr[i] == x) {return i;}}return -1;}4. 数组在实际编程中的应用(1)实现冒泡排序算法在C/C++中,可以使用数组实现冒泡排序算法,如上述代码所示。
4-1 将10进制数转换为2-8-16进制数。
/* 将10进制数转换为2进制数。
*/main(){int n,i=0,s[100];/* 设置一个数组s存放余数*/printf("\n input n:");scanf("%d",&n);printf("\n(%d)10==>(", n);while(n!=0){ s[i]=n%2; i++; n=n/2;}/*除2取余,余数存放在数组S中,i:转换后对应的2进制数的位数*/ while( i>0){ i--;/* 逆向输出:*/printf("%d", s[i]);}printf(")2\n");getch();}/* 将10进制数转换为16进制数。
*/main(){int n,i=0,s[100];/* 设置一个数组s存放余数*/printf("\n input n:");scanf("%d",&n);printf("\n(%d)10==>(", n);while(n!=0){ s[i]=n%16; i++; n=n/16;}/*除16取余,余数存放在数组S中,i:转换后对应的16进制数的位数*/ while( i>0){ i--;/* 逆向输出:*/if (s[i]<=9)printf("%d", s[i]);else printf("%c", s[i]+55); /* 将10-15转换成A-F输出*/}printf(")16\n");getch();}4-2 借助队列,完成基数排序。
#define n 12int a[n+1]={-1,34,66,90,76,35,71,45,66,90,65,44,18};int f[10],r[10]; /*10个队列的队首指针和队尾指针*/int q[10][n];void distribute1( ){ /*分配算法----个位排序*/int i,j;for ( i=0;i<=9; i++) { f[i]=0; r[i]=0; } /*队列初始化*/for ( i=1; i<=n;i++){ j=a[i]%10; /* 分解个位数*/r[j]++; q[j][r[j]]=a[i]; /* a[i]的个位数是j ,a[i]进入队列j */ }}void distribute2( ){ /*分配算法----十位排序*/int i,j;for ( i=0;i<=9; i++) { f[i]=0; r[i]=0; } /*队列初始化*/for ( i=1; i<=n;i++){ j=a[i] /10; /* 分解十位数*/r[j]++; q[j][r[j]]=a[i]; /* a[i]的十位数是j ,a[i]进入队列j */}}void collect ( ){ /* 收集算法, 按队列q[ 0]-q[9] 收集*/int i,j,k=1;for (i=0;i<=9;i++)for (j=1;j<=r[i]; j++){ a[k]=q[i][j]; k++; } }void main( ){int i,j;for(i=1; i<=n; i++)printf ("%5d",a[i]);printf("\n");distribute1();collect( );for(i=1; i<=n; i++)printf ("%5d",a[i]);printf("\n");distribute2();collect( );for(i=1; i<=n; i++)printf ("%5d",a[i]);printf("\n");getch();}。
《C语言程序设计》课程教学大纲适用专业信息与计算科学总学时90学分 4一、编写说明(一)本课程的性质、地位和作用本课程属于信息与计算科学的专业课,C程序设计语言的语法规则、数据类型、数据运算、语句、函数、指针、程序结构等方面的学习,掌握应用C语言进行程序设计的技能,为今后进一步学习程序开发以及科学与工程计算的软件开发奠定一个良好的基础。
(二)本大纲制定的依据根据本专业人才的培养目标和人才培养规格所需要的基本理论和基本技能的要求,根据本课程的教学性质、条件和教学实践而制定。
(三)大纲内容选编原则与要求通过对本课程的学习,使学生掌握基本概念、基本原理、基本知识和实际操作能力,重点落实到“用”上。
在对大纲内容选编时,在注重基本原理、基本概念的同时,特别强调实用系统的设计与开发,做到了理论与实践有效结合。
(四)实践环节实验1:C程序的运行环境和运行一个C程序的方法, 2学时主要内容与要求:了解所用的计算机系统的基本操作方法,学会独立使用该系统;了解在该系统上如何编辑、编译、连接和运行一个C程序;通过运行简单的C程序,初步了解C 程序的特点。
实验2:简单的C程序设计,2学时主要内容与要求:掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法;掌握不同类型数值之间赋值的规律;学会使用C的有关算术运算符,以及包含这些运算符的表达式;掌握赋值语句的使用方法;掌握各种类型数据的输入输出方法,能正确使用各种格式转换符。
实验3:逻辑结构、循环控制程序设计,4学时主要内容与要求:了解C语言表示逻辑量的方法;学会正确的使用逻辑运算符和逻辑表达式;熟练掌握if语句和switch语句;熟悉掌握用while 语句,do while语句和for语句实现循环的方法;掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等);进一步学习调试程序。
实验4:数组、函数,4学时主要内容与要求:掌握一维数组和二维数组的定义、赋值和输入输出方法;掌握字符数组和字符串函数的使用;掌握与数组有关的算法(特别是排序算法);掌握定义函数的方法;掌握函数实参与形参的对应关系以及“值传递”的方式;掌握函数的嵌套调用和递归调用的方法;掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法;学习对多文件程序的编译和运行。
数组应用实验报告
《数组应用实验报告》
在计算机科学领域,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,方便进行管理和操作。
在本次实验中,我们将探讨数组的应用,并通过实验报告来展示其在不同场景下的使用情况。
实验一:数组的创建和初始化
在本实验中,我们首先学习了如何创建和初始化数组。
通过编写简单的代码,我们成功创建了一个包含整数类型的数组,并对其进行了初始化。
我们发现,数组的索引是从0开始的,这意味着我们可以通过索引来访问数组中的元素。
实验二:数组的遍历和操作
接下来,我们学习了如何遍历数组并对其进行操作。
我们使用循环结构来遍历数组中的每个元素,并进行相应的操作。
我们发现,使用数组可以方便地对一组数据进行统一的处理,比如求和、平均值等操作。
实验三:多维数组的应用
在这个实验中,我们学习了多维数组的应用。
通过创建二维数组,我们可以模拟二维空间中的数据结构,比如矩阵、图像等。
我们发现,多维数组可以方便地表示复杂的数据结构,并且可以通过多重循环来对其进行遍历和操作。
实验四:数组的应用案例
最后,我们通过实际案例来展示数组的应用。
我们使用数组来实现一个简单的学生成绩管理系统,通过输入学生的成绩,然后计算平均分、最高分、最低分等统计数据。
我们发现,数组的使用大大简化了数据的管理和操作,提高了程序的效率和可维护性。
综上所述,本次实验通过实验报告展示了数组在不同场景下的应用情况。
通过学习和实践,我们深刻理解了数组的重要性和灵活性,相信在今后的编程工作中,我们将能够更加熟练地运用数组来解决实际问题。
一、实验目的1. 理解数组的概念和基本操作。
2. 掌握数组的创建、初始化、赋值、遍历、排序等基本操作。
3. 通过实验加深对数组在实际问题中的应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 编译器:Visual Studio 2019三、实验内容1. 数组的创建与初始化2. 数组的赋值与遍历3. 数组的排序四、实验步骤1. 数组的创建与初始化(1)创建一个整型数组,名为array,大小为10。
```cppint array[10];```(2)使用循环对数组进行初始化。
```cppfor (int i = 0; i < 10; i++) {array[i] = i 2;}```2. 数组的赋值与遍历(1)将一个整型变量value赋值给数组的第一个元素。
```cppint value = 100;array[0] = value;```(2)使用循环遍历数组,打印每个元素的值。
```cppfor (int i = 0; i < 10; i++) {cout << "array[" << i << "] = " << array[i] << endl; }```3. 数组的排序(1)选择排序算法对数组进行排序。
```cppfor (int i = 0; i < 10 - 1; i++) {int minIndex = i;for (int j = i + 1; j < 10; j++) {if (array[j] < array[minIndex]) {minIndex = j;}}int temp = array[i];array[i] = array[minIndex];array[minIndex] = temp;}```(2)打印排序后的数组。
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□√设计□创新实验日期:实验成绩:一、实验名称
实验4 数组
二、实验目的
1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。
2.掌握字符数组与字符串的使用方法。
理解字符数组与其它数组的区别、理解字符串及其特点。
掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。
3.掌握与数组相关的算法,包括排序算法和查找算法等。
三、实验内容
有关数组的程序设计
四、实验环境
PC微机
DOS操作系统或Windows 操作系统
Turbo C 程序集成环境
五、实验步骤
1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。
要求:
(1)数组为整型数组(10个元素)。
(2)使用scanf函数实现数组元素的输入。
在输入前给出必要的提示。
(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。
(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。
如果需要数组元素不断改变,应怎样修改程序?
2.编程实现:在给定的字符串中查找满足条件的第一个字符。
要求:
(1)字符串采用初始化的方式处理。
(2)通过scanf函数读入一个任意字符。
(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。
如果不存在该字符,则要给出相应的信息。
3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ⨯n),形成n ⨯n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。
例如:原始数据:n=4 结果数据:
1 2 3 4 8 11 14 16
3 5 9 10 3 5 9 10
8 11 14 16 1 2 3 4
15 2 7 6 15 2 7 6
要求:
(1)本题中所涉及到的循环都采用for语句。
(2)在输入/输出时进行必要的说明。
(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。
(4)输入一个n ⨯n矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。
(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。
(6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明。
(7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性。
4.编程实现“折半查找”的过程。
折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找。
要求:
(1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。
(2)用scanf函数输入一个要找的数。
(3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。
如果该数不在数组中,则输出“无此数”信息。
(4)任意输入一些数据,检查程序的正确性。
(5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”。
最后通过测试几组差别较大的数据检查程序的正确性。
(6)修改程序,改为函数调用的形式。
编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找。
在主函数中输入数据(无序),调用上述函数,输出结果。
5.编程实现:三个学生、五门课程的成绩分别存放在4×6矩阵的前3×5列,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上。
计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分。
输入/输出格式举例如下:
Input(输入成绩):
65 87 68 56 78<cr>
83 94 67 85 91<cr>
71 75 69 84 89<cr>
Output(输出结果):
65 87 68 56 78 70.5
83 94 67 85 91 84.0
71 75 69 84 89 77.5
219.0 256.0 204.0 258.0 232.0 0
average:
73.0 85.3 68.0 86.0 77.3
要求:
(1)数组类型为实型,输入成绩由scanf函数实现。
(2)输出已输入的原始成绩数据(3×5)。
(3)计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(4×6)。
(4)j计算单科平均成绩后输出。
6.编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr()用于统计一个字符串的长度。
编写函数cmpStr()用于判断两个字符串的大小。
要求:
(1)不允许使用字符处理库函数。
(2)在主函数以初始化的方式输入两个字符串str1、str2。
调用函数lenStr()计算字符串的长度。
(3)调用函数cmpStr()判断两个字符串的大小,如果str1大于等于str2,调用函数catStr()进行两个字符串的连接,将str1连接在str2后,否则,将str2连接在str1后,调用函数lenStr()统计连接后的字符串长度。
(4)在主函数中输出两个原始字符串和各自的长度以及处理后字符串及其长度。
六、实验数据及处理结果
/*写出各个习题的算法(用流程图或自然语言表示)、程序、结果并能对结果的正确性及产生的问题进行适当分析,重点说明实验遇到的难点及解决办法。
注意:每题以下面格式列出:
习题五:
[算法设计]
[程序实现]
[测试结果]
[分析]
红色文本请在写实验报告时删去!*/
七、简答及选做题
1、小结冒泡排序及选择排序方法及有关数组和字符串的程序设计方法。
2、模拟文曲星上的猜数游戏,先由计算机随机生成一个各位相异的4位数字,由用户来猜,根据用户猜测的结果给出提示:xAyB
其中,A前面的数字表示有几位数字不仅数字猜对了,而且位置也正确,B前面的数字表示有几位数字猜对了,但是位置不正确。
最多允许用户猜的次数由用户从键盘输入。
如果猜对,则提示“Congratulations!”;如果在规定次数以内仍然猜不对,则给出提示“Sorry, you haven't guess the right number!”。
程序结束之前,在屏幕上显示这个正确的数字。
八、实验总结及体会。