实验8_结构体
中南大学C语言实验(指针、结构体)

实验七指针一、目的要求1.掌握指针的定义和使用指针变量;2.学会使用字符串的指针和指向数组的指针变量;3.学会使用指向函数的指针变量;4.按实验内容要求完成全程程序设计后才允许上机。
二、实验内容与步骤设计一个函数,它有三个形参(1)被查找的字符串str;(2)待查找的字符xCh;(3)在字符串str中xCh出现的位置i=0,1,…它的返回值是在str中xCh 出现的次数(若str中无xCh,则返回值=0)三、上机要求1、键入待查的字符xCh;2、键入被查的字符串str;3、调用该函数;4、打印它的返回值和出现的位置;5、允许重复执行,每次以清屏开始(用循环语句控制重复执行)。
四、提示xCh在str出现位置应设计为一整型指针,以便记下0~N个位置(整数)。
#include<stdio.h>void main(){char temp;int run(),j;int (*prun)();temp='Y';while(temp!='N'||temp!='n'){if(temp=='Y'||temp=='y'){prun=run;j=(*prun)();if (j==0){printf("Can Not Find The xCh! j=%d",j);}else{printf("\nj=%d",j);}printf("\nParden>Y/N:");fflush(stdin);temp=getch();}if(temp=='N'||temp=='n')break;if(temp!='Y'&&temp!='y'){printf("Wrong!Y ou can only put Y(N) or y(n)\nPlease put again(Y/N):");fflush(stdin);temp=getch();}}}int run (char xCh,char str[100],int i){int j;char *p;clrscr();printf("xCh=");xCh=getch();printf("%c\nstr=",xCh);gets(str);p=&str[0];i=0;j=0;while(*p){if (*p==xCh){j++;printf("xCh :%d\t",i);}p=p+1;i++;}return j;}Mian()版:#include<stdio.h>void main(){int i,j;char xCh,str[100],*p,temp;temp='Y';/*给temp赋初值Y,防止第一个while循环无法运行*/while(temp!='N'||temp!='n')/*如果temp不等于n或N时,进行循环*/{if(temp=='Y'||temp=='y')/*当temp为y或Y时,进行下列循环,用于进行题目要求的操作*/{clrscr();/*清屏*/printf("xCh=");/*在屏幕输出提示xCh=*/xCh=getch();/*从屏幕读取一个字符赋给xCh(getch()和getchar()的区别:前者只要输入一个字符就结束输入过程,后者需要按回车或空格后才结束输入过程)*/printf("%c\nstr=",xCh);/*在屏幕xCh=后面输出刚才输入的xCh的值,并提示用户输入str(因为我们用getch(),输入完字符后会自动结束xCh的输入进入下一指令的执行(在本题中,下一指令是:printf("%c\nstr=",xCh);),而不在屏幕输出刚才输入的字符)【不理解的话把该句改成{printf("\nstr=");}看看输出结果就知道了】*/gets(str);/*输入str*/p=&str[0];/*将指针地址指向str这个字符串的首字符位置*/i=0;j=0;while(*p)/*当p所指向的字符不为空字符时,进行判断循环*/{if (*p==xCh)/*当p所指向的字符为所需寻找的xCh时,进行以下操作*/{i++;/*i自加1,用于累计str中xCh的数目*/printf("xCh :%d\t",j);/*输出xCh在str中出现的位置*/}p=p+1;/*指针地址移向str的下个字符*/j++;/*j用于记录此时p的位置,在str中第一个字符时=0,第二个时=1,以此类推*/}if (i==0)/*当str中没有xCh这个字符时,i=0*/{printf("Can Not Find The xCh! i=%d",i);/*在屏幕中提示无法找到str中的xCh,并输出i=0*/}else{printf("\ni=%d",i);/*\n为换行*/}printf("\nParden>Y/N:");fflush(stdin);/*清空计算机缓存*/temp=getch();/*从屏幕中读取一个字符赋给temp*/}if(temp=='N'||temp=='n')/*当temp为N或n时*/break;/*跳出循环*/if(temp!='Y'&&temp!='y')/*当输入的temp不为Y、y、N、n时*/{printf("Wrong!Y ou can only put Y(N) or y(n)\nPlease put again(Y/N):"); fflush(stdin);temp=getch();}}}/*fflush(stdin)*/实验八结构体与共用体一、目的要求1、掌握结构体类型变量与数组的定义和使用;2、学会使用指针变量和结构体指针数组;3、按实验内容要求完成全程程序设计后才允许上机。
实验8结构体

