实验14结构体-答案

实验14结构体-答案
实验14结构体-答案

实验14结构体

[实验目的]

1.掌握结构体和结构体数组的概念、定义及存储

2.掌握结构体和结构体数组的基本操作及应用

[DIY]

1、调试下列程序(下列各程序中存在一些问题,通过调试发现问题,并加以修正,使其实现预期目标)

[1.1]下列程序的功能为:应用结构体求多项式的值。多项式:

a n x n+a n-1x n-1+a n-2x n-2+…+a1x+a0,请纠正程序中存在的错误,使程序实现其功能。

答案

#include

#include

struct Poly

{ float a; /*系数*/

int n; /*指数*/

};

double fpvalue()

{ struct Poly p;

double pvalue=0;

float x;

printf("输入多项式X:\n");

scanf("%f",&x);

printf("输入多项式系数(a)和指数(n,n=-10000,结束):\n");

scanf("%f %d", &p.a, &p.n);

while(p.n!=-10000)

{pvalue+=p.a*pow(x, p.n);

scanf("%f %d", &p.a, &p.n);

}

return pvalue;

}

[1.2] 13个人围成一圈,从第1个开始顺序报号1、2、3。凡报到“3”者退出圈子。找出最后留在圈子中的人原来的序号。

[分析]本题算法通过一个循环队列来实现,用结构体数组构造一个循环队列,每个元素中定义一个成员存放下一个元素的下标。

答案

#include

#define N 13

struct person

{ int number ; /*当前元素的序号*/

int nextp ; /*下一个元素的位置*/

} link[N+1] ; /*定义N+1个元素的结构体数组存放N个人的信息*/

main()

