文档库 最新最全的文档下载
当前位置:文档库 › 实验八 结构体和共用体程序设计

实验八 结构体和共用体程序设计

实验八  结构体和共用体程序设计
实验八  结构体和共用体程序设计

实验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; // 输出该生序号

实验练习八 结构体编程

实验八结构体编程 实验目的 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);

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

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);

面向对象实验题及答案(全)

实验1 cin、cout及面向过程的编程实验2 引用与函数重载 实验3 类与对象 实验4 静态成员与对象参数 实验5 拷贝构造函数与内存分配 实验6 对象数组与子对象 实验7 含有数组成员的对象与深拷贝实验8 运算符重载(1) 实验9 运算符重载(2) 实验10 继承与派生 实验11 虚函数与类族 实验12 STL

实验1 cin 、cout 及面向过程的编程 1A :显示某个日期是星期几 (1) 输入、输出要求: 输入:3个正整数,依次为年、月、日,比如2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例: (2) 处理方法 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。即 7)%110)1(26244(-+? ?? ???++-??????+??????+=d m c c y y w 公式中的符号含义: w ——星期几 c ——年份的前两位 y ——年份的后两位 m ——月,3≤m ≤14,某年的1、2月视为上一年的13、14月,比如2003年1月1日要看作2002年的13月1日 d ——日 ??——代表取整,即只要整数部分 %——除法求余数 例如:对于2049年10月1日,计算过程如下: 5 7%547)%284051249(7)%1110)110(2620242044949(==+-++=-+??? ???++?-??????+??????+=w 即2049年10月1日是星期5。如果计算结果是负数,则加7。 1B :格式化输出实数 从键盘读取本金和年利率,求20年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2格、右对齐”的方式显示年,以“共10格、小数点后取2位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金973.45元、年利率2%的显示结果如下

实验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.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

实验九结构体

实验九结构体、共用体与枚举类型 实验时间:年月日 【实验目的】 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语言程序设计(第四版谭洪强)实验8答案

实验八 函 数(二) 参考答案 /*1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】*/ double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) {t=array[i][j]; array[i][j]=arrar[j][i]; array[j][i]=t ; } } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】I am a student! 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案1】 int fun( char s[])

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; };

实验十函数应用答案

实验十函数应用 一?实验目的 1.掌握函数的定义和调用; 2.理解形参和实参的使用和传值调用; 3.理解函数声明的使用; 4.掌握函数的嵌套调用; 5.了解函数的嵌套与递归调用,掌握递归函数的编写规律; 6.了解数组元素、数组名作函数参数。 二?实验学时数 2学时 三?实验步骤 (一)阅读程序 1.#include int fun (int x, int y, int z) { z=x * x + y * y; } main() { int a=38; fun(7,3,a); printf("%d",a); 2.#include void fun (int x,int y ); main() {int x=5,y=3; fun(x,y); printf("%d,%d\n",x,y); } void fun (int x,int y ) { x=x+y; y=x-y;

x=x-y; printf("%d,%d\n",x,y); 3.#include int f (int a); main() { int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0; for (i=0; f( s[i] ) ; i++) d+=s[i]; printf("%d\n",d); } int f(int a) { return a%2; } 4.#include long f( int g) { switch(g) { case 0:return 0; case 1: case 2: return 1; } return ( f(g-1)+ f(g-2)); } main ( ) { long int k; k = f(7); printf("\nk= %d\n",k); }

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; /*性别*/

《C语言程序设计》实验.设计.习题.答案 函数

实验5 函数 姓名:学号:实验日期: 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤: 实验内容:实验指导书中的实验八 实验步骤: 2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作: 1.在“菜单栏”中单击“组建”,然后在弹出的下划栏中选择“开始调试”,然后选择“Step Into”;或者按“F11”。 2.然后开始单步调试,按F10 提问 修改前运行结果画面: (1),请在下面粘贴运行结果画面: #include int a=3,b=5; max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a=8; printf("%d\n",max(a,b)); }

实参a是否为同一变量?不是 提问(2),请请在下面粘贴运行结果画面:#include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { extern int a,b; printf("%d\n",max(a,b)); } int a=3,b=5; 提问(3),观察结果有何变化? #include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a,b; printf("%d\n",max(a,b)); }