实验8 结构体
实验要求:
1、掌握结构体类型方法以及结构体变量的定义和引用。
2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。
3、掌握运算符”.”和”->”的应用。
4、共用体的概念和应用。
实验内容:
1. 编写程序:定义一个职工结构体类型,定义职工结构体变量,从键盘输入一名职工信息,然后输出。
(假设职工信息包括:姓名、身份证号、工龄、工资)
2. 设计一个保存学生情况的结构体,学生情况包括姓名、学号、年龄。
输入5个学生的情况,输出学生的平均年龄和年龄最小的学生的情况
3. 使用结构体数组输入10本书的名称和单价,调用函数按照书名的字母顺序序进行排序,在主函数输出排序结果。
实验结构体实验报告

}
cout<<"姓名"<<'\t'<<"生日"<<'\t'<<"电话"<<endl;
for(i=0;i<n;i++)
{
cout<<a[i].name<<'\t'
<<a[i].bir.year<<"/"<<a[i].bir.month<<"/"<<a[i].bir.day<<"/"<<'\t'
<<a[i].tel<<endl;
{
i=1;
}
else
i=0;
for(j=0;j<p->month;j++)
{
n=n+b[i][j];
}
n=n+p->day;
return n;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型nian,包括年(整型)、月份(整型)、天(整型)
struct nian
{
int year;
int month;
cin>>a.month ;
cout<<"请输入第几日"<<endl;
cin>>a.day;
n=find(p);
cout<<"你输入的日期为"<<a.year <<"/"<<a.month<<"/"<<a.day<<endl;
C语言作业(实验报告

《程序设计基础》(c语言)实践报告专业: 计算机科学与技术班级: 信息大类1303姓名: 蒋国辉学号: 1130299090教师:《程序设计基础》(c语言)课程组教师寄语课程简介《程序设计基础》是计算机相关专业的专业基础课,其目的是为了培养学生程序设计的技能,使学生掌握程序设计的基本思想和方法,培养学生用计算机解决实际问题的能力。
该课程是后续理论和实践教学的基础和重要工具,将直接影响到专业兴趣的培养,后续专业课程教学内容的实施。
课程内容本课程教学的主要内容包括:1、程序与程序设计的基本概念;算法与算法的表示;结构化程序设计方法等。
2、C语言的基本组成,C程序的基本结构;C程序的上机过程;C语言的数据类型和各类运算规则。
3、顺序程序设计;选择结构程序设计;循环控制;函数;指针;结构体和文件等。
4、C程序的模块化结构;函数的定义与调用,包括函数的递归调用;变量存储属性;工程文件的建立和使用;编译预处理;库函数简介;文件的概念;文件的建立、打开与关闭;各种文件的读写方法。
补充说明1、本课程作为一种与计算机“沟通”的语言工具,在某种程度上讲,和普通话、英语有一些类似。
对初学者而言,最好的学习方式就是在基本的语法规则框架下,不断的模仿和重复训练,最畏惧和担心的就是灵活与多变。
只有不畏惧,才能敢模仿,敢写、敢调试。
才能避免掉入语法漩涡止步不前。
2、课程共设8个单元,对于每个单元的实践内容,按照基础训练和差异化训练相结合的思想,设置了多道编程题目,同学们在每个单元可以根据实际情况,可选做3道,鼓励在有精力的情况下尽可能多练习。
3、课程的源码可以手写也可以打印出来粘贴,对程序运行结果打印粘贴。
4、单元内容即是平时基本功的训练,也可当做理论考试的复习。
实验1 顺序结构程序设计一、实验目的1. 熟悉C语言的编程环境,掌握C程序运行的一般步骤;2. 掌握C语言中数据的输入输出方法,常用输入/输出函数的使用;3. 掌握顺序结构程序设计方法,能编写简单的C程序;二、实验内容1、编写程序,输入一个四位数,打印输出其个位数、十位数、百位数和千位数。
结构体实验

结构体实验
1.实验目的
a)掌握结构体类型变量的定义和使用
b)掌握结构体类型数组的概念和使用
c)掌握共用体的概念与使用。
d)掌握用typedef定义类型。
2.实验内容
1)某班有若干个学生(假设为10),每个学生的信息包括学号、姓名、三
门课的成绩,从键盘输入这些学生的信息,要求打印出三门课总平均成
绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均
分数)。
要求:
i.用input函数输入十个学生数据;
ii.用average函数求总平均分;
iii.用max函数找出最高分的学生数据;
iv.总平均分和最高分学生的数据都在主函数中输出。
2)某单位有n名职工参加计算机水平考试,设每个人的信息包括准考证号、
姓名、年龄、成绩。
单位规定30岁以下的职工必须进行考试,分数为百
分制,60分为及格;30岁以上的职工进行操作考试,成绩分为A、B、
C、D四个等级,C以上为及格,统计及格人数,并输出每位考生的成绩。
提示:n名职工组成结构体类型数组定义如下:
struct
{
char name[20];
long num;
int age;
union
{
float score;
char grade;
}result;
}employee[N];。
淮阴工学院c++实验报告实验八结构和链表