{ int i, count, h ;

for( i = 1 ; i<=N ; i++) /*给循环队列初始化,下标从1开始*/

{ if(i==N)

link[i].nextp=1 ;

/*最后一人的下一个元素的位置为1即第一个元素,形成循环队列*/

else

link[i].nextp=i+1; /*下一个人的序号*/

link[i].number=i; /*每个人的序号与下标值相等*/

}

printf("\n") ;

count=0;

h=N ; /*count统计出列的人数,h初始化为队列的最后一个元素*/ printf("sequence that persons leave the ircle: \n") ;

while(count

{ i=0;

while(i!=3) /*报数,i统计当前数到的顺序,没数到3时继续报数*/

{ h=link[h].nextp; /*h指向当前元素即前一个元素的后面一个元素*/ if( link[h].number) i++ ; /*如果h的序号为0,表示该元素已出列,i不加*/

}

printf("% 4d", link[h].number) ; /*数到3循环退出,输出数到3的人的序号*/

link[h] .number = 0 ; /*将其序号置0,表示该元素已出列*/

count++ ; /*统计出列的人数*/

}

printf("\n The last one is ") ;

for( i=1 ;i<=N; i++)

if(link[i].number) /*若元素值不为0,表示该元素没出列,即是留下来的元素*/

printf("% 3d\n" , link[i].number) ;

}

2.程序填空(请填写适当的符号,使程序实现其功能)

[2.1] 下列函数findbook的功能为:在有n个元素的数组s中查找书名为a的书,若找到,函数返回数组下标,否则,函数返回0,请填写适当的符号或语句,使程序实现其功能。

答案

#include

#include "string.h"

struct bdata

{ int id;

char bname[20];

float price;

};

int findbook(struct bdata st[],int n,char s[])

{ int i;

for(i=0;i

{if(strcmp(st[i].bname,s)==0) return i+1;}

return 0;

}

void main()

{struct bdata book[100]={12,"program-c",23.5,2,"大学计算机",43.5,3,"大学物理",33.5,6,"大学化学",53.5,8,"大学语文",23.5,9,"哲学",13.5};

char st[20];

int index;

printf("请输入要查找书名:");

gets(st);

index=findbook(book,6,st);

if(index) printf("书号:%d,书名:%s,价格:%f\n",book[index-1].id,book[index-1].bname,book[index-1].price);

else printf("%s 不在书库中\n",st);

}

[2.2] 下列函数average功能为:计算5名学生3门课成绩的平均分,请填写适当的符号或语句,使程序实现其功能。

答案

#include

#define m 3

#define n 5

struct stud

{ int no;

char name[16];

float mark[m];

float ave;

};

void average(struct stud st[])

{int i,j;

float sum;

for(i=0;i

{sum=0;

for(j=0;j

sum=sum+st[i].mark[j];

st[i].ave=sum/m;

}

}

void main()

{struct stud preson[n]={1,"张平",90,88,78,0,2,"王新",70,88,78,0,3,"李和平

",60,68,78,0,4,"王开新",80,78,78,0,5,"赵明",89,98,98,0};

int i;

average(preson);

printf("\t\t\t成绩表\n");

for(i=0;i

printf("%3d%10s,%6f,%6f,%6f,%.2f\n",preson[i].no,preson[i].name,preson[i].mark[0],

preson[i].mark[1],preson[i].mark[2],preson[i].ave);

}

3.编程

[3.1] 编写一个程序实现如下功能:定义一个点的结构数据类型,实现下列功能:

①为点输入坐标值。

②求两个点中点坐标。

③求两点间距离。

#include "stdio.h"

#include "math.h"

struct point

{

float x;

float y;

};

void input(struct point a[])

{

int i;

for(i=0;i<2;i++)

{ printf("输入第%d点的坐标\n",i+1);

scanf("%f%f",&a[i].x,&a[i].y);

}

}

void midpoint(struct point a[])

{

int i;struct point m;m.x=0;m.y=0;

for(i=0;i<2;i++)

{m.x=m.x+a[i].x;

m.y=m.y+a[i].y;}

m.x=m.x/2;m.y=m.y/2;

a[2].x=m.x;a[2].y=m.y;

}

float dis(struct point a[])

{

int i;float s;struct point m;m.x=a[0].x;m.y=a[0].y;

{ m.x=m.x-a[1].x;m.y=m.y-a[1].y;}

s=sqrt(m.x*m.x+m.y*m.y);

return s;

}

main()

{

struct point a[3];

input(a);

printf(" 第1点%f %f 第2点%f %f\n",a[0].x,a[0].y,a[1].x,a[1].y);

midpoint(a);

printf(" 中点%f %f \n",a[2].x,a[2].y);

printf("距离%f\n",dis(a));

}

[3.2] 建立一份同学通讯录,包含姓名、电话、通信地址、邮编、生日等信息,要求按姓名的字母顺序排列输出通讯录。

#include "stdio.h"

#include "string.h"

struct data

{ int month; int day; int year; };

struct stud

{ char name[20];

char tele[12];

char zip[7];

struct data birthday;

char addre[30];

};

struct stud stud1[30]={"liming","1331187907","210020",3,14,1988,"beijing","chaening","137********","26 0020",8,14,1980,"tianjing","being","136********","710020",9,14,1990,"nanjing"};

main()

{ i nt k,i,j,n=3;

struct stud temp;

for ( i = 0; i < n-1; i++)

{ k = i;

for (j= i+1;j

if (strcmp(stud1[j].name,stud1[k].name)<0)

k =j;

temp= stud1[i];

stud1[i]= stud1[k];

stud1[k]= temp;

}

printf("姓名 电话 邮编 生日 地址\n"); for(i=0;i<3;i++)

printf("%10s%12s%8s %2d-%2d-%4d %15s\n",stud1[i].name,stud1[i].tele,stud1[i].zip,stu d1[i].birthday.month,stud1[i].birthday.day,stud1[i].birthday.year,stud1[i].addre);

}

[本章测试]

一、 单选题(10分)

1.下列关于结构体的说法错误的是 D 。

A.结构体是由用户自定义的一种结构类型

B.结构体中可设定若干个不同数据类型的成员

C.结构体中成员的数据类型可以是另一个已定义的结构

D.在定义结构时,可以为成员设置默认值

2.下列程序中,结构体变量a 所占内存字节数是 C 。

union u

{char st[4] ;

int i;

long l;

};

struct A

{int c;

union u;

}a;

A.4

B.5

C.6

D.8

3.以下对结构体类型变量的定义中,不正确的是__ A _____。

A. typedef struct aa { int n; float m; }AA; AA tdl;

C. struct { int n; float m; } aa; struct aa tdl;

4.若有下面的说明和定义,则sizeof(struct test)的值是___ A ____。

struct test

{ int m1;

char m2;

B.#define AA struct aa AA{ int n; float m; }tdl; D. struct

{ int n;

float m;

} tdl;

float m3;

union uu {char ul[5] ;

int u2[2] ;} ua;

} myaa;

A.12

B.16

C.14

D.9

5.若程序中有下面的说明和定义,则会发生的情况是__A___。

struct abc

{ int x;

char y;}

struct abc s1,s2;

A.编译是错

B.程序将顺利编译、连接、执行

C.能顺利通过编译、连接但不能执行

D.能顺利通过编译、但连接出错

6.以下对C语言共用体中共用体类型数据叙述正确的是_ C __。

A.一旦定义了一个共用变量后,即可引用该变量或该变量中的任意成员

B.一个共用体变量中可以同时存放其所有成员

C.一个共用体变量中不能同时存放其所有成员

D.共用体类型数据可以出现在结构体类型定义中,但结构类型数据不能出现在共用体类

型定义中

7.下面的程序使用了共用体,其输出结果是_ D __。

#define N 5

union data

{ char a;

int b;

};

main()

{ union data d;

d.b=0xeeff; d.a=0xaa; printf("%x ",d.b);

}

A.eeff

B.0xaa

C.aaee

D.eeaa

8.以下程序的输出结果是 C 。

# define f(x) x*x

main()

{ int a=6, b = 2, c;

c = f(a)/f(b) ; printf("%

d \n", c);

}

A.9

B.6

C.36

D.18

9.下列程序的输出结果是 B 。

struct abc

{ int a, b, c ; } ;

main()

{ struct abc s[2] = { {1,2,3},{4,5,6}} ; int i,t ;

t = s[0] .a + s[1] .b ; printf("%d \n", t) ;

}

A.5

B.6

C.7

D.8

10.结构体成员在内存中从高位到低位的排列顺序是__A.____。

A.按结构体说明中成员出现的先后顺序,先出现的在低位

B.按结构体说明中成员出现的先后顺序,先出现的在高位

C.占内存量少的成员在低位

D.占内存量大的成员在低位

二、填空题(7分)

1.设struct student {int num;char name[20];}st;

写出printf语句:输出学生st的各个成员分量。要求按num、name的顺序输出,各成员之间使用空格分隔开。____printf("%d %s\n",st.num,https://www.360docs.net/doc/de6029491.html,);______________

2.已知struct fs { int fz; int fm; } x[]={{2,7}, {4,9}};计算表达式

x[0].fz*x[1].fm+x[1].fz*x[0].fm和x[0].fm*x[1].fm的值为___46 63____________。3.已知有职工结构体数组struct {int num; char name[20];}per[100]; 用scanf函数写出输入下标为i 的职工的num和name的语句为scanf(“%d%s”,&a[i].num,a[i].name)_______________________________。

4.运行下列程序段,若输入:3 101 wang 102 zou 103 chen

其输出结果为:______103 chen 101 wang 102 zou _______________________________________。

struct worker

{

int num;

char name[20];

};

main()

{

struct worker per[10], t;

int n,i,j;

scanf( "%d", &n );

for ( i = 0; i < n; i++ )

scanf( "%d%s", &per[i].num, per[i].name );

for ( i = 0; i < n-1; i++ )

for ( j = 0; j < n-1-i; j++ )

if ( strcmp(per[j].name,per[j+1].name) > 0 )

{

t = per[j];

per[j] = per[j+1];

per[j+1] = t;

}

for ( i = 0; i < n; i++ )

printf( "%d, %s\n", per[i].num, per[i].name );

}

5.有以下说明和定义语句,请给结构体变量w赋初值,使w.a的值为99,w.b指向a数组的首地址。

double a[5] ;

struct ABC

{

int a ;

double b ;

}w ={ 99_, _&a[0]_} ;

6.有以下程序:

#include

union pw

{ int i;

char ch[2] ;

} a;

main()

{ a.ch[0] = 13 ; a.ch[1] = 0 ;

printf("% d\n", a.i) ;

}

程序的输出结果是13 (注意:ch[0] 在低字节,ch[1] 在高字节)。

三、程序调试题(10分)

1.请指出下列程序的错误所在。

【3.1】

#include

struct person

{ char name[20];

int count;

} x1={"ZhongHua", 10};

main( )

{ int p;

p=x1;

printf ("%s\n%d\n", https://www.360docs.net/doc/de6029491.html,, p.count)

}

#include

#include "string.h"

struct person

{ char name[20];

int count;

}x1={"ZhongHua", 10};

main( )

{ struct person p;

p.count=x1.count;strcpy(https://www.360docs.net/doc/de6029491.html,,https://www.360docs.net/doc/de6029491.html,);

printf ("%s\n%d\n", https://www.360docs.net/doc/de6029491.html,, p.count);

}

2.计算至少有一门功课不及格的学生人数,改正下列程序的错误。

【3.2】

#include

struct student

{ int num;

char name;

char sex;

float score[2];

} stu[5]={{101,"Li ping",'M',45,67}, {102,"Zhang ping",'M',62.5,76}, {103,"He fang",'F',92.5,80}, {104,"Cheng ling",'F',87,78},

{105,"Wang ming",'M',58,65}};

void main()

{ int i,c;

float s ;

for(i=0;i<5;i++)

if(stu[i].score<60) c+=1;

printf("\ncount=%d\n",c);

}

#include

struct student

{ int num;

char name;

char sex;

float score[2];

} stu[5]={{101,"Li ping",'M',45,67},{102,"Zhang ping",'M',62.5,76}, {103,"He fang",'F',92.5,80}, {104,"Cheng ling",'F',87,78},

{105,"Wang ming",'M',58,65}};

void main()

{ int i,j,c,count=0;

float s ;

for(i=0;i<5;i++)

{c=0;

for(j=0;j<2;j++)

if(stu[i].score[j]<60) c++;

if(c) count++;

}

printf("\ncount=%d\n",count);

}

四、程序填空题(30分)

1.对结构体类型变量punkt 赋值并进行屏幕输出:

#include

#include

void main ( void )

{

struct

{

double xk ;

int yk ;

char zk ;

} punkt;

scanf ( "%lf " , &punkt.xk) ;

scanf ( "%d " , &punkt.yk);

scanf ( "%c " ,&punkt.zk) ;

printf ( " \n x-coordinate : %lf ", punkt.xk) ;

printf ( " \n y-coordinate : %d ", punkt.yk) ;

printf ( " \n z-coordinate : %c ", punkt.zk) ;

}

3.已知结构体数组person中存有N个人员的姓名和年龄,以下程序的功能:输出数组中

年龄最大者的姓名和年龄,请填空。

#include

#define N 3

struct man

{ char name[20] ;

int age ; };

struct man person [N] ={ " zhang" , 27 , " li " , 18 , " wang " , 73} ;

int find (struct man s[],int n)

{ int q;

int i;

q = 0;

for ( i=1 ; i

if (s[i].age>s[q].age) q=i ;

return q;

}

main ( )

{ int q ;

q = find (person, 3) ;

printf ( "年龄最大者为: %s , 其年龄为:%d\n", person[q].name , person[q].age ) ;

}

五、编程题(36分)

1.对职工工资进行统计。职工信息包含工号和姓名、基本工资、奖金、提成、实发工资,分别统计平均工资、最高工资和最低工资。将职工工资信息存入文件(diy

2.dat)中。

#include "stdio.h"

#include "string.h"

struct staff

{

int num;

char name[20];

float basic_wage;

float percentage;

float bonus;

float real_wages;

float wages_should;

}sp[200]={901,"张川",432,120,66,0,0,902,"李洪",488,123,75,0,0,903,"罗庆

",423,240,24,0,0,904,"秦汉",356,789,72,0,0,905,"刘少文",530,765,114,0,0,906,"苏南昌",488,456,87,0,0,907,"孙红",530,345,102,0,0};

FILE *fp3;

void file(struct staff a[],int n)

{ int i;FILE *fp3;

if((fp3=fopen("diy2.dat", "w"))==NULL)

{

printf("Open error \n");exit(0);

}

for(i=0;i

{

fprintf(fp3,"%d,%s,%f,%f,%f,%f,%f",a[i].num,a[i].name,a[i].basic_wage,a[i].percent age,a[i].bonus,a[i].real_wages,a[i].wages_should);

}

fclose(fp3);

}

int max(struct staff a[],int n)

{

int imax=0,i;

for(i=0;i

if(a[i].basic_wage>a[imax].basic_wage) imax=i;

return imax;

}

int min(struct staff a[],int n)

{

int imin=0,i;

for(i=0;i

if(a[i].basic_wage

return imin;

}

void comput(struct staff a[],int n)

{

int i;

for(i=0;i

{a[i].wages_should=a[i].basic_wage+a[i].percentage+a[i].bonus;

a[i].real_wages=a[i].wages_should-a[i].wages_should*0.1;

}

}

float ave(struct staff a[],int n)

{

int i;float ave=0;

for(i=0;i

ave=ave+a[i].basic_wage;

ave=ave/n;

return ave;

}

main()

{ int m=7;

comput(sp,m);

printf("最高工资%f 最低工资%f 平均工资%f\n",sp[max(sp,m)].basic_wage,sp[min(sp,m)].basic_wage,ave(sp,m));

file(sp,m);

}

2.定义一个结构体用于存储年、月、日数据,并定义一个函数用于求两个日期之间的天数。#include "stdio.h"

struct date

{

int month;

int day;

int year;

};

int Mon[13]={ 0,31,28,31,30,31,30,31,31,30,31,30,31};

int funy(int y) /*判断年份y是否闰年*/

{

return(y%4==0&&y%100!=0||y%400==0);

}

int funa(int y,int m,int d) /*计算一个日期到该年年底的天数*/

{

int i,days=0;

for(i=m+1;i<13;i++) days+=Mon[i];

days+=(Mon[m]-d);

if(m<3) days+=funy(y);

return days;

}

int funb(int y,int m,int d) /*计算一个日期是该年的第多少天*/

{

int i,days=0;

for(i=1;i

days+=d;

if(m>2) days+=funy(y);

return days;

}

int func(int y1,int y2)/*计算整年的天数*/

{

int i,days=0;

for(i=y1+1;i

days+=(365+funy(i));

return days;

}

main()

{

struct date y1,y2;int days=0;

printf("请输入开始日期(yy-mm-dd)\n");

scanf("%d-%d-%d",&y1.year,&y1.month,&y1.day);

printf("请输入终止日期(yy-mm-dd)\n");

scanf("%d-%d-%d",&y2.year,&y2.month,&y2.day);

if(y1.year==y2.year) days=funa(y1.year,y1.month,y1.day)-funa(y2.year,y2.month,y2.day);

else

days=funa(y1.year,y1.month,y1.day)+funb(y2.year,y2.month,y2.day)+func(y1.year,y2.year);

printf("%d年%d月%d日到%d年%d月%d日是一共有%d 天!\n",y1.year,y1.month,y1.day,y2.year,y2.month,y2.day,days);

}

高中生物实验专题练习

高中生物专题训练·生物实验 生物 1.(2012石家庄第一次质检)下列有关实验设计的叙述中正确的是() A.实验材料的数量、温度和时间等变量都应保持相同 B.各种实验中都必须设置空白对照组,确保单一变量 C.数据测量时应力求精确,因而需要多次测量求平均值 D.探究实验设计中,实验结果总是与提出的假设一致 [答案] 1 2.(2013年山东潍坊高三模拟考试)下列哪项是以下实验共有的() ①低温诱导植物染色体数目的变化 ②观察植物细胞的质壁分离和复原 ③观察植物细胞的有丝分裂 ④观察和在细胞中的分布 A.使用显微镜观察 B.实验材料不需要保持活性 C.使用盐酸 D.需染色处理 [答案] 2 3.(2013江苏,9,2分)一个班级分组进行减数分裂实验, 下列操作及表述正确的是() A. 换用高倍镜时, 从侧面观察, 防止物镜与装片碰擦 B. 因观察材料较少, 性母细胞较小, 显微镜视野应适当调亮 C. 为观察染色体不同层面的精细结构, 用粗准焦螺旋调节焦距 D. 一个视野中, 用10×物镜看到8个细胞, 用40×物镜则可看到32个细胞

[答案] 3 4.(2013福建,4,6分)下列为减少实验误差而采取的措施, 错误的是() 5.(2013江苏无锡高三期末)(5分)有人在1980年对栖息于岩石地带原来生活在一起的大、小两个种的鬣蜥作了相互移走的实验。四年实验中,其中两年气候干旱,鬣蜥的食物短缺;另两年气候湿润,食物极为丰富。实验者将实验分成六组,每组都有一定数量的大、小鬣蜥。实验过程及结果如下: (1)如果只在A组与B组间比较,在干旱年份,将大鬣蜥移走后,小鬣蜥的体重、种群密度比B组明显增加。据此分析,大、小两种鬣蜥的种间关系可能是,再将C组与B组比较后,可以排除两种鬣蜥间有关系。 (2)从实验来看,大鬣蜥的竞争能力强于小鬣蜥,判断理由是。 (3)在湿润年份,将大鬣蜥移走后,小鬣蜥的体重、种群密度与E组差别不大,出现这种情况的原因是。 (4)B、E两组在实验中都起对照作用。根据实验过程的气候条件分析,两组中小鬣蜥种群密度较大的是组。 [答案] 5.(1)竞争和捕食捕食 (2)将大鬣蜥移走对小鬣蜥的影响较大,将小鬣蜥移走对大鬣蜥的影响较小

数组指针结构体实验报告

验证性实验:数组指针结构体实验报告 1.实验目的 (1)复习c++语言数组的用法。 (2)复习c++语言指针的用法。 (3)复习c++语言结构体的用法。 (4)理解算法时间复杂度分析的基本方法。 (5)通过实验程序,分析它们的时间复杂度。 2.实验内容 (1)将1~10存入数组a[10],并将其逆序输出。 (2)用指针方式编写程序:从键盘输入10个整数数据,并存入数组,要求将10个数中最大的数与第1个输入的输交换:将10个数中最小的数和最后一个输入的数交换。(3)有5个学生,每个学生的数据包括学号、姓名3门课的成绩、平均分。 要求:从键盘依次输入5个学生的学号、姓名3门课的成绩,自动计算3门课的平均分,将5个学生的数据在屏幕上输出。 3.实验结果 (1)#include void main() { int i,a[10]; for (i=0;i<=9;i++) a[i]=i+1; for (i=9;i>=0;i--) printf("%3d",a[i]); printf("\n"); } (2)#include void main() { int a[10],*p,*max,*min,k; for (p=a;p*p) min=p;

} p=a; if(*max==*(p+9)&&*min==*p) { k=*p; *p=*(p+9); *(p+9)=k; } else if(*max==*(p+9)) { k=*max;*max=*p;*p=k;k=*min;*min=*(p+9);*(9+p)=k; } else { k=*min;*min=*(p+9);*(p+9)=k;k=*max;*max=*p;*p=k; } for(p=a;p struct STUDENT { char id[10]; char name[8]; int score[3]; double ave; }stu[5]; void main() { int num=5,i,j; for(i=0;i

实验8 指针

实验8 指针 一、实验目的 1. 熟练掌握指针的定义、赋值的方法 2. 掌握间接引用运算符的使用方法 3. 掌握通过指针引用数组元素的方法 4. 掌握使用指针处理字串的方法 二、实验内容 实训1 循环输入学生某门课的成绩,将成绩存储到数组中,统计最高分和获得最高分的学生人数,最后输出统计信息。 1)在VS2013中新建项目,在项目中新建C++源文件,输入下面程序。 #include// 包含输入输出接口文件 using namespace std; // 引用标准命名空间 int main() // 主函数 { const int n = 5; // 使用常变量定义学生人数 int score[n]; // 定义成绩数组,有n个整型元素 int maxScore = 0; // 最高分,并初始化为 int maxStudent = 0; // 得到最高分的学生人数 int i; // 循环变量 int *p = 0; p = score; // p指向score[0] for (i = 0; i < n; i++) // 计数循环 { // 开始循环 cout << "请输入第" << i << "位学生的成绩:"; cin >> p[i]; // 输入第i位学生的成绩,并存储到score[i] if (maxScore < p[i]) // 如果第i位学生的成绩高于原最高分 { maxScore = p[i]; // 将最高分修改为第i位学生的成绩} } // 结束循环 cout << "本班最高分为" << maxScore << endl; cout << "得到最高分的学生序号为:" << endl; for (i = 0; i < n; i++) // 计数循环 { // 循环开始 if (*(p + i) == maxScore) // 如果第i位学生的成绩等于最高分 { maxStudent++; // 得最高分的学生人数增1 cout << i << endl; // 输出该生序号

【高中生物】高中生物实验专题复习(人教版新课标)

(生物科技行业)高中生物实验专题复习(人教版新课 标)

高中生物实验专题复习(人教版新课标)2 实验十四调查常见的人类遗传病(必修二P91) https://www.360docs.net/doc/de6029491.html,/bbs/upload/attachment.php?aid=4262 一.实验目的: 1.初步学会调查和统计人类遗传病的方法 2.通过对几种人类遗传病的调查,了解这几种遗传病的发病情况 3.通过实际调查,培养接触社会,并从社会中直接获取资料或数据的能力 二.实验原理: 显性遗传病具有世代相传的特点,隐性遗传病隔代出现。伴X染色体隐性遗传病的遗传特点是交叉遗传,隔代出现,患者男性多于女性。伴X染色体显性遗传病的遗传特点是世代相传,患者女性多于男性。 三.方法步骤: 可以以小组为单位开展调查工作。其程序是: 组织问题调查小组→确定课题→分头调查研究→撰写调查报告→汇报交流调查结果(如右流程图) 注意事项: 1.调查时,最好选取群体中发病率较高的单基因遗传病,如红绿色盲、白化病、高度近视(600度以上)等 2.为保证调查的群体足够大,小组调查的数据,应在班级和年级中进行汇总 3. 4.人类常见的遗传病类型概括 实验十五探究植物生长调节剂对扦插枝条生根的作用(必修三P51)一.实验目的:

1.了解植物生长调节剂的作用 2.进一步培养进行实验设计的能力 二.实验原理: 植物插条经植物生长调节剂处理后,对植物插条的生根情况有很大的影响,而且用不同浓度、不同时间处理其影响程度亦不同。其影响存在一个最适浓度,在此浓度下植物插条的生根数量最多,生长最快。 三.方法步骤: 1.选择生长素类似物:2,4-D或α-萘乙酸(NAA)等。 2.配制生长素类似物母液:5mg/mL(用蒸馏水配制,加少许无水乙醇以促进溶解)。 3.设置生长素类似物的浓度梯度:用容量瓶将母液分别配成0.2、0.4、0.6、0.8、1、2、3、 4、5mg/mL的溶液,分别放入小磨口瓶,及时贴上相应标签。NAA有毒,配制时最好戴手套和口罩。 4.剩余的母液应放在4℃保存,如果瓶底部长有绿色毛状物,则不能继续使用。 5.选择插条:以1年生苗木为最好(1年或2年生枝条形成层细胞分裂能力强、发育快、易成活)实验表明,插条部位以种条中部剪取的插穗为最好,基部较差,梢部插穗仍可利用。实验室用插穗长5~7cm,直径1~1.5cm为宜。 6.处理插条:枝条的形态学上端为平面,下端要削成斜面,这样在扦插后可增加吸收塔水分的面积,促进成活。每一枝条留3-4个芽,所选枝条的芽数尽量一样多。 处理方法:1)浸泡法:把插条的基部浸泡在配制好的溶液中,深约3cm,处理几小时至一天。(要求的溶液浓度较低,并且最好是在遮阴和空气湿度较高的地方进行处理)

结构体实验报告

实 验 报 告 题目:结构体实验报告:XXXXX 学号:XXXXXXXXXXXX 班级:XXXXXXXXXXXXXXXX 专业:XXXXXXXXX 成绩:

一、实验目的 掌握结构类型的定义和使用,学会使用结构数组编程解决问题。 二、实验容、要求与安排方式 1、实验容: 编程解决如下问题:谁的年龄最小、奖学金统计、猴子选大王、选票统计(二)、数星星(二),任选四道题,其中选票统计(二)、数星星(二)必选。 2、要求:能够上机编辑、调试程序并通过OJ测试。 3、实验安排方式:每组1人,独立完成上机实验; 4、注意事项:结构的嵌套定义和引用方法、用指针访问结构。 三、代码及调试结果 1.数星星代码: #include #include #include typedef struct shiquan { int x; int y; } S; //定义结构体 int main() { S s[216]; int n,i,j; int sum=0; scanf("%d",&n); for(i=0; i

图1 数星星调试结果 2.奖学金代码: #include #include typedef struct student { char name[20]; int Last_Score; int Class_Score; char Stu_leader; char w_stu; int article; int sum; } STU; int main() { int n; STU p[11]; int flag=0; int sum=0; int max=0; scanf("%d",&n); int i; for(i=0; i

实验练习八 结构体编程

实验八结构体编程 实验目的 1.掌握结构体类型变量的定义和使用。 2.掌握结构体类型数组的概念和使用。 3.掌握结构体指针及链表的概念,初步学会对链表进行操作,学会在函数之间传送链表的方法。 4.理解共用体的概念与使用。 实验内容 1、结构体类型的变量及数组 (1)利用指向结构体的指针,遍历结构体数组,寻找第一个名字首字母是‘M’的学生,参考代码如下:

2、结构体链表 (1)建立一个创建单链表的函数 (2)在单链表中查找一个会员 定义一个函数find。该函数能在head指向的链表中,查找一个名字和s所指字符串完全一样的会员,并返回其地址。若未找到,则返回NULL。代码如下: struct CStudent * find(struct CStudent *head, char *s){ struct CStudent *p=head; while( p!=NULL && strcmp(p->name, s)!=0 ) p=p->next; return p; } 而在主调函数中可以按如下的方式来调用find函数:

p=find(head, "Sun"); if(p==NULL) printf("没找到\n"); 完整的参考代码如下: (3)设计一个函数,在链表的当前节点之后插入一个节点。 该函数的功能是在链表的当前节点插入一个节点,当前节点还有要插入的数据以函数的形式参数传给函数。 函数原型 data *Insert_link((data *op_list, int value); 其中data数据类型定义如下: //Link list struct typedef struct data{ int value; struct data *next;

实验九 结构体与链表程序设计(解答)

《结构体与链表程序设计》实验解答 1、改错题 (1) #include struct stud { char name[20]; int age; } ; struct stud fun(struct stud person[],int n) //fun(struct stud person[],int n) { int min,i; min=0; for(i=0;i #include struct Poly { float a; /*系数*/ int n; /*指数*/ }; double fpvalue() { struct Poly p; double pvalue=0; float x; printf("输入多项式X:\n"); scanf("%f",&x); printf("输入多项式系数(a)和指数(n,n=-10000,结束):\n"); scanf("%f %d",&p.a,&p.n); //scanf("%f %d", p.a, p.n) while(p.n!=-10000) {pvalue+=p.a*pow(x,p.n); // pvalue+=p.a*pow(x, n);

高中生物实验专项练习题

实验练习 一、选择题 1、将鉴定下列化合物的 试剂及其颜色反应用直 线连接起来。 2.使用丹III染色,能 显示细胞中脂肪的存在, 这是因为该染色剂 A、易于进入细胞 B、 亲水而疏脂C、颜色特 别鲜艳D、亲脂而疏水 3.使用斐林试剂鉴定可溶性还原糖时,必须将斐林试剂的甲液和乙液 A、分别加入样液中 B、混匀后再加入样液 C、加热后再加入样液 D、同时加入样液中4.将马铃薯块茎与浸软的花生种子分别徒手切片,在载波片中央滴少许染液,再把这两种材料的切片分别浸在碘液里制成临时装片后,用显微镜观察切片上被碘染色的淀粉粒。结果应该是 A、马铃薯切片中有更多的蓝黑色颗粒 B、花生切片中显示更多的蓝黑色颗粒 C、两种材料的切片中均术见蓝黑色颗粒 D、难以分辨出两种切片碘染色后的差别 5.现有下列生物材料:①苹果②黄豆种子③梨④花生种子⑤蛋清⑥马铃薯块茎。 最适于用来鉴定还原性糖的有 A、①③⑥ B、①②③ C、①③ D、③④ 6.青苹果汁遇到碘酒溶液变成蓝色,熟苹果汁则能还原银氨溶液(即发生银镜反应),这说明 A、青苹果中只含淀粉,不含其他糖类 B、熟苹果中只含糖类,不含淀粉 C、苹果转熟时单糖聚合成淀粉 D、苹果转熟时淀粉水解为单糖 7.将面团包在纱布中在消水中搓洗,鉴定粘留在纱布上的粘稠物质和洗出的白浆分别用的试剂是: A、碘液、丹III溶液 B、双缩脲试剂,碘液 C、亚甲基兰溶液、丹III溶液 D、碘液、斐林试剂 8.在低倍镜下,发现视野有一污点,移动装片后,污点位置不变;转换高倍镜后污点消失,由此可以判断污点的位置在: A、目镜 B、高倍物镜 C、低倍物镜 D、装片 9.下列材料中不能用于观察叶绿体的是: A、气孔保卫细胞 B、幼嫩黄瓜果肉细胞 C、幼嫩茎皮层细胞 D、根毛细胞10.当已在低倍镜下看到某一目标后,想换高倍镜对其进一部观察,正确的操作应该是 A、先在低倍镜下将目标移到视野中央,再转换高倍镜,然后边观察边用粗准焦螺旋调整焦距 B、不用将目标移到视野中央即转换高倍镜,然后边观察边用细准焦螺旋轻轻调整焦距 C、先将目标在低倍镜下移到视野中央,再转换高倍镜,然后边观察边用细准焦螺旋调整焦距 D、先转换高倍镜,然后边搜寻目标边用粗细推焦螺旋调整焦距,直到看清物象为止。 11.用显微镜观察同一叶片的下列标本,看到叶绿体数量最多的是 A、栅栏组织叶肉细胞 B、叶表皮细胞 C、海绵组织叶肉细胞 D、叶脉细胞 12、①—⑦是显微镜各部分结构名称:①目镜②粗准焦螺旋③细准焦螺旋④物镜⑤反光镜⑥转换器⑦遮光器。在显微镜下观察玻片标本时,则:(1)若物象不清楚,应调节(2)若光线不足应调节

数据结构实验报告七查找、

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓名: 王辉 学号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。 熟悉各种查找算法的思想。 2、掌握查找的实现过程。 3、学会在不同情况下运用不同结构和算法求解问题。 4 把每个学生的信息放在结构体中: typedef struct //记录 { NA name; NA tel; NA add; }Record; 5 void getin(Record* a)函数依次输入学生信息 6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。并采用二次探测再散列法解决冲突。 7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1抽象数据类型的功能规格说明和结构体: #include

c语言上机实验实验八

实验八 (2018-12-12~2018-12-17) 一、实验名称: 结构体 二、实验目的: (1)掌握结构体类型的定义和使用; (2)掌握结构体类型变量的概念和使用; (3)掌握链表的概念,初步学会对链表进行操作; (4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。 三、实验项目(必做题) 本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。 (1)利用顺序表实现“先进后出”的堆栈 提示:定义结构体struct来定义堆栈;采用动态数组实现顺序表;定义函数实现堆栈中元素的压入和弹出,保证“先进后出”的实现 // 结构体Stack struct Stack{ int * List; // 用来存储元素的顺序表 int curNumber; // 用来存储当前元素的总个数 }; void iniStack(Stack * A); // 初始化堆栈 void clearStack(Stack * A); //清空堆栈 void push(Stack * A, ELEMENT obj); //将元素obj压入堆栈的栈顶 void pop(Stack * A); //将当前栈顶的元素弹出栈。要求:栈不为空 ELEMENT get_top(Stack * A); //返回当前栈顶的元素值。要求:栈不为空 int is_empty(Stack * A); //判断当前堆栈是否为空,空返回1,非空返回0 void display(Stack * A); //自顶向下显示堆栈中的元素 测试实例: 向堆栈中压入:1 2 3 4 弹出次序应为:4 3 2 1

高中生物实验专题-实验汇总--复习

[系统图示] [19个教材实验分类汇总] 分类 教 材 实 验 考 纲 要 求 显微观察类 (1)观察DNA 、RNA 在细胞中的分布 (2)用显微镜观察多种多样的细胞 (3)观察线粒体和叶绿体 (4)观察植物细胞的质壁分离和复原 (5)观察细胞的有丝分裂 (6)观察细胞的减数分裂 1.了解显微镜的基本构造,熟练掌握显微镜 的基本操作,特别是高倍镜的使用 2.掌握临时装片制作等相关的操作技能,并能了解这些实验所需材料的特点、试剂的作用 3.能对相关实验的现象和结果进行分析,以及对相关实验进行恰当评价并设计完善实验方案 验证鉴定类 (1)检测生物组织中还原糖、脂肪和蛋白质 (2)叶绿体色素的提取和分离 1.理解实验原理,明确相关试剂的作用 2.学会对实验结果进行正确的分析和评价 调查模拟类 (1)模拟探究细胞表面积与体积的关 系 (2)通过模拟实验探究膜的透性 (3)调查常见的人类遗传病 (4)模拟尿糖的检测 (5)土壤中动物类群丰富度的研究 1.掌握模拟实验和调查实验的实验目的,开 展实验的步骤及方案,并对实验的结果进行分析和判断 2.掌握调查、建立模型与系统分析等科学的研究方法 3.掌握对遗传病的遗传方式、发病率和种群丰富度等实验结果和数据的分析、处理的技能 探究设计 (1)探究影响酶活性的因素 (2)探究酵母菌的呼吸方式 1.学会从实验目的中寻找相关的实验变量 2.学会依据原理来制定对实验结果进行检测

类(3)低温诱导染色体加倍 (4)探究植物生长调节剂对扦插枝条 生根的作用 (5)探究培养液中酵母菌数量的动态 变化 (6)探究水族箱(或鱼缸)中群落的演替的方案设计 3.学会分析实验中设置的对照实验,以及设置的目的和要求 4.学会分析每个实验中的单一变量以及无关变量 5.学会预测相应的实验结果和对实验结果进行分析并得出结论 第1讲扎牢实验基础——4大类教材实验汇总让你“以不变应万变” - - - - - - - - - - - - - - - - - - - - - - - - -考点一显微观察类实验- - - - - - - - - - - - - - - - - - - - - - - - - 一、抓牢主干知识——学什么 列表比较六个显微观察类实验(填表) 实验名称观察方式观察对象细胞状态染色剂常用实验材料 观察DNA和RNA 在细胞中的分布 染色观察核酸死 甲基绿、 吡罗红 人的口腔上皮细胞 观察线粒体线粒体活健那绿人的口腔上皮细胞 观察根尖分生组织细胞的有丝分裂染色体死 龙胆紫溶 液(或醋酸 洋红液) 洋葱根尖 低温诱导染色体加倍染色体死 改良苯酚 品红染液 洋葱根尖 观察叶绿体 原色观察叶绿体活 无 菠菜叶(稍带叶肉的下 表皮)、藓类的叶 观察植物细胞的质壁分离与复原紫色大液 泡 活 成熟植物细胞,如紫 色洋葱鳞片叶外表皮 三、掌握方法技巧——怎么办

C语言结构体实验报告

《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体

附源程序清单: 1. #include struct student { int num; char name[20]; char classname[20]; float score[3]; float aver_score; }stu[5]; void input() { int i; for(i=1;i<6;i++) { printf("第%d个同学",i); printf("请输入学号名字班级三门课程成绩:\n"); scanf("%d %s %s %f %f %f",&stu[i].num,stu[i].name,stu[i].classname,&stu[i].score[1],&stu [i].score[2],&stu[i].score[3]); } }; void averagescore() {

for(i=1;i<=5;i++) stu[i].aver_score=((stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3); printf("平均成绩:"); for(i=1;i<6;i++) printf("第%d个同学的平均成绩%f:\n",i,stu[i].aver_score); printf("\n"); }; void max() { int i,k=0; float temp=stu[1].aver_score; for(i=2;i<=5;i++) if(stu[i].aver_score>temp) {temp=stu[i] .aver_score;k=i;}; printf("成绩最好的同学:\n"); printf("%d %s %s %4.2f %4.2f %4.2f %4.2f\n", stu[k].num,stu[k].name,stu[k].classname,stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].aver _score); }; void main() { input(); averagescore(); max(); } 2.#include struct worker { char name[20]; int workyear; float salary; }work[5]; void input() { int i; for(i=1;i<=5;i++) { printf("第%d个工人:",i); printf("请输入名字工作年限工资总额:\n"); scanf("%s %d %f",&work[i].name,&work[i].workyear,&work[i].salary);

实验5结构体与文件处理

实验5结构体与文件处理(上机调试运行) 1.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中,请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(只有一个最高分)。 2.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,功能是:按照分数的高低排列学生的记录,高分在前。并将数据存入文件中。 3.给定程序的功能:从键盘输入若干行文本(每行不超过80个字符),写的文件myfile4.txt中,用-1作为字符串输入结束的标志,然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText 实现。 二.实验目的 1.掌握结构体的概念及其数据结构 2.有效应用结构体进行二维表格编程 3.掌握C语言中文件的概念及其数据结构 4.熟悉文件的读写操作 实验4 运用指针类型及函数编程练习 一.实验要求 本实验包含三个程序 1.fun函数的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数。并把该整数中各位上最大的数字值作为函数值返回。例如,若输入30800,则零的个数为3,各位上数字值最大的是8。 2.fun函数的功能:用指针的形式比较两个字符串的的长度,将长的那个字符串的首地址作为函数值返回。 3.给定函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。偶数在主函数中定义。 二.实验目的 1.掌握指针的概念及其运算 2.掌握以指针作为形参的函数调用及用函数返回一个指针 3.掌握指针与字符串之间的运算关系

高中生物实验设计专题练习

高中生物实验设计专题练习 1.以下是某同学关于酶特性的实验操作步骤,请根据要求回答:

(1)若该实验的目的是验证酶作用的专一性,则步骤4可以选用_________或_____两种不同类别的酶。 (2)如果按上述步骤进行操作,分析A、B可能出现的现象及原因 (3)该实验步骤中存在明显的缺陷,请写出正确的操作步骤(注:可直接用上表步骤中的数字表示,需增加的步骤用文字表述): 2.探究酸碱度对酵母菌酒精发酵酶促反应速度的影响 实验用具:烧杯、注射器8支、带有橡皮塞抽去空气的试管4支、干酵母粉、蔗糖、配制好的pH分别为5、6、7、8的缓冲液 实验步骤:①用开水配制10%蔗糖溶液100mL,冷却到室温(26℃)后,加入4克干酵母粉,10min后……依次完成步骤②③④⑤,观察并记录。 实验记录:产生2mL气体体积量(以针筒推柄上升的mL数为产气量,见下图)

所需要的时间如下表: pH p H=5 p H=6 p H=7 p H=8 时间 (s)876 7. 5 (1)完成实验步骤: ②_______________③_______________ ④_______________⑤_______________ (2)实验结论: (3)回答问题: ①实验过程中为什么要等到蔗糖溶液冷却后再加入干酵母粉?

②为什么要用注射器吸取溶液注入试管内? 3.同学甲从一本《植物生理学》中查到“幼嫩叶片可产生生长素,生长素可阻止叶柄脱落”的结论。于是他设计了一个实验,想证实该结论。他设计的实验步骤为: 第一步:取一盆生长状况良好的植物,去掉幼叶的叶片(如图所示); 第二步:观察幼叶叶柄的脱落情况。 同学乙在仔细研究了甲的实验设计方案后,向他提出了两点意见。请你用所学的生物学知识,把同学乙提出的意见补充完整: (1)在去掉幼叶的同时,还必须_________因为_________。 (2)应增加一个对照实验,对照设置为:取同一品种、生长状况相同的植物;然后_________,观察幼叶叶柄的脱落情况。以此对照实验来说明_________。 4.苍耳是短日照植物,短日照可诱导短日植物开花,用3株苍耳(每株均有两个分枝A和B),A枝持续光照,B枝给于短日照并改变叶的数目,下面图表为实验处理及其结果。

实验九结构体

实验九结构体、共用体与枚举类型 实验时间:年月日 【实验目的】 1、掌握结构体类型、共用体类型和结构体类型变量的定义方法; 2、掌握结构体类型变量成员赋值和引用方法; 3、学会使用结构体数组; 4、掌握共用体和枚举类型数据的使用。 【实验内容】 1、结构体类型的定义; 2、结构体变量的定义、赋值与使用; 3、结构体数组与结构体指针的定义与使用; 4、共用体类型的定义,共用体变量的定义与使用; 5、枚举类型的定义与使用; 6、链表与动态内存分配; 7、自定义类型的使用。 【实验步骤】 一、在E或F盘上建立以自己的学号命名的文件夹。 二、上机验证与分析题 1、写出程序ex9_1.c运行的结果。 /*文件名ex9_1.c*/ #include struct HAR { int x,y; struct HAR *p; }h[2]; int main() { h[0].x=1; h[0].y=2; h[1].x=3; h[1].y=4; h[0].p=&h[1]; h[1].p=h; printf("%d %d\n",(h[0].p)->x,(h[1].p)->y); return 0; } 2、写出程序ex9_2.c运行的结果。

/*文件名ex9_2.c*/ #include "stdio.h" void main() { int z; union data { int x; int y; }a; a.x=3; a.y=6; z=a.x+a.y; printf("z=%d\n",z); } 3、阅读程序ex9_3.c,预测结果并上机验证。 /*文件名ex9_3.c*/ #include void main() { union data { int i; char ch; float f; }a,b,c; a.i=9; b=a; c=b; printf("b.i=%d,c.i=%d\n",b.i,c.i); } 4、运行下列程序,写出结果 /*文件名ex9_4.c*/ #include void main() { struct List {

C语言实验八结构体上机报告

《标准C语言程序设计》上机报告实验八结构体程序设计 专业:电子信息工程 班级:电信1301 学号:U201313480 姓名:秦行 完成日期:2014/6/9

一、实验目的: 1、掌握结构体类型的说明和结构体变量的定义; 2、掌握结构体变量成员的引用和对结构体变量的初始化; 3、掌握结构体数组及结构体指针变量的定义及使用。 4、理解并掌握结构体在函数间的传递; 5、进一步掌握复杂程序编译、连接和调试的技巧。 二、实验内容及要求(鼓励一题多解) ——以下均要求不得使用全局变量: 1 (1)、正确定义该表格内容要求的数据类型; (2)、分别输入各成员项数据,并打印输出(为简便起见,假设只有3名考生)。#include #include #define N 3 struct date { int year; int month; int day; }; struct student { unsigned int num; char name[20]; char sex; struct date birth; }; void main()

{ struct student tester[N]; int i; for(i=0;i #include #include #define N 10 struct worker { char name[20]; int salary; };

实验09结构体实验报告

1.学会结构体类型变量的定义和使用方法。 2.能够运用结构体数组编写程序。 3.学会结构体指针的定义使用方法。 4.能够运用结构体指针作函数参数编写程序。 二、实验环境 (调试程序所使用的软硬件环境) 软件环境:VC++6.0 硬件环境:宏基Intel 奔4 主频2.8GHz,内存256MB 三、实验内容、结果及分析 1、题目1.建立一个有n(3 #include #include using namespace std; const int N=10; struct rem { String num; string name; double mark[3]; double all; }; int main () { int n,i,m; double max; rem loq[N]; cout<<"请输入人数"<>n; for(i=0;i

cout<<"请输入第"<>loq[i].num>>loq[i].name >>loq[i].mark[0] >>loq[i].mark[1] >>loq[i].mark[2]; } for(i=0;imax) { max=loq[i].all; m=i; } } cout<<"总分最高的学生为"<

C语言实验八

实验8 结构体、共用体与枚举类型 一、实验目的和要求 1.掌握枚举类型的基本使用方法。 2.掌握共用体的概念和应用。 3.掌握结构体变量及结构体数组的定义和使用。 4.掌握简单链表的基本使用方法。 二、实验内容和步骤 1.有5个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩,从键盘输入5个学生的数据,要求输出4门课的平均成绩,以及平均成绩最高的学生信息(包括学号、姓名、性别、4门课的成绩、平均分数)。 同时要求用in函数输入5个学生数据;用aver函数求平均分;用max函数找出平均成绩最高的学生数据;学生的数据在out函数中输出。 2.输入和运行以下程序。 #include union data { char c[4]; long b; int i[2]; }; main() { union data s; scanf("%c,%c,%c,%c",&s.c[0],&s.c[1],&s.c[2],&s.c[3]); printf("i[0]=%d,i[1]=%d\nb=%ld\nc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c\n", s.i[0],s.i[1],s.b,s.c[0],s.c[1],s.c[2],s.c[3]); } (1)输入4个字符a,b,c,d给s.i[0],s.c[1],s.c[2],s.c[3],并分析运行结果。 (2)将scanf()改为: scanf("%ld",&s.b); 输入876543给b,分析运行结果。 3.请用枚举类型表示一年的十二个月份,并输出每个月的天数。 4.建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写两个函数,一个用于建立链表,另一个用来输出链表。 5.在上面的基础上,写一函数find,根据姓名查找一个结点,并输出该结点信息。 6.在上面的基础上,写一函数del,根据姓名(假定姓名不能重名)删除一个结点,并输出删除后的链表。 7.在上面的基础上,写一函数insert,插入一个结点,并输出插入后的链表。 对应答案:实验8 结构体、共用体与枚举类型1.分析 有5个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩,可建立结构体数组的数据结构如下。 struct student /*定义结构体*/ { long num; /*学号*/ char name[20]; /*姓名*/ char sex; /*性别*/

相关文档
最新文档