C语言 | 表格输出若干人的数据

举报
C语言入门到精通 发表于 2021/02/12 23:42:11 2021/02/12
【摘要】 例43:有若干个人员的数据,其中有学生和老师,学生的数据包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职务、职业。要求用C语言编程实现同一个表格输出。解题思路:可以看出:学生和教师的数据的项目大多数是相同的,即职位不同,学生是班级,老师是职位,所以共同的部分可以用共用体。main函数之前定义了外部的结构体数组person,在结构体类型声明中包括了共用体类...

例43:有若干个人员的数据,其中有学生和老师,学生的数据包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职务、职业。要求用C语言编程实现同一个表格输出。

解题思路:可以看出:学生和教师的数据的项目大多数是相同的,即职位不同,学生是班级,老师是职位,所以共同的部分可以用共用体。

main函数之前定义了外部的结构体数组person,在结构体类型声明中包括了共用体类型category成员,在这个共用体成员中又包括两个成员。

源代码演示:

#include<stdio.h>//头文件
struct //定义结构体 
{
  int num;//编号 
  char name[20];//姓名 
  char sex;//性别 
  char job;//工作 
  union //联合体 { int class_Number; char position[10];
  } category; //共用体变量
}person[2];
 int main()//主函数入口 
 { int i;//定义整型变量 
   for(i=0;i<2;i++)//for循环2次 
   { printf("请输入数据:\n");//提示语句
 //输入信息 
 scanf("%d %s %c %c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job); //person[i].name前面不加&照样可以运行
 if(person[i].job=='s')//如果工作是s 
 { scanf("%d",&person[i].category.class_Number); } else if(person[i].job=='t')//如果工作是s 
 { scanf("%s",&person[i].category.position); } else { printf("输入错误\n");//提示语句 
 } } printf("\n");//换行 
  printf("号码 名字 性别 工作 班级/职位\n");//提示语句 
  for(i=0;i<2;i++)//for循环2次 
   { if(person[i].job=='s')//如果工作是s 
 { //输出结果 
 printf("%-6d%-15s%-4c%-8c%-10d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.class_Number); } else { //输出结果 
 printf("%-6d%-15s%-4c%-8c%-10s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position); } } return 0;//主函数返回值为0 
 }


编译运行结果如下:

请输入数据:
10010 张三 M t teacher
请输入数据:
10012 李四 F s 404

号码 名字 性别 工作 班级/职位
10010 张三 M t teacher
10012 李四 F s 404

--------------------------------
Process exited after 35.61 seconds with return value 0
请按任意键继续. . .
C语言 | 表格输出若干人的信息 mp.weixin.qq.com图标

文章来源: zhuanlan.zhihu.com,作者:,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuanlan.zhihu.com/p/339176533

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。