实验八结构体与链表一、实验目的和要求1.掌握结构体类型、结构体变量的基本概念;2.掌握结构体指针、结构体数组的应用;3.掌握链表的基本概念;4.掌握链表的基本操作与应用,包括建立链表、遍历链表、插入结点、删除结点、查找结点等。
二、相关知识点1.结构体类型:定义:struct 结构类型名{数据类型数据项1;数据类型数据项2;…………………….数据类型数据项n;}2.结构体变量:1.定义:(1)间接定义法──先定义结构类型、再定义结构变量struct 结构类型名结构变量;(2)直接定义法──在定义结构类型的同时定义结构变量struct 结构类型名{………}结构变量表;2.结构变量的初始化与引用:(1)如:struct std_info student={"000102","张三","男",{1980,9,20}};(2)结构变量的引用规则,对于结构变量,要通过成员运算符“.”,逐个访问其成员即结构变量.成员3.结构体指针:(1)使用指向结构变量的指针来访问结构变量的各个成员。
struct std_info *p_std=&student(2)使用指向结构数组的指针来访问结构数组struct std_info *p_std=student;4.结构体数组结构数组的每一个元素,都是结构类型数据,均包含结构类型的所有成员。
struct std_info student[3]={{“000102”, “张三”,“男”,{1980,9,20}},{“000105”,“李四”,“男”,{1980,8,15}},{“000112”, “王五”,“女”,{1980,3,10}}};5.链表的基本操作与应用:(1)建立链表:创建静态链表,创建动态链表(2)访问链表(3)插入结点(4)删除结点(5)查找结点(6)链表的释放。
三、实验内容1.定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。
《程序设计础—C程序实验》

思考题:编程,输出以下图形:
*
***
*****
*******
*********
*******
*****
***
*
实验7数组
一、实验目的
1.理解数组的概念,掌握一维数组和二维数组的定义、存储结构、赋值和输入输出的方法。
2.理解字符串的概念,掌握字符数组和字符串函数的使用。
/*ex1.c*/
#include <stdio.h>
main()
{
printf("Hello!\n");
printf("This is C program!\n");
}
试编译、连接、运行该程序,并按Alt+F5查看运行结果。
运行结果是:
2.输入并调试运行以下程序,查看运行结果(由此结果可以了解到在实验用的微型机上,几种数据类型所占的字节数)。
for(i=1;i<5;i++)
{if(i%2)printf("*");elsecontinue;
printf("%");
}
printf("@");
}运行结果是:
2.编程,用公式π/4≈1- + - +…求π的近似值,当某项绝对值小于 时计算结束。
3.输入一行字符,编程统计并输出其中的大写英文字母和数字的个数。
4.详细记录数据的输入、输出信息,按要求写出实验报告。
三、实验内容
1.输入并调试以下程序:
(1)#include<stdio.h>
main()
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.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。
c语言程序设计实验指导答案

太原理工大学现代科技学院C语言程序设计课程实验报告专业班级学号姓名指导教师焦雄5.#include <stdio.h> void main(){int a=10,n=5;a+=a;printf("%d\n",a);a=10,a-=2;printf("%d\n",a);a=10,a*=2+3;printf("%d\n",a);a=10,a/=a+a;printf("%d\n",a);a=10,a%=(n%=2);printf("%d\n",a);a=10,a+=a-=a*=a;printf("%d\n",a); }遇到的问题和解决方法心得体会实验三简单程序、分支程序和循环程序设计实验名称实验目的和要求1.理解C语言程序的基本结构和实现基本结构的语句;2.熟练应用赋值、输入和输出语句;3.理解并掌握关系运算符、逻辑运算符及其表达式的使用;4.熟练掌握if语句、switch语句、while语句、do—while语句和for语句的用法;实验内容1.输入并运行第3章例3-3、例3-6中的程序,通过输出结果理解对应的格式说明。
2.输入并运行第3章例3-8、例3-10中的程序,注意输入数据的格式。
3.已知圆柱半径r=1.5,圆柱高h=3,编程求圆周长,圆面积和圆柱体积。
4.输入一百分制成绩,输出成绩等级A、B、C、D、E。
90分以上为A,80~89为B,70~79分为C,60~69分为D,60分以下为E。
要求程序能处理错误的输入数据。
5.利用公式:π/4=1-1/3+1/5-1/7+……,求π的近似值,直到最后一项的绝对值小于10-6为止。
(fabs(t)表示t的绝对值,1e-6=1*10-6)。
6.求100-200间所有素数。
7.输出三角形的九九乘法口诀表。
8.打印水仙花数。
水仙花数是指一个3位数,其各位数字立方和等于该数本身。
C语言程序设计—结构体—实验报告

