C语言程序设计实验报告(结构体和共用体)
C语言程序设计方案实验报告实验七结构体和联合体程序设计方案
实验七、结构体程序设计一、实验目的1.掌握结构体类型变量和数组、共用体类型变量和数组以及枚举类型变量的定义和使用。
2.掌握链表的基本,初步学会对链表进行操作。
3.通过编程和调试程序,加深对结构体和共用体概念的理解。
4.实验前复习结构体类型、共用体类型和枚举类型的概念。
二、实验内容及步骤:1、编程利用结构体实现输入若干学生的学号、姓名和成绩,求平均分以及高于平均分的同学。
要求:1) 求平均分的过程由函数实现。
2)打印格式为:学生学号姓名成绩,且其过程由函数实现。
程序代码:#include<stdio.h>#include<malloc.h>typedef struct student{int num;char name[20];int score;struct student *next;}ST,*STU;STU createlink(int n){ int i;STU p,q,head;if(n<=0)return(NULL);head=(STU)malloc(sizeof(ST));printf("input datas:\n");scanf("%d %s %d",&head->num,head->name,&head->score);p=head;for(i=1;i<n;i++){q=(STU)malloc(sizeof(ST));scanf("%d %s %d",&q->num,q->name,&q->score);p->next=q;p=q;}p->next=NULL;1return (head);}void list(STU head){STU p=head;int i=0;double sum=0;for(;p!=NULL;p=p->next){sum=sum+(double)(p->score);i++;}p=head;while(p!=NULL){ if((double)(p->score)>(sum/i))printf("高于平均的学生为:%d %s %d\n",p->num,p->name,p->score);p=p->next;}}double average(STU head){int i=0;double sum=0;for(;head!=NULL;head=head->next){sum=sum+(double)(head->score);i++;}return (sum/i);}void main(){ STU h;int n;double ave;printf("input number of node:");scanf("%d",&n);h=createlink(n);ave=average(h);printf("平均成绩为:%lf\n",ave);list(h);}对程序进行测试,并观察运行结果。
c语言实验报告16共用体和枚举
《C程序设计》课程实验报告学院:班级:姓名:学号:实验设备:计算机1台实验日期:2011年3月1日实验项目名称共用体和枚举实验目的掌握共用体类型、共用体类型变量的定义,以及共用体类型变量成员的使用。
掌握枚举类型、枚举类型变量的定义,以及枚举类型变量的使用。
实验要求:掌握共用体类型、共用体类型变量的定义,以及共用体类型变量成员的使用。
掌握枚举类型、枚举类型变量的定义,以及枚举类型变量的使用。
实验内容(包括步骤):1.设某公司对所有职工进行计算机能力考核,规定35岁以下的职工进行笔试,成绩记录为百分制,60分以下为不及格;35岁(含35岁)以上的职工进行上机考核,成绩记录为a、b、c(规定为小写字母三种),c为不及格。
编写程序,输入10个职工的考核结果,输入及格编号、姓名和成绩。
要求:用结构体和共用体类型数据来处理职工数据。
2.输入两个整型数,一次求出它们的和、差、积并输出。
要求:用枚举类型数据来处理和、差、积的判断。
调试与结果测试:正常。
代码注释:16-1#include<stdio.h>struct{ int num;char name[10];char year;union{int score;char result;}category;}person[10];int main(){int i;for(i=0;i<10;i++){scanf("%d %s %c",&person[i].num,person[i].name,&person[i].year);if(person[i].year=='d')scanf("%d",&person[i].category.score);else if(person[i].year=='x')scanf("%c",&person[i].category.result);else printf("Input error!");}for(i=0;i<10;i++){if(person[i].year=='d')if(person[i].category.score<60)printf("%d %s %d\n",person[i].num,person[i].name,person[i].category.sc ore);if(person[i].year=='x')if(person[i].category.result=='c')printf("%d %s %c\n",person[i].num,person[i].name,person[i].category.re sult);}return 0;}16-2#include<stdio.h>int main(){int a,b;enum C{s,i,j};int n;scanf("%d%d",&a,&b);for(n=s;n<=j;n++){ switch(n){case s:printf("和为%d\n",a+b);break;case i:printf("差为%d\n",a-b);break;case j:printf("积为%d\n",a*b);break;default:break;}}return 0;}――――――――――――以下内容为教师填写―――――――――――――――教师评阅:成绩:良2011年月日。
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 语言项目。
实验 结构体与共用体_C语言程序设计实用实践教程_[共3页]
C 语言程序设计实用实践教程
三、本章常见错误小结
(1)定义结构体类型或共用体类型时,忘记在最后的花括号}后面加分号。 (2)将一种类型的结构体变量对另一种类型的结构体变量进行赋值。 (3)对两个结构体或共用体进行比较。 (4)将结构体指向运算符的两个组成-和>之间插入空格或写成→。 (5)直接使用结构体的成员变量名访问结构体成员。 (6)使用指向运算符访问结构体变量的成员。
{ int x; int y;
} cnum[2]={1,3,2,7}; printf("% d\n",cnum[0].X*cunm[1].x); }
(2)分析程序的运行结果,掌握“->”和“*”运算符的优先级及++在前在后的含义。
#include<stdio.h> struct x { int a;
四、实验环节
实验 结构体与共用体
168
【实验目的和要求】 1.掌握结构体类型、结构体变量、结构体数组和结构体指针的定义与使用。 2.理解共用体的结构特征,掌握其定义和使用方法。 3.了解枚举类型和自定义类型。 【实验内容】 1. 分析题
(1)分析程序,写出程序的运行结果。
#include<stdio.h> main(r *b; }*p; char y0[]="Li",y1[]="Wang"; struct x xw[]={{1,y0},{4,y1}}; main() { p=xw;
printf("%c",++*p->b); printf("%d",(*p).a); printf("%d",++p->a); printf("%d",(++p)->a); printf("%c\n",*(p++)->b); }
第八章结构体、共用体与枚举实验报告
{ union{unsigned int t;
unsigned char c;
}u;
u.c='a';
printf("%c\n",u.t); getch();
}
结论:一个共用体中可能有若干个不同类型的成员,但在任何时刻,只有一个成员的值被存储。
这就是最后赋给它的值。
6、设有以下语句
char x=3,y=6,z;
inti;floatsum = 0;
for ( i = 0;i<3;i++ )
sum = sum+p->score[i];
printf( "%6.2f\n", sum ) ;
}
3、下面程序的输出结果是( )
typedef struct{
float x ;
char z ;
}mytype;
mytype a ;
具体内容:
1、有以下程序,程序运行后的输出结果是()。
structs
{intx, y;
} data[2] = { 10, 100, 20, 200 } ;
main( )
{structs *p = data;
printf( "%d\n", ++ ( p->x ) ) ;
}
2、有以下程序,程序运行后的输出结果是()。
main()
{
printf("%d",sizeof(a));
}
4、下面程序的输出结果是( )
typedef union{lonBiblioteka a[1] ;char y ;
char c[10];
C程序实验报告十 结构体与共用体
实验10 结构体与公用体1.实验目的、要求(1)掌握结构体类型变量的定义和使用。
(2)掌握结构体类型数组的概念和使用。
(3)掌握公用体的概念与使用。
2.实验内容(1)输入程序并运行,观察运行结果#include “stdio.h”int main( ){ struct cmplx{ int x;int y;} cnum[2]={1 , 3 , 2 , 7};printf(“%d\n”, cnum[0].y / cnum[0].x * cnum[1].x );return(0); }运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按任意键返回源程序行,按ctrl+F9运行,按alt+F5看结果,结果显示:6(2)输入程序并运行,观察运行结果union ks{ int a;int b;};union ks s[4];union ks *p;#include “stdio.h”int main( ){ int n=1, i;printf(“\n”);for(i=0;i<4;i++){ s[i].a=n;s[i].b=s[i].a+1;n=n+2;}p=&s[0];printf(“%d,”,p->a);printf(“%d” ,++ p->a);return(0); }运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按任意键返回源程序行,按alt+F5看结果,结果显示:23(3)编写程序有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
要求用input 函数输入10个学生数据;用average函数求总平均分;用max函数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。
#include"stdio.h"struct student{char num[6];char name[8];int score[4];float avr;}stu[10];main(){int i,j,max,maxi,sum;float average;for(i=0;i<10;i++){printf("number");scanf("%s",stu[i].num);printf("name");scanf("%s",stu[i].name);for(j=0;j<3;j++){printf("\nscore\n");scanf("%d",&stu[i].score[j]); } }average=0;max=0;maxi=0;for(i=0;i<10;i++){sum=0;for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].avr=sum/3.0;average+=stu[i].avr;if(sum>max){max=sum;maxi=i; }}average/=5;printf("number name score1 score2 score3 average\n");for(i=0;i<10;i++){printf("%8s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%7d",stu[i].score[j]);printf("%6.2f\n",stu[i].avr); }printf("average=%5.2f\n",average);printf("The best student is %s,sum=%d\n",stu[maxi].name,max);}运行此程序:按F2保存源程序,按F9完成一次编译连接,无提示错误,按ctrl+F9运行,按要求输入十个学生的数据,按任意键返回源程序行,按alt+F5看结果,结果显示:number name score1 score2 score3 average01 san 76 87 79 80.6702 tian 65 75 86 75.3303 yuan 98 68 78 81.3304 ping 97 86 78 87.0005 shuo 65 74 82 73.6706 ying 90 80 68 79.3307 xiao 87 80 58 75.0008 hu 64 98 60 74.0009 xing 65 82 90 79.0010 xu 60 98 76 78.00average=156.67The best student is ping,sum=2613.思考及总结(1结构体、共用体定义方式、引用方式和功能的相同点与不同点。
c语言程序设计—结构体—实验报告
c语言程序设计—结构体—实验报告
实验报告
一、实验背景
随着计算机科学的发展,数据的处理和存储已经发生了巨大的变化,变得更加结构化和更有效率。
考虑到这一点,结构体在计算机程序设计中尤其重要。
因此,本实验的目的是练习使用C语言编程,设计并实现相应的结构体,来实现一定的功能。
二、实验目标
设计一个结构体struct book,包含书名、作者名、出版社、价格等字段,并实现以下功能:
(1)按照书名查找图书;
(2)将书籍信息以字符串格式输出;
(3)将书籍信息保存到文件中;
三、实验内容
1. 用C语言定义结构体struct book,包含书名字段name(char类型)、作者author(char类型)、出版社publisher(char类型)、价格price(float类型)等信息。
2. 创建一个函数findBook,输入参数为书名字符串,输出参数为书籍信息struct book。
该函数实现按照书名查找图书功能,若查找成功返回书籍信息,否则返回null。
四、实验结果
经过上述步骤,已经编写了相应的C语言程序实现了按照书名查找图书、将书籍信息以字符串格式输出、将书籍信息保存到文件中、从文件中读取书籍信息等功能。
五、总结
本实验中,使用C语言实现了结构体struct book的定义及四个功能的程序,理解并大致掌握了结构体的使用,学会用程序实现数据的存取。
因此,我们可以看到,结构体的使用可以使数据的存取更加有效率和简单,对于程序设计是很重要的一个概念。
实验9-1 结构体与共用体
实验9-1 结构体和共用体(1)1【实验目的】掌握结构体类型变量的定义和使用掌握结构体类型数组的概念和应用了解链表的概念和操作方法【实验要求】掌握结构体类型变量的定义和使用了解链表的概念和操作方法【实验环境】(1) Microsoft XP操作系统(2) Microsoft VC++ 6.0【实验内容】1、第几天/acmhome/problemdetail.do?&method=showdetail&id=1071描述:给定一个日期,输出这个日期是该年的第几天。
输入输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出:对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入:2000-01-01样例输出:12、学生成绩/JudgeOnline/problem.php?id=1518题目描述现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。
编写一个函数input,用来输入一个学生的数据记录。
编写一个函数print,打印一个学生的数据记录。
在主函数调用这两个函数,读取N条记录输入,再按要求输出。
N<100输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出:每个学生的学号、姓名、三科成绩占一行,逗号分开。
样例输入2a100 zhblue 70 80 90b200 newsclan 90 85 75样例输出a100,zhblue,70,80,90b200,newsclan,90,85,753、平均分和最高分/JudgeOnline/problem.php?id=1519题目描述有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
C语言程序设计实验报告(结构体和共用体)
C语言程序设计实验报告(结构体和共用体)1实验目的1、掌握结构体类型变量的定义和使用;2、掌握结构体类型变量数组的概念和使用;3、掌握链表的概念,初步学会对链表进行操作;4、掌握共用体的概念和使用。
2实验内容1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。
要求:1、三个人的数据采用直接初始化的方式赋值;2、利用结构体指针实现处理过程。
3算法描述流程图4源程序#include<stdio.h>main(){struct students{char name[10];int age;} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++){if(((stu2+j)->age)<((stu2+k)->age))k=j;}*t=*(stu2+k);*(stu2+k)=*(stu2+i);*(stu2+i)=*t;}printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }5测试数据{"Jack",17},{"Anne",16},{"Tom",19}6运行结果7出现问题及解决方法;实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。
以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。
8实验心得在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。
《C语言程序设计》实验报告(实验1-11) 2013.3
《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。
二、预习内容:教材《C语言程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输入并运行下面的程序:#include <stdio.h>int main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。
#include <stdio.h>int main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运行结果(或截图):2. (1) 改正后的源程序:(2) 运行结果(或截图):五、思考题:1. 一个C程序上机的步骤有哪些?答:2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。
二、预习内容:教材《C语言程序设计教程》第2章。
三、实验内容:1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。
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)为每一个结构定义两个变量。
共用体实验报告
一、实验目的1. 理解共用体的概念和作用。
2. 掌握共用体的定义和使用方法。
3. 通过实验加深对共用体在C语言中的实际应用。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容1. 共用体的定义与初始化2. 共用体的成员访问3. 共用体与结构体的区别4. 共用体的内存占用5. 共用体的应用实例四、实验步骤1. 共用体的定义与初始化(1)创建一个新的C语言文件,命名为“共用体实验.c”。
(2)定义一个共用体类型,包含两个成员:一个整型变量和一个浮点型变量。
```c#include <stdio.h>typedef union {int i;float f;} data_union;int main() {data_union my_union;printf("请输入一个整数:");scanf("%d", &my_union.i);printf("您输入的整数为:%d\n", my_union.i);printf("请输入一个浮点数:");scanf("%f", &my_union.f);printf("您输入的浮点数为:%f\n", my_union.f);return 0;}```2. 共用体的成员访问(1)在上面的代码中,我们通过共用体成员名访问整型变量和浮点型变量。
(2)修改程序,输出共用体中整型变量的值。
```cprintf("共用体中的整型变量值为:%d\n", my_union.i);```3. 共用体与结构体的区别(1)结构体中的成员变量各自占用独立的内存空间,而共用体的成员变量共享同一块内存空间。
(2)结构体可以同时存储不同类型的成员变量,而共用体在任意时刻只能存储一种类型的成员变量。
C语言结构体和共用体实验报告
实验九参考程序实验9-1/*****************************************************************实验9.1**(1)为某商店的商品设计合适的结构体(PRODUCT)。
每一种商品包含编号(number)、* 名称(name)、价格(price)、折扣(discount)4项信息,根据表9-1,为这些信息选择合适的数据类型。
*(2)建立2个函数,以实现对商品的操作。
input函数实现商品的输入;* display函数显示商品信息。
要求这2个函数都以商品的结构体(PRODUCT)指针为参数。
*(3)在主函数中为商品键盘定义一个结构体变量(keyboard),利用input函数实现键盘信息的输入;* 定义一个结构体数组(elec_device[3]),利用input函数实现冰箱、空调、电视信息的输入;* 最后利用display函数显示4种商品的信息。
** 表9-1**编号名称价格折扣*1010 键盘89.50 0.85*1021 冰箱1024.00 0.95*1022 空调2058.50 0.90*1023 电视3001.88 0.95*****************************************************************/#include <stdio.h>typedef struct _PRODUCT{int iNumber;char strName[32];float fPrice;float fDiscount;}PRODUCT,*PPRODUCT;void input(PRODUCT *pProduct);void display(PPRODUCT pProduct);void main(){int i;PRODUCT kyeboard;PRODUCT elec_device[3];input(&kyeboard);for(i=0;i<3;i++){input(&elec_device[i]);}display(&kyeboard);for(i=0;i<3;i++){display(&elec_device[i]);}}/******************************************************************函数名称:input()**参数:PRODUCT *pProduct -PRODUCT结构体指针,用来存放输入数据***返回值:无*说明:*该函数用来完成PRODUCT结构体数据的输入。
C语言 实验八 结构体和共用体实验
信息工程学院通信专业 2 班成绩评定_______学号******** 姓名*** (合作者____号____)教师签名_____实验八题目结构体和共用体实验第21周星期一第6~7节一、实验目的与要求1、掌握结构体类型的概念和定义方法以及结构体变量的定义和应用。
2、掌握指向结构体变量的指针变量的概念和应用,特别是链表的概念和应用。
3、掌握运算符“.”和“->”的应用。
4、掌握共同体的概念和应用。
二、实验内容和步骤1、程序功能:输入具体的年、月、日,输出该日期是这一年的第几天。
请将空白处填补好。
#include<stdio.h>static int day_tab[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31};struct date{int day;int month;int year;int yearday;char mon_name[5];};day_of_year(struct date *p ){int i,day,leap;leap=!(p->year %4!=0);day=p->day;for(i=1;i<p->month;i++)day+=day_tab[leap][i];p->yearday=day;return 0;}struct date w;void main(){printf("input year_month_day please:\n");scanf("%4d%2d%2d",&w.year,&w.month,&w.day);day_of_year(&w);printf("the yearday is:%d\n",w.yearday);}3、下面的程序旨在建立一条单项链表(a1-a2-...-an),然后将此链表逆置成(an-a(n-1)-...-a2-a1)。
c语言实训报告模板
c语言实训报告模板暨南大学本科实验报告专用纸课程名称高级语言程序设计成绩评定实验项目名称结构体和共用体指导教师张晓刚实验项目编号08 实验项目类型综合性实验地点 C301 学生姓名苟长弘学号 XX051282 学院信息科学技术系计算机科学专业软件工程实验时间 XX 年6月12 日下午~6月13 日下午温度℃湿度实验目的1.2.3.4. 掌握结构体类型变量的定义和使用。
掌握结构体类型数组的概念和应用。
掌握链表的概念,初步学会对链表进行操作。
掌握共用体的概念与使用。
实验内容和要求实验内容1::试编写一个程序完成:有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
实验要求:要求用一个input函数输入5个学生数据;应一个average函数求平均分;用max函数求出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。
输入事先已编好的程序,并运行该程序。
分析运行结果是否正确。
实验内容2::试编写一个程序完成:建立一个链表,每个结点包括:学号、姓名、性别、年龄。
输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
实验要求:用链表实现。
输入事先已编好的程序,并运行该程序。
分析运行结果是否正确。
主要仪器设备仪器:计算机实验环境: Windows XP + Visual C++实验原理实验1的N-S图如下:图片已关闭显示,点此查看实验2的N-S图如下:creat函数:图片已关闭显示,点此查看print函数:图片已关闭显示,点此查看del函数:图片已关闭显示,点此查看主函数:图片已关闭显示,点此查看源程序实验1的源程序如下:#includestruct student{int number;char name[10];int classes[3];int average;}stu[5];void input(struct student *p){int i;for(i=0;i {printf("Please input %dth student's data:",i+1); scanf("%d %s %d %d %d",&p->number,p->name,&p->classes[0],&p->classes[1],&p->classes[2]);}}average(struct student *p){int m=0;m=p->classes[0]+p->classes[1]+p->classes[2];m=m/3;p->average=m;return(m);}struct student *max(struct student *p,int j) {int i,n;struct student *q;for(i=0;i if(p->classes[j]>=n){n=p->classes[j];q=p;}return(q);}void main(){int i,m[5];struct student *p;input(stu);p=stu;for(i=0;i {m[i]=average(&stu[i]);printf("The %s's average score is:%d",p->name,m[i]);}for(i=0;i {p=max(stu,i);printf("The classes%d's max score is:%d %s %d %d %d %d",i+1,p->number,p->name,p->clas ses[0],p->classes[1],p->classes[2],p->average);}}实验2的源程序如下:#include#include#define NULL 0#define LEN sizeof(struct student)struct student{char num[10];char name[10];char sex;int age;struct student *next;} ;int n;struct student *creat(void){struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN); scanf("%s %s %c %d",p1->num,p1->name,&p1->sex,&p1-> age);head=NULL;while(p1->age!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);scanf("%s %s %c %d",p1->num,p1->name,&p1->sex,&p1-> age);}p2->next=NULL;return(head);}void print(struct student *head){struct student *p;printf("Now,These %d records are :",n);p=head;if(head!=NULL)do { printf("%s %s %c %d",p->num,p->name,p->sex,p->age);p=p->next;}while(p!=NULL);}struct student *del(struct student *head ,int num) {struct student *p1,*p2;if(head==NULL)printf("list null!");else{p1=head;while(num!=p1->age&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num==p1->age){if(p1==head)head=p1->next;elsep2->next=p1->next;printf("delete:%d",num);n=n-1;}elseprintf("%d not been found!",num);}return(head);}void main(){struct student *head,*stu;int del_num;printf("input records:");head=creat();print(head);printf("input the deleted number:"); scanf("%d",&del_num);while(del_num!=0){head=del(head,del_num);print(head);printf("input the deleted number:"); scanf("%d",&del_num);}}实验步骤与调试实验1:运行时未发生任何错误,结果正确。
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语⾔实验报告c程序实验报告姓名:黄澄实验地点:教学楼514教室实验时间:4⽉30⽇⼀、本章要点1.通过实验理解结构体和共⽤体的数据结构(先定义类型,再变量)2.结构体、共⽤体中数组的使⽤及变量的赋值3.结构体和共⽤体定义时的嵌套使⽤(嵌套使⽤的结构体必须先定义)⼀、实验⽬的与要求(1)掌握结构体类型说明和结构体类型变量、数组、指针的定义⽅法及使⽤。
(2)学会引⽤结构体中的成员。
(3)掌握利⽤指向结构体的指针成员构成链表的基本算法。
(4)了解联合体类型和枚举类型的说明、其变量的定义及赋初值的⽅法。
(5)了解联合类型变量中各成员的存储结构,学会引⽤各成员中的数据。
(6)学习正确引⽤枚举类型常量,了解如何对枚举类型变量进⾏操作。
⼆、实验内容9.3.1 结构体变量的运⽤1.问题的简单描述:问题的简单描述:试利⽤结构体类型描述年、⽉、⽇,输⼊⼀个⽇期,统计⽇期是本年度第多少天。
2.流程图:3.实验代码:#include<stdio.h>main(){ struct date{int day;int month;int year;}a;int i,days=0;printf("请输⼊年⽉⽇:");scanf("%d%d%d",&a.year,&a.month,&a.day);for(i=1;i<a.month;i++){ if(i==1||i==3||i==5||i==7||i==8||i==10)days+=31;else if(i==4||i==6||i==9||i==11)days+=30;else if(a.year%4==0||a.year%400==0||a.year%100==0)days+=29;else days+=28;}days+=a.day;printf("%d年%d⽉%d⽇是该年的第%d天",a.year,a.month,a.day,days);}运⾏结果问题分析天数的计算就是循环累加,再加上不⾜⽉的⽇期,记录是不能作为⼀个整体输出的,应该分别⼀条条输出,结构体是构造数据类型,要先定义类型,然后是类型的变量,结构体赋初值要⽤花括号括起来。
华北水利水电大学C语言实验报告(七)
-学年第学期级专业:学号:姓名:………………………………………………………………………………………………一、实验题目:结构体和共用体二、实验目的:(略)三、实验内容:1.程序验证:启动vc语言环境,输入并执行以下程序。
源代码:运行结果:#include<stdio.h>struct stu{int num;char name[10];char sex;int age;int score[4];}students[ ]={{001, "David",'M',25,{80,78,92,94}},{002, "Lily",'W',23,{90,84,89,95}},{003, "Alice",'W',22,{79,78,96,97}}};{003, "Alice",'W',22,{79,78,96,97}}};{003, "Alice",'W',22,{79,78,96,97}}};void main( ){int i,j,number;printf("Input student’s number\n");scanf("%d",&number);for(i=0;i<3;i++)if(number= =students[i].num) b reak;printf("name=%s\nsex=%c\nage=%d\n",students[i].name,students[i].sex,students[i].age); for(j=0;j<4;j++)printf("%d ",students[i].score[j]);printf("\n");}-学年第学期级专业:学号:姓名:………………………………………………………………………………………………2.程序设计某单位进行选举,有5位候选人:李宁、王新、赵广、陈奇、六六。
C语言程序设计实验报告范文c语言程序设计实验报告书
C语言程序设计实验报告范文c语言程序设计实验报告书c语言程序设计实验报告篇一一、实验目的:1、掌握C语言的`数据类型和变量的声明。
2、掌握不同类型数据之间赋值的规律。
3、掌握C语言的运算符和表达式的使用。
4、熟悉C程序的编辑、编译、连接和运行的过程。
二、实验内容:①输人程序: includevoid main() { int a, b; float d,e; charc1,c2; double f, g; long m, n; unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.;g=0.; m=50000;n=-60000;p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); }②运行此程序并分析结果按习题4. 8要求编写程序题目为: 设圆半径r=l. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输人数据,输出计算结果口输出时要有文字说明,取小数点后两位数字。
程序:三、实验步骤:①输人程序:includevoid main() { int a, b; float d,e; char c1,c2; double f, g; long m, n; unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.;g=0.; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%dc1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); }②运行此程序并分析结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计实验报告
(结构体和共用体)
1实验目的
1、掌握结构体类型变量的定义和使用;
2、掌握结构体类型变量数组的概念和使用;
3、掌握链表的概念,初步学会对链表进行操作;
4、掌握共用体的概念和使用。
2实验内容
1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。
要求:
1、三个人的数据采用直接初始化的方式赋值;
2、利用结构体指针实现处理过程。
3算法描述流程图
4源程序
#include<stdio.h>
main()
{
struct students
{
char name[10];
int age;
} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];
struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;
for(i=0;i<2;i++)
{
k=i;
for(j=i+1;j<3;j++)
{
if(((stu2+j)->age)<((stu2+k)->age))
k=j;
}
*t=*(stu2+k);
*(stu2+k)=*(stu2+i);
*(stu2+i)=*t;
}
printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }
5测试数据
{"Jack",17},{"Anne",16},{"Tom",19}
6运行结果
7出现问题及解决方法;
实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。
以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。
8实验心得
在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。