int a=3,b=5; 通过本题,可以得出什么结论?若没给未知量赋予初值,那未知量将被随意赋值,赋值一主函数的赋值为先。 2.2 实验内容部分第2题源程序代码,请贴图: 程序运行结果画面,请贴图: 2.3 实验内容部分第3题源程序代码,请贴图:

实验八参考答案

实验8 参考答案 二、实验内容与操作步骤 (二) 函数的使用 1、统计函数的使用 其中F3单元的公式为=SUM(B3:E3) ,G3单元的公式为=A VERAGE(B3:E3)。 2、条件函数的使用 ⑶其中F3单元使用的公式为: =IF(E3>=90,”A”,IF(E3>=80,”B”,IF(E3>=70,”C”,IF(E3>=60,”D”,”E”))))。 然后双击F3单元的填充柄。 ⑷具体的操作步骤及计算公式如下: (1)在区域H2:H4输入统计间距数据59.9,79.9,99.9; (2)选定作为统计结果数据的输出区域:I2:I5; (3)输入频度分析统计函数的公式:=FREQUENCY(E3:E62,H2:H4); (4)按[Ctrl]+[Shift]+[Enter] 3、文本函数的使用 ⑵其中B3单元使用的公式为 =IF(LEFT(A3,3)=”101”,”数学系”,IF(LEFT(A3,3)=”102”,”物理系”,”化学系”))。 ⑶其中F3单元使用的公式为 =MID(E3,7,4) 。 4、日期函数的使用 ⑵其中E3单元使用的公式为 =YEAR(TODAY())-YEAR(D3)+1 。 ⑶其中F3单元使用的公式为 =TODAY()-D3 。 5、财务函数的使用 ⑵其中B5单元使用的公式为 =PMT(B2/12,B3*12,B4)。 ⑶其中E5单元使用的公式为 =PMT(E2/12,E3*12,,E4)。 6、排位函数的使用 ⑵其中G2单元使用的公式为 =F2-$B$10 。 ⑶其中H2单元使用的公式为 =RANK(F2,$F$2:$F$8,1) 或 =RANK(G2,$G$2:$G$8,1) 。 三、思考与练习 1、具体的操作步骤及计算公式如下: (1) 在区域F10:F13输入统计间距数据99,199,299,399; (2) 选定作为统计结果数据的输出区域:G10:G14; (3) 输入频度分析统计函数的公式:=FREQUENCY(C3:C23,F10:F13); (4) 按[Ctrl]+[Shift]+[Enter] 2、操作步骤及计算公式:

实验8_结构体

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

【思考与扩展】

3.定义一个结构体变量(包括年、月、日)。计算某年某月某日是本年中第几天?注意闰年

附源程序清单: 1. #include void main() { struct student { long num; char name[20]; char classname[20]; float score[3]; float averagescore; }stu[5]; float average(float aver[3]); float h(float a[5]); int i,j; float high,hi[5]; for(i=0;i<5;i++) { printf("请输入第%d学生的信息:\n",i+1); scanf("%ld",&stu[i].num); scanf("%s",stu[i].name); scanf("%s",stu[i].classname); for(j=0;j<3;j++) scanf("%f",&stu[i].score[j]); } for(i=0;i<5;i++) { stu[i].averagescore=average(stu[i].score); hi[i]=stu[i].averagescore; } high=h(hi); printf("\n%-5s%-10s%-15s%-10s%-10s%-10s%-20s%\n","Num","Name","Classnam

e","Score1","Score2","Scoare3","Averagescore"); for(i=0;i<5;i++) printf("%-5ld%-10s%-15s%-10.3f%-10.3f%-10.3f%-20.3f%\n",stu[i].num,stu[i].name, stu[i].classname,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].averagescore); printf("平均分最高为:%.3f\n",high); } float average(float aver[3]) { float ave; ave=(aver[0]+aver[1]+aver[2])/3.0; return ave; } float h(float a[5]) { int i; float max; max=a[0]; for(i=0;i<5;i++) if(max void main() { struct worker { char name[20]; int year; int money; }wor[5]; int i; int a(int b); int allmoney[5]; for(i=0;i<5;i++) { printf("请输入第%d位职工的信息:\n",i+1); scanf("%s",wor[i].name); scanf("%d",&wor[i].year); scanf("%d",&wor[i].money); } for(i=0;i<5;i++) allmoney[i]=a(wor[i].year,wor[i].money);

实验八 参考答案

