实验4 数组答案
c程序设计实验参考答案
main( )
{ float a,b,c;
float s,v;
scanf("%f,%f,%f,%f",&a,&b,&c);
s=a+b+c;
v=s/3.0;
printf("\n%7.1f,%7.1f",s,v);
}
实验五参考答案
一.1、a=10,b=30,c=10
}
2、main()
{int i;
double m=100000,n,s;
n=0.01;
s=0;
for(i=1;i<=30;i++)
{s+=n;
n=n*2;
}
printf("%f %f\n",s,m*30 );
}
实验八参考答案:
一.1、s=12345
2、7,
5,
3,
3、<1,2>=6
二.1、% for(j=k;j>0;j--)
第4行改为scanf("%d",&a[i]);
第12行改为printf("av=%d\n",av);
四.1、分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,取出其中两种作为参考。
方法一:起泡排序
从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比
{ case 10:
case 9: ch='A'; break;
case 8: ch='B'; break;
2012综合实验四-参考答案
综合实验四面向对象的程序设计[实验目的]1.掌握类和对象的定义2.掌握面向对象的程序设计方法3.掌握类的继承与派生4.掌握基类和虚函数的用法5.掌握运算符重载的方法6.掌握I/O流类的操作[实验环境]1.软件需求:Visual C++ 6.02.硬件需求: Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间[实验内容]1.设计员工类Employee(静态数据成员)分a)题目描述定义一个描述员工(Employee)基本情况的类,数据成员包括编号(num)、姓名(name)、性别(sex)、工资(wage)、人数(count)、总工资(totalWage)。
其中姓名定义为长度为18的字符数组,性别定义为长度为3的字符数组,其它数据类型为整型,总工资和人数为静态数据成员,函数成员包括构造函数、显示基本函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数编号(nu),姓名(nm)、性别(sx)和工资(wg)构造对象,显示基本数据函数用于显示学生的编号、姓名、性别和工资,显示静态数据函数为静态成员函数,用于显示人数和总工资;要求所有数据成员为protected访问权限,所有成员函数为public访问权限,在主函数中定义若干个员工对象,分别显示员工基本信息,以及显示员工人数和总工资。
b)输入描述第一行要求输入一个小于10的数字n,表示即将录入的员工数量,换行后从键盘录入每个员工的数据,依次是编号,姓名,性别,工资,每个员工占一行c)输出描述第一行显示“人数:”,第二行显示“总工资:”,后面分别显示每个员工的信息,每个员工之间空一行d)样例输入21008 张三男 25001009 李四女 2600e)样例输出人数:2总工资:5100元个人基本信息:编号:1008姓名:张三性别:男工资:2500个人基本信息:编号:1009姓名:李四性别:女工资:2600参考程序:/******************************************************** 2012 IMIS C++ Practice 4 (Object oriented programming)Task 1Programmed byYE HuanzhuoLakesideNov.28, 2012********************************************************/ #include <iostream>#include <string>using namespace std;class Employee{protected:int num;char name[18];char sex[3];int wage;static int count;static int totalWage;public:Employee(int nu, char * nm, char * sx, int wg);~Employee();void ShowBase();static void ShowStatic();};int Employee::count=0;int Employee::totalWage=0;Employee::Employee(int nu, char * nm, char * sx, int wg) {num=nu;strcpy(name, nm);strcpy(sex, sx);wage=wg;count++;totalWage+=wg;}Employee::~Employee(){count--;totalWage-=wage;}void Employee::ShowBase(){cout<<"个人基本信息:\n";cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"性别:"<<sex<<endl;cout<<"工资:"<<wage<<endl;}void Employee::ShowStatic(){cout<<"人数:"<<count<<endl;cout<<"总工资:"<<totalWage<<"元"<<endl; }int main(){int n, i, nu, wg;char nm[18], sx[3];cin>>n;Employee **a=new Employee* [n];for(i=0; i<n; i++){cin>>nu>>nm>>sx>>wg;a[i]=new Employee(nu, nm, sx, wg);}Employee::ShowStatic();for(i=0; i<n; i++){a[i]->ShowBase();delete a[i];if(i!=n-1)cout<<endl;}delete [] a;return 0;}2.日期类Date的设计(构造函数)a)题目描述定义一个日期类Date,能提供和设置由年、月、日组成的日期。
C语言-数组-实验题目及答案
实验六数组程序设计【实验目的】1、掌握使用一维数组编程方法2、掌握使用二维数组进行程序设计【实验内容】一、上机验证程序,并分析结果要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1、#include <stdio.h>int main(){ int a[ ]={1,2,3,4,5} , i, j, s=0 ;j = 1;for ( i = 4 ; i>=0 ; i--){s = s+ a[i] * j ;j = j * 10 ;}printf(" s= %d \n" , s );return 0;}二、程序改错题1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。
源代码如下,程序中存在错误,请将其改正。
#include <stdio.h>int main(){int a(10);/*定义数组*/int count,i;/* i循环变量 count 正数个数*/for(i=0;i<=10;i++){/*循环输入*/scanf("%d",a[i]);}count=1;for(i=0;i<=10;i++){/*查找正数*/if(a(i)>0)count++;}printf("数组中正数有:%d个\n",count);return 0;}三编写程序1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。
#include <stdio.h>#define N 30int main(){float score[N],sum=0,aver;int i;for(i=0;i<30;i++){scanf("%f",&score[i]);sum=sum+score[i];}aver=sum/30;printf("平均分为:%.2f\n",aver);for(i=0;i<N;i++)if(score[i]>aver)printf("%.2f ",score[i]);printf("\n");return 0;}2.编写程序:假设有13位评委参与评分工作。
C语言实验册完整答案
实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。
数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(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个前趋结点。
实验5-数组答案
VB程序设计实验五实验目的●掌握一维数组和二维数组的操作●学习跟数组相关的控件:列表框和组合框复习1.列表框列表框(ListBox)控件允许用户查看和选择列表中的多个元素。
表5-11 列表框的常用属性和事件2.组合列表框(ComboBox)整合了列表框和文本框的功能,以一个文本框控件(TextBox)右边加上一个向下箭头的样式显示。
有Simple(简单组合框)、DropDown(下拉组合框)和DropDownList(下拉列表框)。
其中,Simple选项不显示下拉箭头,而是在控件的旁边显示一个滚动条;DropDown风格(默认值)在单击向下箭头时显示一个下拉列表,且在ComboBox中输入一个值;DropDownList显示一个下拉列表,但不允许用户在ComboBox中输入。
表5-13 组合列表框的常用属性和事件(1) Items.Count属性:列表框或组合框中项目数量。
最后一项的序号为Items.Count-1,该属性只能在程序中设置或引用。
(2) Text属性:被选定的选项的文本内容。
该属性只能在程序中设置或引用。
注意:ListBox1.Items(ListBox1.SelectedIndex)等于ListBox1.Text。
(3) Items.Add方法把一个选项加入列表框,格式:对象.Items.Add(选项);如:ListBox1.Items.Add("周海涛")(4) Insert方法在指定位置插入一个项目。
格式:对象.Items.Insert(序号, 添加项内容)(5)Items.Remove方法从列表框中删除指定的项。
格式:对象. Items.Remove (选项)。
例如:ListBox1.Items.Remove ("华成")(6)Items.RemoveAt方法格式:对象.RemoveAt(Index)从列表框中删除指定的项。
Index表示被删除项目在列表框中的位置,从0开始。
实验4-函数
实验4 函数程序填空1.普通参数本题分值:4题目描述:输入日期的年份和月份,求该月有多少天。
要求编写函数int daynum(int year,int month),求出以year为年份、以month为月份的某个月的天数。
以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码://通过日期求某月的天数。
#include<iostream>using namespace std;int main(){int daynum(int year,int month);int y,m,d;cin>>y>>m;if(y<1900 || y>=3000 || m<1 || m>12){cout<<"输入错误!"<<endl;return 0;}d=daynum(__(1)__); //以y、m作实参调用函数,求出该月的天数cout<<"此月的天数为"<<d<<endl;return 0;}int daynum(int year,int month){int days;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31; break;case 4:case 6:case 9:case 11: days=30; break;case 2: if(year%4==0&&year%100!=0 || year%400==0)days=29;elsedays=28;break;}return __(2)__;}答案:(1) y,m(2) days每空分值:2参考答案:yx3-t1.cpp2.字符数组参数本题分值:4题目描述:编写一个函数,用来求字符串s的任意子串。
青岛理工大学 C语言答案
c语言程序设计教程(第2版)课后题及模拟题参考答案习题1 (3)1-1 填空题 (3)1-2 思考题 (3)1-3 编程题 (3)习题2 (4)2-1 单选题 (4)2-2 思考题 (4)习题3 (5)3-1 选择题 (5)3-2 填空题 (5)3-3 编程题 (5)习题4 (7)4-1单选题 (7)4-2填空题 (7)4-3 编程题 (7)习题5 (10)5-1单选题 (10)5-2填空题 (10)5-3 编程题 (10)习题6 (13)6-1单选题 (13)6-2填空题 (13)6-3 编程题 (13)习题7 (15)7-1单选题 (15)7-2填空题 (15)7-3 编程题 (15)习题8 (16)8-1单选题 (16)8-2填空题 (16)8-3 编程题 (16)习题9 (18)9-1单选题 (18)9-2填空题 (18)9-3 编程题 (18)习题10 (22)10-1单选题 (22)10-2填空题 (22)10-3 编程题 (22)习题11 (24)11-1单选题 (24)11-2填空题 (24)习题12 (25)12-1单选题 (25)12-2 填空题 (25)实验篇 (26)实验1 熟悉Visual C++6.0可视化集成开发环境 (26)实验2 顺序结构程序设计 (26)实验3 选择结构程序设计 (26)实验4 循环结构程序设计 (26)实验5 函数 (28)实验6 数组 (32)实验7 指针 (33)实验8 结构体和共用体 (35)实验9 文件 (36)实验10 综合编程 (36)模拟试卷(一)参考答案 (37)模拟试卷(二)参考答案 (38)习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5.{, }6./*, */7.顺序结构,选择结构,循环结构8..c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。
实验4、数组(有答案)
实验4、数组【实验目的】1 .掌握数组的定义、赋值和输人输出的方法;2 .学习用数组实现相关算法(如排序、求最大和最小值、有序数组的插入等)【实验内容】1 .程序填空(1)下面程序的功能为:输入10个数字到数组中,统计其中正数的个数并求和,完成以下的程序并运行出正确结果。
#i nclude <stdio.h>void main(){ int i,a[20],sum,co unt;sum=0;coun t=0;for(i=0;i<10;i++)/**************fo un d**************/sca nf( “ %d :' & a[i] );for(i=0;i<10;i++)if(a[i]>0) {co un t++;/**************fo un d**************/ sum+= a[i] ;} printf(} 完成以下的程序并运行出正确结果。
#i nclude <stdio.h>void mai n(){i nt a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int b[4][3],i,j;for(i=0;iv=2;i++)/**************fo un d**************/for( i=0;iv=3;i++ )/**************fo un d**************/ b[i][i]=a[i][j] ;prin tf( “ array b: \n “;for(i=0;i<=3;i++) n ”,sum,count);A= F 面程序的功能为:将 3行4列的矩阵转置,如:6 107 111 5 9A '2 6 103 7 114 8 124 8 12{for(j=0;j<=2;j++) printf( printf(}}2.程序改错(l) 阅读下面的程序,修改以下程序中的错误并上机运行。
程序设计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++程序设计语言习题及实验指导4章_数组习题参考答案
C++程序设计语言习题及实验指导第4章数组4.3 习题4.3.1 选择题4.3.2 填空题1.(1) 3 (2) 242.首地址3.(1) i (2) i+j (3) i/7 (4) i%7 (5) i*7+j4.(1) 7 (2) 8 (3) 7 (4) 505.(1) 字符(2) cin.getline(str,80);6.1234567.(1) a:5 d:1 e:4 f:1 g:1(2) i:1 l:1 m:1 o:3 r:3(3) s:2 u:1 y:38.(1) It is 4:30 pm. (2) I (3) 4309.(1) <100: 3 (2) <200: 2 (3) <300: 5 (4) <400: 2 (5) <500: 3 10.D8011.(1) 500 (2) 800 (3) 90012.(1) 26 (2) 2013.(1) s2+31 (2) n (3) t%2+'0' (4) !strcmp(s1,p2) 14.(1) num[i++] (2) s=0 (3) flag=1 (4) j<=k 15.(1) i<len1 (2) j>=len2 (3) b[k]=b[k-1] (4) ++i%5==0 16.(1) pa>=a&&pb>=b (2) j+k+carry (3) ps++ (4) p<ps 17.(1) t[n++] (2) continue (3) t[k+1]=t[k] (4) n++ 18.(1) *p1 (2) *p1++ (3) p1++,p2++ (4) *p1='\0' 19.(1) n/10%10 (2) i==j||j==k||i==k (3) i*i==n (4) (i+1)%5==0 20.(1) char *p3 (2) *p1>='A'&&*p1<='Z'||*p1>='a'&&*p1<='z'(3) p2++ (4) char (*p4)[20]4.3.3 编程题1.交换一维数组中的最大元素与最小元素的位置#include<iostream.h>void main(void ){int a[6]={18,16,19,15,11,8};int i,max,min,j,k,t;cout<<"原数组为:\n";for(i=0;i<6;i++)cout<<a[i]<<'\t';cout<<endl;for(j=k=0,max=min=a[0],i=1;i<6;i++){if(max<a[i])max=a[i],j=i;if(min>a[i])min=a[i],k=i;}t=a[j],a[j]=a[k],a[k]=t;cout<<"交换后的数组为:\n";for(i=0;i<6;i++)cout<<a[i]<<'\t';cout<<endl;}2.二维数组右移一列#include<iostream.h>#define ROW 3#define COL 4void main(void){int a[ROW][COL]={1,2,3,4,5,6,7,8,9,10,11,12},i,j,t;cout<<"移动前的数组为:\n";for(i=0;i<ROW;i++){for(j=0;j<COL;j++)cout<<a[i][j]<<'\t';cout<<'\n';}for(i=0;i<ROW;i++){t=a[i][COL-1];for(j=COL-1;j>0;j--)a[i][j]=a[i][j-1];a[i][j]=t; // a[i][0]=t;}cout<<"移动后的数组为:\n";for(i=0;i<ROW;i++){for(j=0;j<COL;j++)cout<<a[i][j]<<'\t';cout<<'\n';}}3.统计字符串中种类字符的个数#include<iostream.h>void main(){char str[50],*p=str;int con=0,num=0,eng=0,oth=0;cout<<"请输入一个字符串:";cin.getline(str,50);while(*p){if(*p<32)con++;else if(*p>='0'&&*p<='9')num++;else if(*p>='A'&&*p<='Z'||*p>='a'&&*p<='z')eng++;else oth++;p++;}cout<<str<<"中有控制字符"<<con<<"个,数字字符"<<num<<"个,英文字母"<<eng<<"个,其它字符"<<oth<<"个。
综合性、设计性实验报告(数组应用)4维数组
综合性、设计性实验报告姓名学号专业计算机科学与技术班级1402实验课程名称____数据结构_指导教师及职称___开课学期2016 年_上学期上课时间实验名称:数组应用实验时间:小组合作:是●否○1、实验目的:(1)掌握数组的基本应用和方法;(2)掌握字符数组和字符串函数的使用。
(3)掌握与字符串处理有关的算法。
2、实验设备及材料:机器配置:4G内存,AMD A8操作系统:windows xp开发工具:V C ++6.03、理论依据:【1】在C语言的环境,有一个四维数组,在计算机中都是以一维的形式保存。
【2】例如int cof[2][2][2][2]在计算机中保存形式与一个2*2*2*2大小的一维数组相同, 想要寻址一个数,因为编译器在看到数组的定义时就知道了数组每一维的大小.于是可以计算定位到相对于数组开始处的偏移.【3】为了容易理解,都是把多维数组分解成几行,每行中又有几列的这种形式,例如int cof [4][6][4][4],就是4行,每行中有6个元素,每个元素又是一个有4个子元素一维数组,而数组中的每个子元素仍然还是一个有4个子元素数组,【4】四维数组可视为以三维数组为数据元素的向量,四维数组中的每个元素都属于四个向量。
【5】由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。
数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。
一般采用顺序存储方法表示数组。
分为行优先顺序和列优先顺序。
【6】由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。
即顺序存储的数组是随机存取结构。
4、算法步骤及注意事项:算法步骤:(1)首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。
为了实现任务所要求的功能,我将程序划分为三类:功能函数,界面函数以及主函数。
另外,其中的功能函数包括以下几种函数:四维数组元素输入函数、四维数组元素输出函数、元素查找函数、功能介绍函数以及主函数。
数据结构实验答案
实验一:以单链表表示集合,设计算法建立先后输入的两个集合的差。
说明:已知两个集合A和B,集合A-B中包含所有属于集合A而不属于集合B 的元素。
步骤:1.首先建立A和B的单链表2.然后对集合B中的每个元素x,在A中查找,若存在和x相同的元素,则从该链表中删除。
3.打印A-B,进行验证。
实验二:建立一个二叉树,并进行先序和中序遍历。
(递归和非递归算法)步骤1.补充元素0建立一个满二叉树,存储到一维数组2.利用递归算法建立二叉树,注意零的元素处置3.进行递归、非递归的中序和先序遍历。
打印结果。
实验三:先从键盘输入26个字母生成无序数组,对数组排序后,再从键盘输入一个字符进行折半查找。
实验四:为一个图(maxnode=20)建立一个邻接表、编写深度遍历和广度遍历算法并给出遍历结果。
实验一答案:#include<stdio.h>typedef struct linknode{int data;struct linknode *next;} node;node *creatlist(){node *head,*r,*s;int x;head=(node*)malloc(sizeof(node));r=head;printf("input int and end with \n");scanf("%d",&x);while(x!=0){s=(node*)malloc(sizeof(node));s->data=x;r->next=s;s->next=NULL;r=s;scanf("%d",&x);}r->next=NULL;s=head;head=head->next;free(s);return(head);}void subs(){node *p,*p1,*p2,*q,*heada,*headb;heada=creatlist();headb=creatlist();p=heada;p1=p;while(p!=NULL){q=headb;while(q->data!=p->data && q!=NULL) q=q->next; if(q!=NULL){if(p==heada){heada=heada->next;p1=heada;}else if(p->next==NULL) p1->next=NULL;else p1->next=p->next;p2=p->next;p->next=NULL;free(p);p=p2;}else{p1=p;p=p->next;}}p=heada;if(p==NULL)printf("kong\n");elseprintf(" A - B \n");while(p!=NULL){printf("%d\n",p->data);p=p->next;}}main(){subs();}实验二答案://程序目的建立二叉树,同时对他进行先序排列。
实验(6)-数组-参考答案
实验(6)-数组-参考答案C语⾔程序设计实验教学(6)【实验⽬的】数组的应⽤是很重要的⼀章。
通过实验掌握⼀维数组的主要应⽤,并理解数组的存储。
对⼆维数组的处理要⽐较熟悉。
【实验要求】⼀维数组的题⽬要求全⾯掌握,应⽤循环结构完成⼀维数组的输⼊、处理和输出。
⼆维数组能够完成简单的数据处理和应⽤。
【实验课时】8.0【实验内容】⼀维数组:1、定义⼀个可以存放10个元素的int数组a,输⼊10个数,并逆序输出。
#include#includevoid main( ){int a[10], i; clrscr();printf("Please input array a :");for(i=0;i<10;i++)scanf("%d", &a[i]);/* 由键盘逐次输⼊值赋予数组各元素*/for(i=9;i>=0;i--) /* 变量i递减控制着数组元素倒序输出*/ printf("%5d", a[i]);}2、⽤数组来保存Fibonacci数列前20项数值,以每5个数据为⼀⾏进⾏输出。
#include#includevoid main( ){int i; long f[20]; clrscr();f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%10ld",f[i]);}}3、统计具有10个元素的⾃然数数组num中的奇数个数。
#include#includevoid main( ){int i,num[10],count=0; clrscr();for(i=0;i<10;i++){printf("enter NO %d : ",i+1);/*给予输⼊提⽰*/scanf("%d",&num[i]);if(num[i]%2!=0) count++;}printf("Count is:%d\n",count );}4、计算整数数组a中的最⼤值及其所在的下标。
VB项目4数组习题答案范文
一、单选题1.在中,一组具有相同名字、不同下标的变量称为____________。
A.数组B.变量C.同类数据D.同类变量2.一维数组的大小为______________。
A.上界+下界+1B.上界+下界-1C.上界-下界+1D.上界-下界-13.数组的存放是按____________存放的。
A.数据大小B.数据类型C.列D.行4.数组具有相同的_____________。
A.下标B.类型C.数值D.存放地址5.重定义数组大小的语句是______________。
A.Dim语句B.ReDim语句C.Static 语句D.Public 语句6.使用Dim A(100) As Integer 语句声明了数组A,其下标的取值范围为____________。
A.0~100B.1~100C.0~99D.1~997.若使用Dim A(100) As Integer 语句声明了数组A,下列引用错误的是___________。
A.A(0)=2B.A(1)= -28C.A(56)= A(-56)D.A(100)=A(0)+A(55)8.如果要对已经声明的数组重新定义大小,并保留原有数据,可使用语句___________。
A.DimB.ReDimC.Dim PreserveD.ReDim Preserve9.对于Integer 类型的静态数组,如果没有赋值,则所有元素的值为____________。
A.空B.0C.1D.最大数10.执行重定义数组大小语句ReDim A(UBound(B))后,A数组的上界为______________。
A.B数组的上界B.B数组的上界+1C.B数组的上界- 1D.不确定11.下列数组声明语句中正确的是______________。
A.Dim A(9) As Single ={1,2,3,4,5,6,7,8,9,10}B.Dim A() As Single ={1,2,3,4,5,6,7,8,9,10}C.Dim A() As Single ={1,”abc”,”ccc”,4,5,6,7,8,9,10}D.Dim A( , ) As Single ={1,2,3,4,5,6,7,8,9,10}12. 若有声明Dim a(2 ,3) as Integer,则数组a共有元素个。
VB项目4数组习题答案
一、单选题1.在中,一组具有相同名字、不同下标的变量称为____________。
A.数组B.变量C.同类数据D.同类变量2.一维数组的大小为______________。
A.上界+下界+1B.上界+下界-1C.上界-下界+1D.上界-下界-13.数组的存放是按____________存放的。
A.数据大小B.数据类型C.列D.行4.数组具有相同的_____________。
A.下标B.类型C.数值D.存放地址5.重定义数组大小的语句是______________。
A.Dim语句B.ReDim语句C.Static语句D.Public语句6.使用Dim A(100) As Integer 语句声明了数组A,其下标的取值范围为____________。
A.0~100B.1~100C.0~99D.1~997.若使用Dim A(100) As Integer 语句声明了数组A,下列引用错误的是___________。
A.A(0)=2B.A(1)= -28C.A(56)= A(-56)D.A(100)=A(0)+A(55)8.如果要对已经声明的数组重新定义大小,并保留原有数据,可使用语句___________。
A.DimB.ReDimC.Dim PreserveD.ReDim Preserve9.对于Integer 类型的静态数组,如果没有赋值,则所有元素的值为____________。
A.空B.0C.1D.最大数10.执行重定义数组大小语句ReDim A(UBound(B))后,A数组的上界为______________。
A.B数组的上界B.B数组的上界+1C.B数组的上界- 1D.不确定11.下列数组声明语句中正确的是______________。
A.Dim A(9) As Single ={1,2,3,4,5,6,7,8,9,10}B.Dim A() As Single ={1,2,3,4,5,6,7,8,9,10}C.DimA() As Single ={1,”abc”,”ccc”,4,5,6,7,8,9,10}D.Dim A( , ) As Single ={1,2,3,4,5,6,7,8,9,10}12.若有声明Dim a(2 ,3) as Integer,则数组a共有元素个。
实验四 参考答案
实验四参考答案(参考答案)1、设计程序sy4-1.c,用数组处理Fibonacci数列,要求输出Fibonacci数列前30个数,每行输出6个数。
算法分析:Fibonacci数列的第一和第二个数都是1,从第三个数开始即为前两个数的和,用长整数数来存放前30个数,f[0]和f[1]是已知的,从下标为2到29需要通过循环来求出。
参考答案:# include <stdio.h>void main(){int i;long f[30]={1,1};for(i=2;i<30;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<30;i++){if(i%6==0) printf("\n");printf("%10ld",f[i]); \*宽度为10,输出类型为长整形数*\}}运行结果:2、设计程序sy4-2.c,用选择法对10个数实现递增排序。
算法分析:外循环:10个数,需要9趟循环,第i趟从未排序数列(a[i],a[i+1],---a[9])里找出最小数和a[i]交换。
内循环:(第i趟里找最小数的方法)1)首先把第i个数看成最小数记下它的下标(k=i);2)然后从小标为j=i+1的元素开始一直到j=9,逐一去比较,如果当前的元素a[j]比最小数a[k]还小,就用它的小标去改写k;3)如果k的值发生了变化,就交换最小值a[k]和未排序元素里的第一个元素a[i]。
参考答案:# include <stdio.h>void main(){int a[10],k,i,j,t;printf("Input 10 numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++) \\选择排序法{ k=i;for(j=i+1;j<10;j++)if(a[j]<a[k]) k=j;if(k!=i){ t=a[k]; a[k]=a[i]; a[i]=t; }}printf("\n排序后的数为:");for(i=0;i<10;i++)printf("%d ",a[i]);}printf("\n");}运行结果:3、设计程序sy4-3.c,输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四数组实验课程名: 高级语言程序设计4 数组专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:一、实验目的及要求1.掌握一维数组与二维数组的定义、赋值与输入输出的方法;2.掌握字符数组与字符串函数的使用;3.掌握与数组有关的算法(特别就是排序算法)。
二、实验任务:(一)(1)程序代码:#include <stdio、h>#define N 10void main( ){int i,a[N];float av=0;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);printf(" ");if(i%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];printf("av=%f\n",av/10);}(2)运行结果:(3)结果分析:当i能被3整除时,就换一次行。
(二)实验任务2(1)程序代码:#include <stdio、h>void main( ){int i,a[5],sum=0;for(i=0;i<=4;i++)scanf("%d",&a[i]);for(i=0;i<=4;i++)sum+=a[i];printf("sum=%d\n",sum);}(2)程序运行结果:(3)程序分析:使用for循环依次输入5个数,并使5个数相加。
(三)实验任务3(1)程序代码:#include <stdio、h>int main( ){ int i,j,row=0,colum=0,max;int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for (j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum);return 0;}(2)程序运行结果:(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。
(四)实验任务 4(1)程序代码:#include <stdio、h>void main( ){ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};scanf("%d",&x); /*输入x变量的值 */for ( i=0; i<10; i++ )printf("%4d",a[i]);printf("\n");for(i=0;i<10;i++) /* 循环查找与x相等的元素 */if ( x==a[i] )printf("%d\n",i); /* 输出查找结论 ,输出下标值 */else printf("Not found %d\n",x);}(2)运行结果:(3)程序分析:通过for循环查找与x相等地元素。
(五)实验任务 5(1)程序代码:# include<stdio、h>#define N 11int main(){int i,j,a[N],t,n=10,c,k;printf("输入10个整数:");for(i=0;i<n;i++)scanf("%d",&a[i]); //输入10个整数//printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;} //比较10个数的大小// printf("由大到小排序为:\n");for(i=0;i<10;i++)printf("%d ",a[i]); //从大到小依次输出者10个数//printf("\n");printf("请输入您想插入的一个整数:\n");scanf("%d",&c);n=n+1;for(i=0;i<n-1;i++){if(c>=a[i]){for(j=n-1;j>i;j--){a[j]=a[j-1];}a[i]=c;printf("插入后的数组为:\n");for(k=0;k<n;k++){printf("%d ",a[k]);}printf("\n");return 0;}}}(2)运行结果:(3)程序分析:使用起泡算法将这10个数由大到小的顺序排列出来,后使用for循环语句把插入元素后的数组由大到小的顺序排列。
(六)实验任务6(1)程序代码:#include<stdio、h>int main(){int a[10];int i,k;printf("请输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);k=0;for(i=1;i<10;i++)if(a[k]<a[i])k=i;for(i=k;i<9;i++)a[i]=a[i+1];for(i=0;i<9;i++)printf("%d ",a[i]);printf("\n");}(2)运行结果:(3)程序分析:该程序先将输入的10个数有小到大的顺序列出来,最后输出前9个数。
(七)实验任务 7(1)程序代码:#include <stdio、h>void main(){ float x[1000], sum=0、0, ave, a;int n=0, i;printf ("Enter mark : \n");scanf("%f", &a);while (a>=0、0 && n<1000){ sum+=a;x[n]= a ;n++;scanf("%f", &a);}ave= sum/n ;printf ("Output : \n");printf ("ave = %f\n", ave);for (i=0; i<n; i++)if ( x[i]<ave )printf("%f\n", x[i]);}(2)运行结果:(3)程序分析:输入若干个数,以负数为结束标志。
使用while选择语句,求出输入的整数的平均值。
(八)实验任务 8(1)程序代码:#include<stdio、h>void main(){int i,j,a[6][6];for(i=0;i<6;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<6;i++){for(j=1;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<6;i++){for(j=0;j<=i;j++)printf("%d ",a[i][j]);printf("\n");}}(2)运行结果:(3)程序分析:这可以瞧做一个6*6的矩阵,通过使用数组级for循环语句将杨辉三角表示出来。
(九)实验任务 9(1)程序代码:#include <stdio、h>#include <string、h>void main(){ char a[10],b[10];int c,d,k,ch;scanf("%s",&a);scanf("%s",&b);printf("a=%s,b=%s\n",a,b);c=strlen(a);d=strlen(b);if(c>d){printf("a=%s\n",b);printf("b=%s\n",a);}else{printf("a=%s\n",a);printf("b=%s\n",b);}}(2)运行结果:(3)程序分析:使用strlen函数比较两个字符串的长度。
(十)实验任务 10(1)程序代码:#include <stdio、h>#include <string、h>void main( ){ char s1[80], s2[40];int i = 0, j = 0;printf(" \n Please input string1:");scanf("%s", s1);printf(" \n Please input string2:");scanf("%s", s2);while (s1[i]!= '\0' )i++;while (s2[j]!= '\0' )s1[i++]=s2[j ++];s1[i]= '\0';printf("\n New string: %s", s1);}(2)运行结果:(3)程序分析:运行程序的时候先输入country,再输入side,经过程序的运行,实现了将side连接到country的后面形成新的单词countryside,即实现了将第二个字符串连接到第一个字符串的后面从而·形成一个新的字符串的功能。
(十一)实验任务 11(1)程序代码:#include "stdio、h"void main (){char str1[100],str2[100];int i,s;printf("\n Input string 1:\n");gets(str1);printf("\n Input string 2:\n");gets(str2);i=0;while((str1[i]==str2[i])&&(str1[i]!=" "))i++;s=str1[i]-str2[i];printf("%d\n",s);0020}(2)运行结果:(3)程序分析:先输入abcdefg,后输入abceef,让后求出两个字符数组中第一个不同元素的ASCII码之差。