头歌C语言结构体类型综合实训(公共C实验七)

实训平台C语言 目录 C语言程序设计编辑与调试环境 第1关打印输出 Hello World 第2关打印输出图形 第3关求3个数的最大值 第4关熟悉C语言调试过程 顺序结构程序设计 第1关加法运算 第2关不使用第3个变量,实现两个数的对调 第3关用宏定义常量 第4关数字分离 第5关计算总成绩和平均成绩 第6关求三角形的面积 第7关立体几何计算题 第8关计算两个正整数的最大公约数 选择结构程序设计 第1关排序 第2关选择结构-闰年判断 第3关选择结构-分段函数问题 第4关学生成绩等级换算 阅读详情

第1关 结构体类型的定义及所占内存的字节数

#include  <stdio.h>
struct datatype1     
{
   char   b; 	
   int   a;
   char   c;
}s1;
struct datatype2     
{
   char   b; 	
   short   a;
   char   c;
}s2;
struct datatype3     
{
   char   b; 
   char   c;
   int   a;
}s3;
struct stu
{
int num;
char name[20];
char sex;
float score;
}s4;
struct date
{
int year;
int month;
int day;
}s5;
struct student
{
int num;
char name[20];
char sex;
struct date birth;
float score;
}s6;

int main()
{
    /*****输出上述六种结构体类型所占字节数*****/
    /********** Begin **********/
printf("1:%d\n2:%d\n3:%d\n4:%d\n5:%d\n6:%d\n",sizeof(s1),sizeof(s2),sizeof(s3),sizeof(s4),sizeof(s5),sizeof(s6));
    /********** End **********/
     return 0;
}

第2关 结构体变量的定义及应用 

#include<stdio.h>
#include<string.h>
struct date
{
	int year;
  int month;
  int day;  
};
struct stu
{
  int num;
  char name[20];
  char sex;
  struct date birth;
  float score;
};  
int main()
{
  struct stu s1 = {10010,"zhangsan",'m',2000,5,4,84.5}, s2, s3;
  /*****输入学生信息存放在变量s2中*****/
  /********** Begin **********/
  scanf("%d\n%s\n%c\n%d%d%d\n%f\n",&s2.num,s2.name,&s2.sex,&s2.birth.year,&s2.birth.month,&s2.birth.day,&s2.score);
  /********** End **********/
  /*****交换两个结构体变量s1和s2*****/
  /********** Begin **********/
 s3=s1;s1=s2;s2=s3;
  /********** End **********/
  /*****输出结构体变量s1和s2的成员*****/
  /********** Begin **********/
 printf("学号:%d\n姓名:%s\n性别:%c\n出生日期:%d年%d月%d日\n成绩:%.1f\n学号:%d\n姓名:%s\n性别:%c\n出生日期:%d年%d月%d日\n成绩:%.1f",s1.num,s1.name,s1.sex,s1.birth.year,s1.birth.month,s1.birth.day,s1.score,s2.num,s2.name,s2.sex,s2.birth.year,s2.birth.month,s2.birth.day,s2.score);
  /********** End **********/
  return 0;
}


第3关 定义一个结构类型变量(包括年、月、日),实现输入一个日期显示它是该年第几天 

#include<stdio.h>
typedef struct date
{
	int year;
	int month;
	int day;
}DATE;

int main()
{
    /********** Begin **********/
    int s,i;DATE b;
    scanf("%d%d%d",&b.year,&b.month,&b.day);
    int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    for(s=0,i=1;i<b.month;i++)
    {
        s+=a[i];
    }
    if(b.month>2&&(b.year%4==0&&b.year%100!=0||b.year%400==0))
    {s++;}s+=b.day;
    printf("它是%d年的第%d天",b.year,s);
    /********** End **********/
    return 0;
}

第4关 向函数传递结构体 

 

#include<stdio.h>
#include<string.h>
typedef struct date
{  int year;
    int month;
    int day;
}DATE;
typedef struct student
{
     int num;
     char name[20];
     char sex;
     DATE birthday;
     float score;
}STUDENT;
void input(STUDENT *s);
void output(STUDENT s);
/********** Begin **********/
void input(STUDENT *s)
{
    scanf("%d",&(s->num));
    scanf("%s", s->name);
    scanf(" %c",&( (*s).sex));
    scanf("%d%d%d",&s->birthday.year, &s->birthday.month, &s-> birthday.day);
    scanf("%f",&(s-> score));
}
void output(STUDENT s)
{
    printf("学号:%d\n姓名:%s\n性别:%c\n出生日期:%d年%d月%d日\n成绩:%.1f",s.num,s.name,s.sex,s.birthday.year,s.birthday.month,s.birthday.day,s.score);
}
main()
{
    STUDENT s2;
    input(&s2);
    output(s2);
}
/********** End **********/

 

 

结构体(一) 任务描述本关任务:结构体类型定义及所占内存字节数。相关知识结构体类型定义C 语言允许用户自定义数据类型,典型的代表就是结构体结构体类型和数组一样,都属于构造数据类型。它们之间的不同点就在于,数组是将相同类型的数据单独放在一起来存储,而结构体允许逻辑上相关,但类型不同的数据放在一起来存储。例如:编写一个学生信息管理的程序,学生学号、姓名、性别、出生年月、成绩等数据都是与某一学生紧密联系的整体。 阅读详情

相关推荐

结构体类型定义及所占内存字节数

结构体

qq_74072878的博客 3793

实训平台C语言答案

实训平台C语言答案