实验八 函 数(二) 参考答案 1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 1 2.0、34.0、4.0、2 3.0、3 4.0、4 5.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】 double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) t=array[i][j], array[i][j]=arrar[j][i], array[j][i]=t ; } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案】 int fun( char s[]) { int i,word=0,num=0;/*word 标志是否是单词,num 用来记录单词数*/ for(i=0;s[i]!=?\0?;i++)

实验项目10 结构体简单应用

实验项目10 结构体简单应用 ●实验目的 1.掌握结构体数据类型的基本概念。 2.掌握结构体类型变量的定义和使用方法。 3.掌握结构体类型数组与指针的关系及使用方法。 4.掌握结构体类型变量和数组作为函数参数的使用方法和技巧 5.掌握C语言中的存储分配函数使用方法。 6.理解链式存储结构与数组的区别。 7.掌握单链表中的建立、访问、插入和删除等最常见操作的C语言处理方法。 ●实验内容 1.程序填空 (1)下面程序的功能是统计每个候选人的选票和无效的选票,请填空完成程序。 #include #include struct candidate { char name[20]; int count; }; int main() { int i,n; char temp[20]; struct candidate list[]={{"Invalid",0},{"Li",0},{"Wang",0},{"Sun",0}}; printf("请输入参加投票的人数:"); scanf("%d",&n); while(n--) { printf("Enter the Name of Candidate:"); scanf("%s",temp); for(i=1;i<4;i++) if( ) { list[i].count++; ; } if(i==4) ; }; for (i=0; i<=3; i++) printf("%s:%d\n",list[i].name,list[i].count); return 0; }

(2)下面程序的功能是:从键盘上输入3个学生的姓名、英语成绩、数学成绩,然后计算每个学生的总成绩并输出,请填空完成程序。 #include #define Total 3 struct Student { char Name[20]; int English; int Math; int Sum; }Person[Total]; void Input(struct Student *p,int N) { int i; for (i=0; iSum=p->English+p->Math; for (i=0; i #include struct Complex { int r; int i; }; struct Complex Add(struct Complex x,struct Complex y) {

上海九峰实验学校八年级数学下册第四单元《一次函数》检测卷(包含答案解析)

一、选择题 1.甲、乙两车分别从A 地出发匀速行驶到B 地,在整个行驶过程中,甲、乙两车离开A 城的距离(km)y 与甲车行驶的时间(h)t 之间的关系如图所示,则下列结论中正确的个数为( ) ①,A B 两地相距480km ; ②乙车比甲车晚出发1小时,却比甲车早到1小时; ③乙车出发后4小时时追上甲车; ④甲,乙两车相距50km 时, 3.5t =或4.5. A .1 B .2 C .3 D .4 2.若正比例函数y =(m ﹣2)x 的图象经过点A(x 1,y 1)和点B(x 2,y 2),当x 1<x 2时,y 1>y 2,则m 的取值范围是( ) A .m >0 B .m <0 C .m >2 D .m <2 3.已知函数y kx b =+的图象如图所示,则函数y bx k =-的图象大致是( ) A . B . C . D . 4.如图,一次函数y kx b =+(,k b 为常数,且0k ≠)的图像经过点(3,2)-,则关于x 的不等式2kx b +<的解集为( ) A .3x >- B .3x <- C .2x > D .2x < 5.甲,乙两车分别从A , B 两地同时出发,相向而行.乙车出发2h 后休息,当两车相遇时,两车立即按原速度继续向目的地行驶.设甲车行驶的时间为x (h ), 甲,乙两车到B 地

的距离分别为y 1(km ), y 2(km ), y 1, y 2关于x 的函数图象如图.下列结论:①甲车的速度是 45a km /h ;②乙车休息了0.5h ;③两车相距a km 时,甲车行驶了5 3 h .正确的是( ) A .①② B .①③ C .②③ D .①②③ 6.如图,在平面直角坐标系中,点()2,A m 在第一象限,若点A 关于x 轴的对称点B 在直线1y x =-+上,则m 的值为( ) A .-1 B .1 C .2 D .3 7.科学家就蟋蟀鸣叫的次数与室外温度的数量关系做了如下记录: 蟋蟀每分钟鸣叫的次数 温度/°F 144 76 152 78 160 80 168 82 176 84 ) A .178 B .184 C .192 D .200 8.火车匀速通过隧道时,火车在隧道内的长度y (米)与火车行驶时间x (秒)之间的关

相关文档
相关文档 最新文档