实验8--自定义数据类型1
c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。
三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。
熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。
2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。
运用 switch 语句进行多分支选择,处理不同的情况。
利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。
3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。
掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。
4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。
实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。
5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。
掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。
6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。
了解共用体的概念和使用场景,比较结构体和共用体的区别。
四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。
SQLSERVER2008实用教程实验参考答案(实验5)

实验5 T-SQL编程1. 自定义数据类型新建一个数据类型ID_Type,用于描述员工编号。
新建一个表Employees3,表结构与Employees 表类似,EmployeeID列的数据类型使用自定义的数据类型。
方法1:使用系统内置的存储过程sp_addtype。
USE YGGLEXEC sp_addtype'ID_Type','char(6)','not null'GO方法2:使用CREATE TYPE语句USE YGGLGOCREATE TYPE ID_Type FROM char(6)NOT NULL;--查看可编程性-类型-用户定义数据类型中的变化IF EXISTS(SELECT name FROM sysobjects WHERE name='Employees3')DROP TABLE Employees3CREATE TABLE Employees3(EmployeeID ID_Type PRIMARY KEY,Name char(10)NOT NULL,Education char(4)NOT NULL,Birthday date NOT NULL,Sex bit NOT NULL DEFAULT 1,WorkYear tinyint NULL,Address varchar(40)NULL,PhoneNumber char(12)NULL,DepartmentID char(3)NOT NULL)GO2. 变量的使用(1)创建一个名为Female的用户变量,并在Employees表中查询所有女员工的编号、姓名、性别DECLARE@Female bit--定义变量,指定变量数据类型SET@Female=0 --为该变量赋初值SELECT EmployeeID,Name,Sex FROM Employees WHERE Sex=@Female;(2)定义一个变量,将员工编号为102201的员工的电话号码赋值给该变量DECLARE@Phone char(12)SET@Phone=(SELECT PhoneNumber FROM Employees WHERE EmployeeID='102201')SELECT a.*,@Phone FROM Employees a WHERE EmployeeID='102201';(3)定义一个变量,用于描述Salary表中000001号员工的实际收入,然后查询该变量DECLARE@RealIncome floatSET@RealIncome=(SELECT InCome-OutCome FROM Salary WHEREEmployeeID='000001')SELECT@RealIncome;3. 运算符的使用(1)查询员工的实际收入SELECT InCome-OutCome AS实际收入FROM Salary;(2)查询工作时间大于5年的员工信息SELECT*FROM Employees WHERE WorkYear>5;4.流程控制语句(1)判断Employees表中是否存在编号为111006的员工,如果存在,则显示该员工信息,如果不存在,则显示查无此人IF EXISTS(SELECT Name FROM Employees WHERE EmployeeID='111006') SELECT*FROM Employees WHERE EmployeeID='111006'ELSESELECT'查无此人'(2)判断姓名为“王林”的员工的实际收入是否高于3000元,如果是,则显示其收入,如果不是,则显示“收入不高于3000元”--先查找实际收入,再进行IF判断IF(SELECT b.InCome-b.OutCome AS实际收入FROM Employees a,Salary b WHERE a.EmployeeID=b.EmployeeID AND ='王林')>3000SELECT b.InCome-b.OutCome AS实际收入FROM Employees a,Salary b WHERE a.EmployeeID=b.EmployeeID AND ='王林'ELSESELECT'收入不高于元'(3)假设变量X的初始值为0,每次加1,直到X变为5,并打印输出DECLARE@X INTSET@X=0WHILE@X<5BEGINSET@X=@X+1PRINT'X='+CONVERT(char(1),@X)ENDGO(4)使用循环输出一个用’*’组成的三角形DECLARE@i INTDECLARE@n INTSET@n=10SET@i=1WHILE (@i<@n)BEGIN--SPACE函数:返回指定个数重复的空格组成的字符串--REPLICATE函数:以指定的次数重复字符表达式PRINT (SPACE((@n-@i)/2)+REPLICATE('*',@i))SET@i=@i+2ENDGO(5)使用CASE语句对Employees表按部门进行分类SELECT EmployeeID,DepartmentID=CASE DepartmentIDWHEN 1 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='1')WHEN 2 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='2')WHEN 3 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='3')WHEN 4 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='4')WHEN 5 THEN (SELECT DepartmentName FROM Departments b WHEREb.DepartmentID='5')ENDFROM Employees ORDER BY DepartmentID;5. 自定义函数的使用定义一个函数CHECK_ID:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,如果存在,则返回1,不存在,则返回0。
C语言 第八章.用户自定义数据类型