实验报告专业软件工程班级X 班学号_ XXXXXXXXX_ 姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称结构体一、实验目的二、实验环境(描述实验的软件、硬件环境)①软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;②硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:#include <stdio.h>#include <stdlib.h>struct Stu{int num;char name[20];char sex;int age;float score[3];};void fun(struct Stu *stu, int i){float sum = stu->score[0] + stu->score[1] + stu->score[2], aeg = sum / 3.0;printf("\n第%d位学生的基本信息如下:\n\n", i);printf("学号:(%d)\t姓名:(%s)\t性别:(%c)\t年龄:(%d)\n\n", stu->num, stu->name, stu->sex, stu->age);printf("三科成绩:(%.2f,%.2f,%.2f)\n\n", stu->score[0], stu->score[1], stu->score[2]);printf("总成绩:(%.2f) 平均成绩:(%.2f)\n", sum, aeg);printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); }int main(){int i, n;printf("The number of students is:");scanf("%d", &n);struct Stu *stu = (struct Stu *)calloc(n, sizeof(struct Stu));for (i = 0; i<n; i++){printf("请输入第%d位学生的基本信息:\n", i + 1);printf("学号:");scanf("%d", &(stu + i)->num);printf("姓名:");scanf("%s", (stu + i)->name);printf("性别:");scanf(" %c", &(stu + i)->sex);printf("年龄:");scanf("%d", &(stu + i)->age);printf("三科成绩:");scanf("%f%f%f", &(stu + i)->score[0], &(stu + i)->score[1], &(stu + i)->score[2]);putchar('\n');}printf("===================================================================\n");for (i = 0; i<n; i++){fun(stu + i, i + 1);}return 0;}题目二:计算每一个结构体的两个变量所表示的长度之和(单位:厘米)(1)分别定义公制METRIC(成员包括:米、厘米)和英制BRITISH(成员包括:英尺、英寸)两个结构体;(2)为每一个结构定义两个变量。
结构体实验报告

C语言程序设计实验报告实验七结构体程序设计班级学号姓名一、实验目的(1)掌握结构体类型的概念、定义和使用;(2)掌握结构体数组、结构体指针的定义和使用;二、实验内容1、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。
程序代码:#include <stdio.h>#include <stdlib.h>#define STU_NUM 5struct student{char stu_id[20];char name[20];float score[2];float total;float aver;};void SortScore(student *stu,int n){student stud;for(int i = 0; i < n-1; i++)for(int j = i+1 ; j < n; j++){if(stu[i].total < stu[j].total){stud = stu[i];stu[i] = stu[j];stu[j] = stud;}}}int main( ){student stu[STU_NUM];for(int i = 0; i<STU_NUM; i++){printf("请输入第%d个学生的学号:",i+1);scanf("%s",&stu[i].stu_id);printf("请输入第%d个学生的姓名:",i+1);scanf("%s",&stu[i].name);printf("输入第%d个学生的数学成绩:",i+1);scanf("%f",&stu[i].score[0]);printf("输入第%d个学生的计算机成绩:",i+1);scanf("%f",&stu[i].score[1]);stu[i].total = stu[i].score[0]+stu[i].score[1]; stu[i].aver = stu[i].total/2;}printf("\n");SortScore(stu,STU_NUM);for(i = 0 ; i < STU_NUM; i++){printf("学号:%s\t",stu[i].stu_id);printf("姓名:%s\t",stu[i].name);printf("数学:%f\t",stu[i].score[0]);printf("计算机:%f\t",stu[i].score[2]);printf("平均成绩:%f\t",stu[i].aver);printf("总分:%f\t",stu[i].total);printf("\n\n");}return 0;}运行结果:2.定义一个结构体变量(包括年、月、日)。
C语言程序设计实验结构体与共用体

实验8:结构体与共用体一、实验目的1.掌握结构体类型变量的定义和使用;2.掌握共用体的概念与使用。
二、实验内容编写程序,实现如下功能:1.定义结构体变量,用它表示考生的学号、姓名(用英文表示)以及语文、数学、外语成绩。
输入两个考生的信息和各门课成绩并比较(按总分进行高低排序;当总分相同时,依次按语、数、外的顺序排序)。
2.设有一个教师与学生通用的表格,数据项包括:姓名、年龄、职业和单位,其中“职业”一项可分为“教师”和“学生”两类;对“单位”一项,教师填入“系部名称”(用字符类型表示),学生填入“班级编号”(用整型量表示)。
编程输入人员数据,再以表格输出。
三、实验结果记录第1题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.总分不同2.总分相同的情况2.1总分完全相同2.2总分相同但语文成绩不同2.3总分相同、语文成绩相同但数学成绩不同第2题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.正确输入2.错误输入四、实验小结:经过此次实验,我熟悉掌握了结构体的定义和使用,同时也掌握了共用体的使用。
对于程序1,基本思路是通过结构体定义变量,采用if-else语句嵌套,当总分相同且语文数学成绩均相同时就不必再进行一轮的if语句判断,因为此时两考生的英语成绩一定相同。
对于程序2,在结构体中定义了共用体,可对不同职业进行不同单位的划分。
基本思路是用malloc函数进行动态内存分配,确定要输入的样本数量,再进行数据的输入,在单位数据的输入时需要判断输入对象是学生还是老师,此时要用strcmp函数进行比较判断,输入结束后打印表格,用转义字符\t让表格更加美观,最后通过free进行内存释放。
C语言程序设计》实验指导书

