语言中要输出表格_C语言 | 表格输出若干人的信息

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”

——包租婆 这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢? 当然是每天都练习一道C语言题目!!

b01930c02824f9214fb9dd79bef248f3.png

作者

闫小林

白天搬砖,晚上做梦。我有故事,你有酒么?

例43:有若干个人员的数据,其中有学生和老师,学生的数据包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职务、职业。要求用C语言编程实现同一个表格输出。 解题思路:可以看出:学生和教师的数据的项目大多数是相同的,即职位不同,学生是班级,老师是职位,所以共同的部分可以用共用体。 main函数之前定义了外部的结构体数组person,在结构体类型声明中包括了共用体类型category成员,在这个共用体成员中又包括两个成员。 源代码演示:
#include//头文件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 teacher10012 李四 F s 404
--------------------------------
Process exited after 35.61 seconds with return value 0
请按任意键继续. . .
以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线     C语言开发工具 C++学习路线     C#学习路线 长按关注

661708f8291bac473817cd0577f50a09.png

学习C/C++不迷路 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值