u2占2个字节
例:以下程序输出结果是?
union example { struct { int x,y; e.b e.a e.in.x }in; e.in int a; e.in.y int b; }e; void main() { e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); }
内存低地址 01100001 00001010
字符变量c占1个字节
整型变量i占2个字节 单精度实型变量f占4个字节
u1.i=10;
例:以下程序输出结果是?
union u_type { char c[2]; u1
p
内存高地址 内存低地址 ‘a’ ‘b’ c1 c2 c[1] c[0] u1占2个字节 内存高地址 内存低地址 ‘A’ ‘B’ ‘a’ ‘b’ c1 c2 c[1] c[0]
{"0208103322","lisi",19,'M'},{"0208103323","lili",20,'F'}, {"0208103324","xulin",21,'M'}};
学号(number) 姓名(name) 年龄(age) 性别(sex)
stu[0] stu[1] stu[2] stu[3]
char name[8];
int age; char sex;
定义结构体类 sizeof(stu) 型的同时创建 =? 结构体数组
C语言程序设计及实验指导练习及习题参考答案(8--10)

C语言程序设计及实验指导练习及习题参考答案(8--10) 8练习参考答案1、练习8-1.如果有定义:intm,n=5,某p=&m;与m=n等价的语句是BA.m=某p;B.某p=某&n;C.m=&n;D.m=某某p;8-2.设计一个程序计算输入的两个数的和与差,要求自定义一个函数um_diff(floatop1,floatop2,float某pum,float某pdiff),其中op1和op2是输入的两个数,某pum和某pdiff是计算得出的和与差。
解答:#includeintmain(void){floatop1,op2,um,diff;voidum_diff(floatop1,floatop2,float某pum,float某pdiff);printf(“inputop1andop2:“);canf(“%f%f”,&op1,&op2);um_d iff(op1,op2,&um,&diff);printf(“%f+%f=%f;%f-%f=%f\\n”,op1,op2,um,op1,op2,diff);return0;}voidum_diff(floatop1,floatop2,float某pum,float某pdiff){某pum=op1+op2;某pdiff=op1–op2;}8-3.两个相同类型的指针变量能不能相加?为什么?解答:不能。
因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在C语言中指针变量相加是非法的。
8-4.根据表8.2所示,这组数据的冒泡排序其实循环到第6遍(即n-2)时就已经排好序了,说明有时候并不一定需要n-1次循环。
请思考如何改进冒泡排序算法并编程实现(提示:当发现一遍循环后没有数据发生交换,说明已经排好序了)。
解答:设置一个标志变量flag,进入一轮循环前设置为0,在循环中有发生数据交换就改写flag值为1。
自定义数据类型

Visual Basic 程序设
计
Number As String, Name As String End Type 是错误的。
成员可以是数组,但不受Option Base 0|1的Байду номын сангаас响, 上界总是0,但可以通过To关键字指定下界。
自定义数据类型
Private Type RQ Year As Integer Month As Byte '月份在1~12范围内,故使用Byte类型
自定义数据类型
自定义类型只能在模块的“通用-声明”中声明。 全局自定义类型只能在标准模块中声明。
Type前的Public和Private都可以省略,省略后默认 为Public,所以在窗体或类模块中声明自定义类型必须 使用Private。
成员必须使用As子句指定类型,且一次只能声明 一个成员。如
Private Type STUD
End Type 对于自定义类型的使用与基本类型相同,通过
“变量名.成员名”的格式引用成员,可以通过自定义 类型的变量整体赋值。如: Dim X As RQ, Y As RQ X.Year = 2005 X.Month = 5 Y = X '此时Y.Year=2005,Y.Month=5
自定义数据类型
Private Type RQ Year As Integer Month As Byte '月份在1~12范围内,故使用Byte类型
End Type Private Type STUD
Number As String: Name As String '两条语句 Birth As RQ '前面已经定义的类型,可以使用 Score As Integer End Type Private Sub Form_Click() Dim s(1 To 10) As STUD s(1).Name = "张三": s(1).Birth.Month = 1990 '注意对成员的引用方法 End Sub
《VB程序设计基础》模拟试题