《计算机基础与程序设计》实验指导书实验教学目标:本课程实验教学的目标在于使学生能够掌握算法的基本概念,并根据算法编制程序,掌握调试程序的基本技巧,初步了解软件开发所要经历的阶段,为学生从事计算机软件开发和数据处理工作打下坚实的基础。
实验教学要求:要求掌握数据类型的定义和使用;三种结构的程序设计;数组;函数;指针;结构体与共用体;文件操作等。
实验(一)C语言的编程环境(TURBOC 2.O)一、目的和要求1、熟悉C语言运行环境。
2、掌握C语言程序的书写格式和C语言程序的结构。
3、掌握C语言上机步骤,了解运行一个C程序的方法。
4、本实验可在学习完教材第一章后进行。
二、实验内容1. 启动Turbo C如果用户计算机系统已经安装了Turbo C编译系统,则在DOS命令状态下键入命令tc。
进入Turbo C集成环境后,首先在屏幕上显示Turbo C主菜单窗口,如下图所示。
可以看出,在该窗口,有8个菜单条目。
每一个菜单的意义如下:File 处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS 。
Edit 建立、编辑源文件。
Run 控制运行程序。
如果程序已经编译连接好,且Debug/Source Debugging以及Option/Compiler/Code generation/OBJ Debug Information开关置为On,则可以用此菜单初始化调试阶段。
Compile 编译并生成目标程序与可执行文件。
Project 允许说明程序中包含哪些文件的管理条目。
Options 可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录Include Output及Library文件目录,保存编译任选项和从配置文件加载任选。
Debug 检查、改变变量的值,查找函数,程序运行时查看调用栈。
选择程序编译时是否在执行行代码中插入调试信息。
2014《C语言实验指导书》

《C语言》实验指导书编(全校理工类本科用)2014年2月目录实验一简单C语言程序设计 (1)实验二顺序结构程序设计 (3)实验三选择结构程序设计 (5)实验四循环结构程序设计 (7)实验五数组程序设计 (10)实验六函数程序设计 (13)实验七指针程序设计 (16)实验八结构体程序设计 (17)附录1 C语言上机步骤 (18)实验一简单C语言程序设计实验类型:验证性实验课时: 4 指导教师:时间:2014 年月日课次:第节教学周次:第周实验分室:实验台号:实验员:一、实验目的1.掌握所用的C语言环境的基本操作方法。
2.掌握编辑、编译、连接和运行C程序。
3.掌握C程序的数据类型、运算符,表达式。
二、实验内容和要求1.打开C语言环境,编辑如下程序,写出运行结果。
#include <stdio.h>void main(){printf(“Hello World!\n”);}2. 在屏幕上显示下列图形:* * * ** * ** **3.完成习题集中习题一的内容4. 已知三角形的三边长为3,4,5,求三角形周长5 .完成习题集中习题二内容实验二顺序结构程序设计实验类型:验证性实验课时: 2 指导教师:时间:2014 年月日课次:第节教学周次:第周实验分室:实验台号:实验员:一、实验目的1.掌握基本输入输出函数、库函数的使用。
2.能够编程实现简单的结构化程序。
二、实验内容和要求1.执行程序,写出运行结果。
#include <stdio.h>void main(){float a = 9.1234567891234567890;double b = 9.1234567891234567890;printf("%f, %lf\n",a,b);printf("%.15f,%.15\n",a,b);};2.运行程序,写出结果。
#include <stdio.h>void main(){float x1;double y1 ;scanf("%f %lf ",&x1,&y1) ;printf("x1=%f,y1=%lf ",x1,y1) ;}程序运行时输入x的值123456789,输入y的值123456789。
EDA技术与实验考题附答案