m0_74839452的博客 25万+

C语言实验实训 答案

C语言实验实训 答案

c语言实训作业题解

c语言实训作业题解顺序结构程序设计1.加法运算2.不使用第3个变量,实现两个数的对调3.用宏定义常量4.数字分离5.计算总成绩和平均成绩6.求三角形面积7.立体几何计算题8.计算两个正整数的最大公约数选择结构程序设计选择结构程序设计进阶 顺序结构程序设计 1.加法运算 本关任务:写一个加法程序,输入整数a,b,输出他们的和。 解题代码: #include<stdio.h> int main(void) { int a,b,c; //Please input a

queen1008的博客 30万+

C语言实训项目-数组、指针和函数综合编程练习

编写一个计算任意 m 行 n 列二维数组中元素的最大值,并指出其所在的行列下标值的函数,利用该函数和动态内存分配方法,计算任意 m 个班、每班 n 个学生的某门课成绩的最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。这题和上一题思路一样,根据主函数给出的代码,我们可以判断出需要返回最高分maxScore的值,并且要将班级和学号赋给 row 和 col ,因此我们可以用双层for循环实现二维数组的比较,得到最大值和其相应数据后赋值返回即可。本关任务:数组、指针和函数综合编程练习。

来自想要赚大钱的小周同学 4895

C语言指针综合实训公共C实验五)

【代码】C语言指针综合实训公共C实验五)

txynhy的博客 1880

C语言函数综合实训公共C实验六)9~16

【代码】C语言函数综合实训公共C实验六)

txynhy的博客 2226

C语言函数综合实训公共C实验六)1~8

【代码】函数综合实训公共C实验六)1~8。

txynhy的博客 2387

JAVA程序设计-实训-------# 第一阶段 Java语言快速入门

任务描述本关的任务是编写你人生中第一个Java程序,从此开启你的Java实训之旅,显示效果如下:为了迈出上述的第一步,下面详细介绍一些基础知识。相关知识Java程序基本概念一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作,其中:对象(object):代表现实世界中可以明确标识的一个实体,存在独特的标识、状态和行为。例如,一条鱼是一个对象,它的状态有:颜色、品种;行为有:漫游、鱼跃等。类(class):是创建对象的模板,用于描述一类对象的行为和状态。

k1elvin的博客 3746

[数据结构]:05-循环队列(链表带结点)(C语言实现)

此专栏包含408考研数据结构全部内容,除其中使用到C++引用外,全为C语言代码。使用C++引用主要是为了简化指针的使用,避免二重指针的出现。

Chandni_小月月 825

寻找两个单链表的公共结点(C语言

方法二: 二、代码实现 1.链表结构体 代码如下(示例): 2.初始化链表 代码如下(示例): 3.尾插法创建单链表 代码如下(示例): 4.连接两个单链表 代码如下(示例): 5.求链表的长度 代码如下(示例): 6.寻找两个链表中的公共结点 代码如下(示例): 7.输出链表中的内容 代码如下(示例): 8.主函数 代码如下(示例): 9.运行截图...

weixin_43788095的博客 2997

最近公共祖先算法(LCA)

发现网上对此算法真是多之又多,看了几个小时才算看懂。   写下我的理解思路,首先,LCA要用到并查集和深度优先搜索,其中并查集用来查找和合并各个节点集合,深度优先搜索用了搜索问题节点是否在同一个集合中。其实就是递归。(1):其中递的过程:首先算法从根开始,对每一棵子树进行深度优先搜索,访问根时,将创建由根结点构建的集合,然后把根节点的祖先设为自身,然后遍历该节点的每个子节点,也就是该节点的其他

1899

Linux进程控制

Linux进程控制(操作系统课设作业

有为肥宅的博客 1149

C语言 哥习题答案截图

第3关 计算数组中元素的最大值及其所在的行列下标值 第4关 删除最大值 第5关 杨辉三角 三种循环语句的使用 第1关 分数序列和 第2关 公式计算(1) 第3关 公式计算(2) 第4关 求同时被7或11整除的整数 第5关 公式计算(3) 循环结构程序设计1 第1关 小球自由落体运动 第2关 求解出n以内所有能被5整除的正整数的乘积 第3关 最大公约数和最小公倍数 第4关 字符串中各类字符数的统计

TUSTer_的博客 3万+

C语言结构体讲解

在上面我们结构体定义结构体的声明)只是告诉编译器我们要表示的数据,但是并没有让内存开辟空间,就相当于你要造房子,但是你现在只是把图纸给了工人,并没有告诉工人在哪里做房子。这个时候如果想要使用结构体,就必须创建变量,也就是结构体变量。这里可以类比 int num;这里的类型是int,变量名是 num 而结构体类型是struct student,这里就可以创建一个变量stu了。

qq_74276498的博客 1054

C语言实训参考---顺序结构程序设计

【代码】C语言实训参考---顺序结构程序设计。

m0_73938966的博客 7647

实践教学平台——C语言程序设计

实践教学平台——C语言程序设计

2201_75537843的博客 1万+

答案】C语言程序设计编辑与调试环境

答案答案查询的网页版入口其他各类实训答案的目录见这里答案获取的方法简介见这里并不是所有的关卡都有答案,有些只有部分关卡有不要直接复制答案哦。

weixin_44505587的博客 2552
上一篇: 头歌C语言函数综合实训(公共C实验六)9~16
下一篇: 头歌C语言指针综合实训(公共C实验五)
txynhy
博客等级 码龄4年 81粉丝 9原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值