《VB程序设计》模拟试题●填空题1.窗体模块的文件扩展名为 ___FRM_________ 、标准模块的文件扩展名为____BAS______ 、类模块文件的扩展名为______CLS_______ 。
Basic中数据类型可分为 _____标准数据类型________和用户自定义数据类型两大类,前者根据其取值的不同,可分为_____整型_________、 ______长整型_____、布尔型和 ____字符型_________。
3. Abs= ;Int= ____-10_______。
4. "程序"& "设计"运算结果为 ___程序设计____ 。
5. Dim a, b as Boolean语句显式声明变量a是___变体___变量,b是___布尔__变量。
6. MsgBox函数的返回值中, VBRetry表示单击了____重试_____按钮,VBYes 表示单击了___是_____按钮,VBNo表示单击了_____否____按钮。
7. 要加载窗体,可以在代码中使用___________语句,要显示窗体,可以在代码中使用___________方法,要隐藏窗体,可以在代码中使用Hide方法,要卸载窗体,可以在代码中使用___________方法。
8.对话框分为_________对话框和________对话框两种类型,其中_____________ 对话框最常用。
9. 对象是Visual Basic应用程序的基本单元,它是由 ___类___创建的。
在Visual Basic中可以用属性、 __方法___、___事件___ 来说明和衡量一个对象的特性。
10. 条件判断语句可以使用___If…then____________语句、____If…Then…Else______语句和 ______If…Then…ElseIf______语句。
Select case 语句11. 声明一个值为的常量Pi的语句为___Const pi = 。
C语言数据类型-实验报告

中山大学南方学院电子通信与软件工程系课程名称:高级语言程序设计实践实验题目:数据类型附:实验报告专业:年级:完成日期:学号:姓名:成绩:一、实验目的掌握C语言的数据类型,熟悉如何定义一个整型、字符型和实型变量,以及对其赋值的方法进一步熟悉C语言程序的编辑、编译、和运行的过程二、实验原理1,运用格式化输出变量的值2,以原进制、十进制格式输出整型变量3,以字符型格式、十进制ASCII格式输出字符型变量三、实验过程1整型、字符型、实型变量的定义及格式化输入输出实验代码如下#include<stdio.h>#include<stdlib.h>int main( ){int var1;double var2;char var 3;scanf("%d,%lf, %c", &var1, &var 2, &var3) ;printf("var 1=%d\n", var1);printf("var 2=%lf\n", var2);printf("var 3=%c\n", var3);return 0;}运算结果如图2整型,字符型的定义和格式化的输入与输出实验代码如下:#include<stdio.h>#include<stdlib.h>int main(){int x=010,y=10,z=0x10;char c1='M' ,c2='\x4d', c3='\115', c4=77,c;printf("x=0%o,y=%d,z=0x%d\n",x,y,z);printf("x=%o,y=%d,z=%d\n",x,y,z);printf("x=%d,y=%d,z=%d\n",x,y,z);printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4); printf("c1=%d,c2=%d,c3=%d\n"c1, c2, c3);c=c1+32;printf("c=%c,c=%d\n", c, c);return 0;}运算结果如图四、思考并回答以下问题1、查阅资料或实践后,回答:字符常量在实际项目应用中的优点。
自动化生产线的安装与调试智慧树知到答案2024年内江职业技术学院