填空题1.VHDL与1985年正式推出,是目前标准化成都最高的硬件描述语言.2.IEEE于1987年将VHDL采纳为ieee#1076 标准.3.用VHDL书写的源文件,既是程序又是文档,既是工程技术人员之间交换信息的文件,又可作为合同签约者之间的文件.4.一般将一个完整VHDL程序称为设计实体.5.用VHDL设计的电路,既可以被高层次的系统调用,成为系统的一部分,也可以作为一个电路的功能块独立存在和独立运行.6.VHDL设计实体的基本结构由库、程序包、实体、结构体、配置、等部分构成.7.实体和结构体是设计实体的基本组成,它们可以构成最基本的VHDL程序.8.IEEE于1987年公布了VHDL的ieee#1076 -1987 语法标准.9.IEEE于1993年公布了VHDL的ieee#1076 -1993 语法标准.10.根据VHDL语法规则,在VHDL程序中使用的文字、数据对象、数据类型都需要预先定义.11.在VHDL中最常用的库是ieee. 标准库,最常用的程序包是std_logic_1146 程序包.12.VHDL的实体由实体声明部分和结构体组成.13.VHDL的实体声明部分指定了设计单元的输入、输出端口或引脚,它是设计实体对外的一个通信界面,是外界可以看到的部分.14.VHDL结构体用来描述设计实体的逻辑结构和逻辑功能,它由VHDL语句构成,是外界看不见的部分.15.在VHDL的端口声明语句中,端口方向包括in 、out 、inout 和Buffer(具有读功能的输出) .16.VHDL的数字型文字包括整数文字、实数文字、以数字基数表示的文字、物理量文字.1.17.VHDL的字符是以单引号括起来的数字、字母、符号.18.VHDL的标识符名必须以字母开头,后跟若干字母、数字或单个下划线构成,但最后不能为下划线.19.VHDL的数据对象包括变量、常量、信号,它们是用来存放各种类型数据的容器.20.VHDL的变量(V ARIABLE)是一个局部量,只能在进程、函数和过程中声明和使用.21.VHDL的信号(SIGNAL)是一种数值容器,不仅可以容纳当前值,也可以保持历史值.22.常数(CONSTANT)是程序中的一个恒定不变的值,一般在程序前段声明.23.VHDL的数据类型包括标量型、复合型、存取类型、文件型.24.VHDL的标量型(Scalar Type)是单元素的最基本数据类型,包括整数型、实数型、枚举型、时间型.25.在VHDL中,标准逻辑位数据有九种逻辑值.26.VHDL的操作符包括逻辑操作符(Logic Operator)、关系操作符(Relation Operator)、算术操作符(Arithmetic Operator)、符号操作符(Sign Operator)四类.27.在VHDL中,预定义的属性标识符可用于检出时钟边沿、完成定时检查、获得未约束的数据类型范围等.28.VHDL的基本描述语句包括并行语句、顺序语句.29.VHDL的顺序语句只能出现在进程、过程、函数中,是按程序书写的顺序自上而下、一条一条地执行.30.VHDL的并行语句在结构体中的执行是并行语句的,其执行方式与语句书写的顺序无关.31.在VHDL的各种并行语句间,可以用信号来交换信息.32.VHDL的PROCESS(进程)语句是由顺序语句组成的,但其本身却是并行语句.33.VHDL的并行信号赋值语句的赋值目标必须都是信号.34.VHDL的子程序有过程、函数两种类型.35.VHDL的过程分为过程首和过程体两部分,调用前需要将它们装入程序包中.36.VHDL的函数分为函数首、函数体两部分,调用前需要将它们装入程序包(Package)中.37.元件例化是将预先设计好的设计实体作为一个元件,连接到当前设计实体中一个指定的端口.38.在PC上或工作站利用VHDL进行项目设计,不允许在根目录下进行,必须在根目录下为设计建立一个工程目录(即文件夹).39.程序包是用VHDL语言编写的,其源程序也需要以。
C语言结构体实验报告