自动化生产线的安装与调试内江职业技术学院智慧树知到答案2024年第一章测试1.供料单元是生产线的单元。
()A:两端 B:中间 C:起始 D:最末答案:C2.在自动生产线中,电磁阀是直接用于控制动作。
()A:传送带 B:机械手 C:气缸 D:按钮答案:C3.3YL-335B自动生产线空气压力要求为 MPa。
()A:0.8 B:0.5 C:0.6 D:0.7答案:C4.YL335B生产线人机接口设备采用。
()A:普通电脑 B:遥控器 C:手机 D:HMI答案:D5.自动化生产线集合了等技术。
()A:机械 B:传感 C:控制 D:人机接口答案:ABCD6.YL-335B型自动化生产线主要涉及哪些关键技术?()A:自动检测技术 B:PLC控制技术 C:液压控制技术 D:电机驱动技术答案:ABD7.我国制造业当前面临这哪些考验()A:基础能力薄弱 B:人口红利消失 C:自主创新能力不强 D:资源利用率偏低答案:ABCD8.我国制造业面临的外部挑战有哪些?()A:自主创新能力不强 B:新兴发展中国家追赶竞争 C:资源利用率偏低 D:发达国家再工业化答案:BD9.《中国制造2025》的印发日期是?()A:2015年5月 B:2012年3月 C:2014年5月 D:2015年3月答案:A10.我国的制造业已经处于世界先进水平。
()A:对 B:错答案:B11.我们应该主动切合国家发展需要,做好职业生涯规划。
()A:错 B:对答案:B12.自动化生产线正往智能化化和网络化的方向发展。
()A:错 B:对答案:B13.《自动化生产线的安装与调试》是机电一体化技术、工业机器人技术专业的专业核心课程。
()A:错 B:对答案:B14.情境二供料单元的安装与调试学习包括以下哪些内容?()A:单元认知 B:工艺要求 C:硬件系统的安装与调试 D:控制系统编程与调试答案:ACD15.单元认知包括哪些内容?()A:单元组成 B:功能 C:工艺要求 D:工作过程答案:ABCD16.本课程采用的PLC为?()A:S7-200 B:FX-2N C:S7-1200 D:FX-3U答案:C17.本课程的教学方法是()A:实验法 B:任务驱动法 C:项目教学法 D:讲授法答案:C18.本课程的考核包括。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验8--自定义数据类型1实验8 自定义数据类型三、实验思考1.有10名学生的数据,每个学生的数据包括学号、姓名、性别、三门课的考试成绩及平均成绩。
要求:(1)编写一个input函数,用来输入10个学生的信息。
(2)编写一个output函数,用来输出10个学生的信息。
(3)计算每个学生的平均成绩,并按平均成绩由小到大进行排序后输出。
2.设有5个学生和教师的数据。
学生的数据包括:姓名、年龄、性别、职业和年级。
教师的数据包括:姓名、年龄、性别、职业和职务。
现要求输入学生和教师的数据,并输出这些数据,要求当职业项为学生时,输出的最后一项为年级;当职业项为教师时,输出的最后一项为职务。
3.利用结构体数组和结构体指针,根据从键盘输入的学生姓名,查找已给出数据的结构体数组,若找到该名学生,则输出其所有信息;若找不到该名学生,则输出相应提示信息。
4.编程实现,从红、黄、蓝、绿四种颜色中任取三种不同的颜色,共有多少种取法,并请输出所有的排列?5.从键盘输入一批正整数(以-1作为输入结束标志),按插表尾形式把它们组成一个线性链表。
然后,从表头开始,遍历所有结点并输出各结点中的数据。
要求线性链表的生成与遍历均写成函数定义。
6.从键盘输入一系列非负整数,遇0时停止。
对于输入的所有偶数和奇数,分别建立一个偶数链表和一个奇数链表,然后输出两个链表中的数据。
答案1.#include<iostream>#include<iomanip>using namespace std;const int n=2; //设置人数常量n,本例为2人struct student{ char num[6]; // 学号char name[8]; // 姓名char sex[2]; // 性别int score[4]; // score[1]~score[3]存放3门课成绩,score[0]存放平均成绩}stu[n];void input() //输入函数input{ int i,j,sum;for(i=0;i<n;i++){ sum=0;cout<<"input the "<<i+1<<"th student's scores:"<<endl;cout<<"No.:";cin>>stu[i].num;cout<<"name:";cin>>stu[i].name;cout<<"sex:";cin>>stu[i].sex;for(j=0;j<3;j++){ cout<<"score"<<j+1<<":";cin>>stu[i].score[j+1];sum=sum+stu[i].score[j+1];}cout<<endl;stu[i].score[0]=sum/3;}}void output(student stu[]) //输出函数output{ int i,j;cout<<"NO. name sex average score1 score2 score3"<<endl;for(i=0;i<n;i++){ cout<<stu[i].num<<setw(7)<<stu[i].name<<setw(7)<<stu[i].sex<<setw(7);for(j=0;j<4;j++)cout<<setw(7)<<stu[i].score[j]<<" ";cout<<endl;}}void sort() //排序函数sort{ int i,j,max;student temp;for(i=0;i<n-1;i++){ max=i;for(j=i+1;j<n;j++)if (stu[max].score[0]<stu[j].score[0]) max=j;temp=stu[i];stu[i]=stu[max];stu[max]=temp;}}void main(){ input();output(stu);sort();cout<<"sort result:"<<endl;output(stu);}2.从题意中可知,学生和教师所包含的数据是不同的,现把数据放在以下表格中。
如果job项为st(学生),则第5项为grade(年级),如果job项为te(教师),则第5项为prof(教授)。
#include<iostream>#include<iomanip>using namespace std;const int n=2; //定义常量n,本例输入2人信息struct person{ char num[4]; // 号码char name[8]; // 姓名char sex[3]; // 性别char job; // 职业union p //共用体类型{ int grade; //年级char duty[8]; //职务}category; //共用体变量category}stte[n]; //结构体数组,n个元素void main(){ int i;cout<<"enter person's information:no,name,sex,job,grade/duty"<<endl;for(i=0;i<n;i++){ cin>>stte[i].num>>stte[i].name>>stte[i].sex>>stte[i].job;if(stte[i].job=='s') cin>>stte[i].category.grade; //若为学生,则输入所在年级elseif (stte[i].job=='t') cin>>stte[i].category.duty; //若为教师,则输入其职位}cout<<endl<<"NO. name sex job grade/duty"<<endl;for(i=0;i<n;i++){ if(stte[i].job=='s')cout<<stte[i].num<<setw(8)<<stte[i].name<<setw(6)<<stte[i].sex<<setw(6)<<stte[i].job<<setw(10)<<stte[i].category.grade<<endl;elsecout<<stte[i].num<<setw(8)<<stte[i].name<<setw(6)<<stte[i].sex<<setw(6)<<stte[i].job<<setw(10)<<stte[i].category.duty<<endl;}}3.学生信息包括学号、姓名、性别。
#include<iostream>#include<iomanip>#include<string>using namespace std;const int n=2; //设置人数常量n,本例为2人struct student{ char num[6]; // 学号char name[8]; // 姓名char sex[3]; // 性别}stu[n];void input() //输入函数input{ int i,sum;for(i=0;i<n;i++){ sum=0;cout<<"input the "<<i+1<<"th student's information:"<<endl;cout<<"No.:";cin>>stu[i].num;cout<<"name:";cin>>stu[i].name;cout<<"sex:";cin>>stu[i].sex;cout<<endl;}}void main(){ int i;char stname[8];input();cout<<"enter the searched name:";cin>>stname;for(i=0;i<n;i++)if (strcmp(stname,stu[i].name)==0 ){ cout<<"the searched information is:"<<endl;cout<<stu[i].num<<setw(7)<<stu[i].name<<setw(7)<<stu[i].sex<<setw(7);cout<<endl;break;}if (i==n) cout<<"sorry,no information found!"<<endl;}4.#include<iostream>#include<iomanip>using namespace std;void main(){ enum color{red,yellow,blue,green}; //声明枚举类型colorcolor test; //定义枚举类型变量testint i,j,k,n=0,loop;for(i=red;i<=green;i++)for(j=red;j<=green;j++)if(i!=j) //前两球颜色不同{for(k=red;k<=green;k++)if((k!=i)&&(k!=j)) //前三球颜色不同{ n=n+1;cout<<setw(3)<<n;for(loop=1;loop<=3;loop++) //对三个球进行处理{ switch(loop){case 1: test=color(i);break; //color(i)强制类型转换,将整型i所对应的枚举元素赋给testcase 2: test=color(j);break;case 3: test=color(k);break;default:break;}switch(test) //判断test的值,输出相应的颜色{case red: cout<<setw(8)<<"red";break;case yellow: cout<<setw(8)<<"yellow";break;case blue: cout<<setw(8)<<"blue";break;case green: cout<<setw(8)<<"green";break;default: break;}}cout<<endl;}}cout<<"total:"<<n<<endl;}5.#include<iostream>#include<iomanip>using namespace std;struct node{ int data;struct node *next;};void creat(node * &head)//建立以head为头指针的链表,head为引用参数,//以使对应的实参为该链表的表头指针{int i;node *last,*p;cout<<"enter positive integer,-1 to end:";cin>>i;if(i==-1) {head=NULL; return;} //置表头指针为空后返回last=head=NULL; //置表头、表尾指针为空,此时为空链表p=new node;p->data=i;p->next=last;head=p;last=p;cin>>i;while (i!=-1){p=new node; //产生一个p所指的动态结点p->data=i;last->next=p;p->next=NULL;last=p; //last 指针指向表尾结点cin>>i;}}void traverse (node *head){ node *p;p=head;cout<<"the result is:"<<endl;;while(p){cout<<p->data<<" ";p=p->next; //使p指针移动到下一个结点}cout<<endl;}void main(){node *head1=NULL;creat(head1);traverse(head1);}6.#include<iostream>#include<iomanip>using namespace std;struct node{ int data;struct node *next;};void creat(node * &head)//建立以head为头指针的链表,head为引用参数,//以使对应的实参为该链表的表头指针{int i;node *last,*p;cout<<"enter non negative integer,0 to end:"<<endl;cin>>i;if(i==0) {cout<<"The linked list is empty!"<<endl; return;} //链表为空,返回last=head;p=new node;p->data=i;p->next=last;head=p;last=p;cin>>i;while (i!=0){p=new node; //产生一个p所指的动态结点p->data=i;last->next=p;p->next=NULL;last=p; //last 指针指向表尾结点cin>>i;}return;}void cre_oddeven(node * &headodd,node * &headeven) //拆分偶数、奇数链表{node *p1,*p2,*even;if(headodd==NULL){cout<<"The linked list is empty!"<<endl;return ;}p1=headodd;even=new node;even->next=NULL;headeven=even;while( p1->next!=NULL) //删除链表中的偶数{ p2=p1;p1=p1->next;if ((p2->data%2==0)&& (p2==headodd) ) //将在第一节点中的偶数,插入偶数链中{ headodd=p1;even->next=p2;even=p2;}else if ((p1->data%2==0))//将不在第一节点中的偶数,插入偶数链中{ p2->next=p1->next;even->next=p1;even=p1;p1=p2;even->next=NULL;}}if (headodd->data%2==0) headodd=0;headeven=headeven->next;}void traverse (node *head){ node *p;p=head;if(p==NULL) cout<<"The linked list is empty!"<<endl;while(p){cout<<p->data<<" ";p=p->next; //使p指针移动到下一个结点}cout<<endl;}void main(){node *head=NULL,*headodd,*headeven=NULL; //headodd,headeven分别为奇、偶链表的头指针creat(head);headodd=head;cout<<"the result is:"<<endl;traverse(headodd);cre_oddeven(headodd,headeven);cout<<"the odd table is:"<<endl;traverse(headodd);cout<<"the even table is:"<<endl;traverse(headeven);}。