《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体int i;for(i = 0; i<= number; i++){Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0}}③求平均分最高的学生int averagescore(student stu[], int number){int k = 0;//查找最高平均分并记录在数组中的下标值for( int i = 0; i<= number; i++){………}return k; //返回最高平均分数组元素的下标}【测试数据】自己设计一组测试数据。
运行结果截图:【思考与扩展】如果这样定义结构体typedef struct Student{int num;//学号char name[20];//姓名注意字节长度char classname[20];//班级float score[3];//三门课程成绩float aver_score; //平均分} STU,* pSTU;说明如下三条语句的含义:student stu1;STU stu2;pSTU pstu;2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。
运行结果截图3.定义一个结构体变量(包括年、月、日)。
计算某年某月某日是本年中第几天?注意闰年问题。
运行结果截图:四、分析与讨论对上机实践结果进行分析,上机的心得体会。
成绩五、教师评语签名:日期:附源程序清单:1. #include<stdio.h>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 <stdio.h>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);};void main( ){int i;input();printf("初始化5名职工的信息:\n");for(i=1;i<=5;i++)printf("%s %d %f \n",work[i].name,work[i].workyear,work[i].salary);for(i=1;i<=5;i++)if(work[i].workyear>30) work[i].salary+=100;printf("最后5名职工的信息工:\n");for(i=1;i<=5;i++)printf("%s %d %f \n",work[i].name,work[i].workyear,work[i].salary);}3.#include <stdio.h>struct years{int year;int month;int date;}ye;int data[12]={31,28,31,30,31,30,31,31,30,31,30,31};void main( ){ int i,sum=0;int leap=0;printf("请输入改天的年月日:\n");scanf("%d %d %d",&ye.year,&ye.month,&ye.date);if(((ye.year%4)==0)&&((ye.year%100)!=0)) leap=1;if(((ye.year%4)==0)&&((ye.year%400)==0)) leap=1;if(leap=1) data[1]=29;for(i=0;i<(ye.month-1);i++){sum+=data[i];}sum+=ye.date;printf("\nit is the %d day.\n",sum); }。
《C程序设计》实验教案[共五篇][修改版]
![《C程序设计》实验教案[共五篇][修改版]](https://img.taocdn.com/s3/m/432eef951ed9ad51f11df209.png)
第一篇:《C程序设计》实验教案《C程序设计》实验教案一、实验的目的与任务:《C程序设计》是一门实践性很强的课程。
通过实验使学生加深对课堂讲授的概念、语法、算法、编程技术的理解;熟悉C程序设计的开发环境;掌握程序设计和调试的基本技能。
并通过实践激发学生进一步学习的积极性,培养学生的学习兴趣和创新思维。
通过8个实验,使学生经过一定数量的上机训练,了解和掌握C程序设计的环境、程序的数据表示、程序的执行流程控制、程序的整体结构等C程序设计的基本概念和应用技术。
二、实验项目与要求实验一:C程序的运行环境和运行一个C程序的方法(2学时)实验性质:验证性实验一、实验目的1.了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2.了解在该系统上如何编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序,初步了解C源程序的特点。
二、实验内容1.调用编辑程序,输入教材第一章习题1.1程序,并进行编译和运行。
应了解所用的系统是用什么命令进行编译和连接运行的。
编译和连接后所得到的目标程序的后缀是什么形式的?2.输入并运行教材第一章中习题1.4。
3.输入并运行教材第一章中习题1.9,了解如何在运行时向程序变量输入数据。
实验二数据类型、运算符和表达式(2学时)实验性质:验证性实验一、实验目的1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。
2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)1 和自减(--)运算符的使用。
3.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二、实验内容1.输入并运行教材第三章例3.6.即:#include void main(){char c1,c2;c1=97;c2=98;printf(“%c %c\n”,c1,c2);printf(“%d %d\n”,c1,c2);} 在此基础上①将第二行改为:int c1,c2; 再使之运行,分析结果。
实验报告结构体【精选】

实验报告第 1 页专业__软件工程__ 班级软工1班学号_1230120130xx _ 姓名xx实验日期:2013年11 月1 日报告退发(订正、重做)课程c语言实验设计实验名称结构体一、实验目的(1)掌握一维数组的基本操作;(2)掌握二维数组的基本操作;二、实验环境(描述实验的软件、硬件环境)安装有Microsoft VC++6.0的PC机三、实验内容、步骤和结果分析(列出实验内容,阐明实验步骤及中间的结果或现象、最终结果和现象,对这些结果和现象进行分析,若出现误差也予以分析误差原因)题目一、有n个学生,每个学生的数据包括学号(num)、姓名(name)、性别(sex)、年龄(age)、三门课的成绩(score[3])。
要求从键盘上输入这n个学生的数据,然后调用一个函数来计算每个学生的总分和平均分然后打印所有数据。
(1)源码#include "stdafx.h"#include<stdio.h>#include<string.h>#include<stdlib.h>struct student{long int num;char name[20];char sex;int age;float score[3];};float sum(struct student a){float s=0;int i;for(i=0;i<3;i++)s = s+ a.score[i];return s;}float aver(struct student a){return sum(a)/3;}int main(){int i,j,n;printf("请分配内存空间n = ");scanf("%d",&n);struct student *a=(struct student *)malloc(n*sizeof(student));for(i=0;;i++){printf("请输入第%d位学生的基本信息:(学号=0结束输入)\n",i+1);printf("学号:");scanf("%d",&a[i].num);if(a[i].num==0)break;fflush(stdin);printf("姓名:");gets(a[i].name);printf("性别:");scanf("%c",&a[i].sex);printf("年龄:");scanf("%d",&a[i].age);printf("三科成绩:");scanf("%f%f%f",&a[i].score[0],&a[i].score[1],&a[i].score[2]);printf("\n");}printf("===============================================================\n") ;for(j=0;j<i;j++){printf("学号:<%d>\t姓名<%s>\t性别<%c>\t年龄<%d>\n",a[j].num,a[j].name,a[j].sex,a[j].age);printf("三科成绩:<%.2f, %.2f, %.2f>\n",a[j].score[0],a[j].score[j],a[j].score[2]);printf("总成绩<%.2f> 平均成绩<%.2f>\n",aver(a[j]),sum(a[j]));printf("***************************************************************\n");}free(a);return 0;}(2)运行结果截图题目二、分别定义公制METRIC(成员包括:米、厘米)和英制BRITISH(成员包括:英尺、英寸)两个结构体。
实验8 结构体数据的使用

实验8 结构体数据的使用(实验学时:2学时)一、目的和要求1、掌握结构体类型与结构体变量的定义2、掌握结构体变量的引用与初始化3、掌握结构体数组的应用二、实验内容1. 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求:1) 使用input函数输入5个学生的数据:学号、姓名、3门课的成绩;2) 使用average函数求每个学生的平均成绩和所有学生的总平均成绩;3) 使用max函数找出平均分最高的学生数据;4) 使用output函数输出全体学生的数据:学号、姓名、3门课的成绩、平均成绩;总平均分以及平均分最高的学生的数据:学号、姓名、3门课的成绩、平均分数。
阅读并调试运行程序:#include<stdio.h>#define max 5 /*设定要输入成绩的学生个数*/double zpj; /*总平均值*/struct student /*结构体*/{ int num; char name[10];int score1; int score2; int score3;double pj;};struct student stu[max],temp;void Input() /*输入函数*/{ int i; for(i=0;i<max;i++){printf("enter number");scanf("%d",&stu[i].num);printf("enter name");scanf("%s",&stu[i].name);printf("enter score1");scanf("%d",&stu[i].score1);printf("enter score2");scanf("%d",&stu[i].score2);printf("enter score3");scanf("%d",&stu[i].score3);} }average() /*求平均值函数*/{int i;for(i=0;i<5;i++){stu[i].pj=stu[i].score1+stu[i].score1+stu[i].score3; zpj+=stu[i].pj; }for(i=0;i<5;i++)stu[i].pj/=3;zpj/=max;}MAX() /*找出最高平均值的学生的函数*/{int i,j; temp=stu[0];for(i=0;i<max-1;i++)for(j=i+1;j<max;j++)if(stu[i].pj<stu[j].pj) temp=stu[j]; }output() /*输出函数*/{int i;for(i=0;i<max;i++)printf("num=%d\n name=%s\n score1=%d\n score2=%d\n score3=%d\n aver=%f\n", stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].pj);printf("总平均分=%f\n\n",zpj); printf("平均分最高的学生\nnum=%d\n name=%s\n score1=%d\n score2=%d\n score3=%d\n aver=%f\n", temp.num,,temp.score1,temp.score2,temp.score3,temp.pj);}void main() /*主函数*/{ Input();average();MAX();output();}2、结构体编程练习在屏幕上模拟显示一个数字式时钟按如下方法定义一个时钟结构体类型:struct clock{ int hour;int minute;int second;};typedef struct clock CLOCK;然后,将下列用全局变量编写的时钟模拟显示程序改成用CLOCK结构体变量类型重新编写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言程序设计》实验报告实验序号:8 实验项目名称:结构体
int i;
for(i = 0; i<= number; i++)
{
Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0
}
}
③求平均分最高的学生
int averagescore(student stu[], int number)
{
int k = 0;
//查找最高平均分并记录在数组中的下标值
for( int i = 0; i<= number; i++)
{
………
}
return k; //返回最高平均分数组元素的下标
}
【测试数据】
自己设计一组测试数据。
运行结果截图:
【思考与扩展】
如果这样定义结构体
typedef struct Student
{
int num;//学号
char name[20];//姓名注意字节长度
char classname[20];//班级
float score[3];//三门课程成绩
float aver_score; //平均分
} STU,* pSTU;
说明如下三条语句的含义:
student stu1;
STU stu2;
pSTU pstu;
2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。
运行结果截图:
3.定义一个结构体变量(包括年、月、日)。
计算某年某月某日是本年中第几天?注意闰年问题。
运行结果截图:
附源程序清单:
1.
#include<stdio.h>
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<a[i+1]) max=a[i+1];
return max;
}
2.
#include<stdio.h>
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);
printf("%-20s%-10s%-10s%-10s\n","Name","Year","Money","Allmoney");
for(i=0;i<5;i++)
printf("%-20s%-10d%-10d%-10d\n",wor[i].name,wor[i].year,wor[i].money,allmoney[i]); }
int a(int b,int c)
{
int d;
if(b>=30)
{
d=c+100;
return d;
}
else return c;
}
3.
#include<stdio.h>
void main()
{
struct date
{
int year;
int month;
int day;
}date;
int a(int b);
int sum,i;
printf("请输入年月日:\n");
scanf("%d%d%d",&date.year,&date.month,&date.day);
switch(date.month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");
}
i=a(date.year);
sum=sum+date.day+i;
printf("该天为该年第%d天\n2",sum);
}
int a(int b)
{
int c;
if(b%4==0&&b%100!=0||b%400==0) return c=1;
else return c=0;
}。