c语言结构体按指定内容输出

Python026

c语言结构体按指定内容输出,第1张

你好,编译运行过的,代码如下,望采纳!

#include<stdio.h>

#include<string.h>

struct student

{

int num

char name[20]

char sex[80]

char jg[80]

char sr[80]

char kc[80]

double cj

char dj[80]

}student stu[6]={{1,"张一","男","广西北海","1993.1.1","高数",87},\

{2,"张二","男","广西来宾","1992.1.5","高数",55.5},\

{3,"张三","女","广西南宁","1990.11.12","高数",93},\

{4,"张四","男","广西北海","1993.5.2","高数",85},\

{5,"张五","男","广西崇左","1994.6.9","高数",76},\

{6,"张六","女","广西北海","1991.8.4","高数",88}}

int main(void)

{

int i = 0

for(i = 1i<6i++)

{

if(!strcmp(stu[i].sex,"男"))

{

printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2lf\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].jg,stu[i].sr,stu[i].kc,stu[i].cj)

}

}

return 0

}

学校网址:

http://219.159.198.136/

学校地址:广西北海市龙潭南珠大道9号

邮政编码:536000

学校网址:http://www2.guet.edu.cn/gz/

电子信箱:[email protected]

咨询电话:(0773)5601328

(0779)8889005 (0779)8889008

(0779)3221258 (0779)3221259

传真电话: (0779)3221229

专业设置:

专业名称 详细介绍 学制

数控技术 培养目标:本专业培养在数控技术领域具有创新精神与较强实践能力的高级应用型技能人才。

主干课程:机械制图、工程力学、机械设计基础、机械制造基础、CAD/CAM技术、电工与电子技术、可编程控制器原理及应用、数控机床及编程、数控工艺及编程操作、数控机床故障诊断与维护、液压与气动技术、机电传动与控制、数控机床操作及加工工艺实训等。

就业方向:毕业生主要在机械制造、装备制造等行业从事机械制造企业的数控设备程序编制、数控设备操作与维护、CAD/CAM技术应用等方面的工作。

三年

制冷与冷藏技术 培养目标:本专业培养掌握现代制冷与冷藏技术的专业理论和专业技能,熟悉制冷系统的工作原理、构造和性能,面向大型冷库、制冷设备生产厂家、食品冷加工等行业的高级应用型技能人才。

主干课程:计算机应用基础、电工电子技术基础、机械制图与制冷CAD、机械工程基础、空气调节、制冷压缩机、制冷装置自动化、小型制冷装置设计、制冷与空调装置、制冷与空调设备运行管理、制冷与空调设备、电冰箱及空调器结构与维修、食品冷冻冷藏等。

就业方向:毕业生可在大型冷库、食品加工企业、机关、学校、商场、设计院等单位从事制冷系统设计、操作、维护、运行等技术及管理工作,也可在职业学校从事教学工作。

三年

计算机信息管理 培养目标:本专业培养掌握信息管理与信息系统的理论知识,能够运用计算机相关技术及经济管理知识进行信息系统的规划、设计、开发、实施与维护的高级应用型技能人才。

主干课程:C语言程序设计、数据库原理及应用、计算机网络、工商企业管理、财务管理、管理信息系统分析与设计、电子商务实务、微机组装与维护技术、运筹学基础、统计学原理、信息系统安全防护技术、电子商务网站建设与实践、企业资源规划(ERP)、IT项目管理、VB程序设计等。

就业方向:毕业生可在企事业单位的信息部门从事计算机管理信息系统的规划、设计、开发、实施与维护等技术工作;可在IT相关公司从事信息系统的分析、设计等技术工作。

三年

通信技术 培养目标:本专业培养系统掌握通信技术领域的必需理论、技术和基本专业技能,具备简单电子电路及通信单元电路设计,通信电子产品与设备的装配、调试及维修,通信网络的安装、管理、使用与维护的基本技术和技能的高级应用型技能人才。

主干课程:通信原理、移动通信、光纤通信、卫星与微波通信、卫星全球定位系统、通信网络与现代交换、计算机通信与互联网技术、互联网路由协议基础、通信测试技术等。

就业方向:面向各类通信电子产品设计、开发、生产、销售单位和通信集团公司,从事电子及通信产品、设备的生产、检测、调试、维护和销售等工作。

三年

计算机应用技术 培养目标:本专业培养掌握计算机应用技术的基本理论知识,熟练使用多种软件开发工具,具备IT系统分析与设计,计算机维护与维修,计算机软件设计、开发,网络设计、安装及管理等方面能力的高级应用型技能人才。

主干课程:离散数学、数据结构、计算机组成原理、数据库原理及应用、面向对象程序设计、单片机原理及应用、组网工程及网络管理、操作系统、JAVA程序设计、计算机网络、图形图像处理技术、计算机维修、软件工程等。

就业方向:毕业生可在企事业单位及政府机关等从事计算机软硬件安装、维护与营销,多媒体开发与应用,网络设计、安装及管理,计算机软件设计、开发及应用等工作。

三年

电子信息工程技术 培养目标:本专业培养具备电子技术和信息系统的基础知识,掌握电子技术、通信技术及计算机技术,具有电子产品设计、生产制造、调试检修、技术管理等实践能力的高级应用型技能人才。

主干课程:电路与电子技术系列课程、数字视频技术应用、电视网络传输技术、通信技术、单片机技术、EDA技术、数字信号处理、楼宇智能化、集成电路应用等。

就业方向:毕业生主要在与信息技术有关的行业中从事各种电子信息产品的设计、调试、维修、维护及安装等技术工作。

三年

电脑艺术设计 培养目标:本专业培养适应经济社会发展需要,掌握电脑艺术设计的基本理论和基本技能,有较高艺术修养和一定的艺术创造力,有动画短片制作、动漫设计、三维动画、包装设计、招贴设计、网页设计与制作、企业形象策划等方面能力的高级应用型技能人才。

主干课程:平面构成、立体构成、色彩构成、动画短片制作、动漫设计、电脑喷绘技术、三维动画、包装设计、招贴设计、企业形象策划与VI设计、摄影与摄像技术、视频编辑软件应用、网页设计与制作、计算机图形处理软件(Photoshop)操作、设计实习、毕业设计等。

就业方向:毕业生可在大中型广告公司、工商企业、事业单位、装饰公司、出版社、学校等单位,从事网站设计制作、工艺美术设计、书籍装帧设计、商业动漫设计和教学培训等工作。

三年

装潢艺术设计 培养目标:本专业培养适应经济社会发展需要,掌握本专业的基本知识和基本技能,有较强的艺术鉴赏力和创作能力,能独立进行商业广告设计、商业环境设计、产品包装设计、书籍装帧、标志设计、室内装潢设计和工程管理等方面能力的高级应用型技能人才。

主干课程:素描、水粉、国画、平面构成、立体构成、基础图案、色彩构成、广告设计、包装设计、视觉艺术、企业形象策划、商业环境设计、标志设计、计算机辅助设计、计算机图形处理软件(Photoshop)操作、摄影与摄像、装潢设计实习、毕业设计等。

就业方向:毕业生可在装潢公司、电视台、广告公司、出版社、杂志社、印刷厂,从事商品包装与装潢设计、产品广告设计、室内外装潢设计与施工、管理等方面的工作。

三年

市场营销 培养目标:本专业培养掌握市场营销的理论知识,能熟练运用现代营销技术,具有市场调研和市场推销、市场开发与渠道管理、客户管理、营销策划与执行等专业能力的高级应用型技能人才。

主干课程:经济法、工商企业管理、市场营销学、国际贸易实务、商贸英语听说、电子商务实务、消费者行为学、市场调查与预测、推销理论与实务、物流管理、广告实务、公共关系实务、营销策划、超市与连锁经营、市场调研实习、推销实习、商务谈判实训、营销策划实习等。

就业方向:毕业生可在各类企业从事市场调研与开发、市场策划、广告与价格策略制订、销售管理等营销管理工作。

三年

计算机多媒体技术 培养目标:本专业培养掌握多媒体软件开发、广告设计、网页制作、影视编辑、音频编辑与制作、动画设计与制作、多媒体数据库管理与维护、网络组建与管理、计算机软硬件的操作等能力的高级应用型技能人才。

主干课程:本专业主要课程有政治理论、英语、大学语文、计算机应用基础、高等数学、体育、广告学、绘画基础、电脑平面设计基础、计算机组装与维护、数据库及应用 (SQL) 、 JAVA 程序设计、 VB 程序设计、计算机网络及应用、图形设计、图像处理、数字影音技术、网站建设、 WEB 程序设计、动画制作、多媒体开发技术、多媒体高级编程技术、专业英语、职业资格技能训练。

就业方向:毕业生主要面向行政事业单位、出版社、电视台、广告公司、出版印刷企业以及信息咨询等行业从事计算机信息处理、媒体策划、广告设计与制作、局域网管理、多媒体数据库开发、多媒体通信网络建设、多媒体软件开发等工作,也可以在企事业单位从事经营管理、文秘等方面的工作。

三年

微电子技术 培养目标:本专业培养掌握大规模集成电路及其半导体器件的设计方法和制造工艺,具有从事芯片生产过程的工艺加工、设备维护、器件测量能力的高级应用型技能人才。

主干课程:计算机基础、电子技术、微电子概论、半导体物理、半导体器件物理、集成电路工艺原理、集成电路CAD、电子测量技术、 电子技术实验、集成电路工艺实训、电子测量技术实训、集成电路CAD实训等特色课程和实践环节。

就业方向:在微电子产品制造行业,从事大规模集成电路及其半导体器件的制造,及微电子设备和产品的维护和检测等工作。

三年

三题目类型实际是一样的,都可以总结成一个总数,按规则分指定份,如何分。

题目1:总数135,按规则,分成3份。(规则:二班比一班多5人,三班比二班少7人)

题目2:总数10,按规则,分成2份。(规则:见代码备注,可行方案多个,有且只有一条船可能不满)

题目3:总数60,按规则,分成2份。(规则:见代码备注,可行方案多个,有且只有一个瓶子可能不满)

代码思路,先创建数组,总量平分,多余的放在最后一个元素中。然后不断循环比较规则,按照比较结果各元素不断自增自减,直到完成周期。列举所有可能。

由于本题初始平分后总量均大于实际总量,所以循环是不断做减容比较。

理论适应其他数值,如果初始平分后总量均小于实际总量,代码中循环会不断增容比较,我没有对这种情况做识别,但不影响运行。有兴趣自己改。

增容,减容,以交换差值为数值,比如大船换小船,总容量就-2,反之+2

#include <stdio.h>

#include <conio.h>

#include <malloc.h>

typedef int (*pv)(int *,int)//规则函数指针

void meError(void *p)

int de(int *nums,int n,int len)//数值平分给数组元素,返回余数

int *js(int zn,int gn,pv gz)//zn:总数,gn:分组个数,gz:规则函数,返回值:包含每个分组的最终分配数值的数组

int fbGZ(int *nums,int)//第一题分班规则检查函数。参数1:当前分配的数组。返回值:满足规则返回1,不满足返回0

int fcGZ(int *nums,int)//第二题分船规则检查函数。数组元素1表示大船,元素2表示小船

int fpGZ(int *nums,int)//第三题分瓶规则检查函数。数组元素1表示大瓶,元素2表示小瓶

void prAsStr(int *nums,int len)//打印数字数组

int main()

{

    printf("3个班共135人,二班比一班多5人,三班比二班少7人,最终分配方案三班人数分别:\n")

    prAsStr(js(135,3,fbGZ),3)

    printf("41名同学划船,共租10条船.大船坐6人,小船坐4人,问大、小船各租条数分别:\n")

    js(10,2,fcGZ)

    printf("\n")

    printf("100千克油装了共60个瓶子,大油瓶容量4千克,小油瓶2瓶装1千克.大、小油瓶分别:\n")

    js(60,2,fpGZ)

    return 0

}

int fpGZ(int *nums,int len)

{

   //大油瓶一瓶装4千克,小油瓶2瓶装1千克.现有100千克油装了共60个瓶子.问大、小油瓶

    int flag

    float z=100,bp=4,sp=0.5//总油量,大瓶容量,小瓶容量,作为规则常量

    float sum=0,sz=0

    if((len!=2) && printf("错误!:该规则不适用!\n"))

        return 0

    //大瓶换小瓶,容量-3.5,小瓶换大瓶人数+3.5,只有一个瓶子可能不满

    //不满值范围(sum-z>0):0<=sum-z<bp,其中0<sum-z<sp范围大瓶小瓶任意一艘不满。sp<=sum-z<bp范围只能是大瓶不满

    sum=nums[0]*bp+nums[1]*sp

    if(sum-z>0)

        flag=1

    else if(sum-z<0)

        flag=0

    while(1)

    {

        sum=nums[0]*bp+nums[1]*sp

        sz=sum-z

        if(!sz)

            printf("大瓶%d,小瓶%d\n",nums[0],nums[1])

        if(sz>=sp && sz<bp)

            printf("大瓶%d,小瓶%d,一艘大瓶未满,还空%0.1fkg的容积\n",nums[0],nums[1],sz)

        if(sz>0 && sz<sp)

            printf("大瓶%d,小瓶%d,一艘小瓶或大瓶未满,还空%0.1fkg的容积\n",nums[0],nums[1],sz)

        if(sz>0)

            nums[0]--,nums[1]++

        else

            nums[0]++,nums[1]--

        if(sum-z==0 || (sum-z>0 && flag==0) || (sum-z<0 && flag==1))//大小船数量翻转,结束循环

            break

    }

    return 1

}

int fcGZ(int *nums,int len)

{

    int z=41,bp=6,sp=4,flag=0//总人数,大船载数,小船载数,作为规则常量

    int sum=0,sz=0

    if((len!=2) && printf("错误!:该规则不适用!\n"))

        return 0

    //大船换小船,人数-2,小船换大船人数+2,只有一条船可能不满。

    //不满值范围(sum-z>0):0<=sum-z<bp,其中0<sum-z<sp范围大船小船任意一艘不满。sp<=sum-z<bp范围只能是大船不满

    sum=nums[0]*bp+nums[1]*sp

    if(sum-z>0)

        flag=1

    else if(sum-z<0)

        flag=0

    while(1)

    {

        sum=nums[0]*bp+nums[1]*sp

        sz=sum-z

        if(!sz)

            printf("大船%d,小船%d\n",nums[0],nums[1])

        if(sz>=sp && sz<bp)

            printf("大船%d,小船%d,一艘大船未满,还空%d人位置\n",nums[0],nums[1],sz)

        if(sz>0 && sz<sp)

            printf("大船%d,小船%d,一艘小船或大船未满,还空%d人位置\n",nums[0],nums[1],sz)

        if(sz>0)

            nums[0]--,nums[1]++

        else

            nums[0]++,nums[1]--

        if(sum-z==0 || (sum-z>0 && flag==0) || (sum-z<0 && flag==1))//大小船数量翻转,结束循环

            break

    }

    return 1

}

int fbGZ(int *nums,int len)

{

    int cn=0//cn数值重分配过程中的公共池,重分配成功该必须为0

    if(len!=3 && printf("错误!:该规则不适用!\n"))

        return 0

    while(1)

    {

        if(nums[1]-nums[0]==5 && nums[1]-nums[2]==7 && cn==0)

            break

        while(nums[1]-nums[0]<5)

            nums[1]++,nums[2]++,cn-=2

        while(nums[1]-nums[0]>5)

            nums[1]--,nums[2]--,cn+=2

        while(nums[1]-nums[2]<7)

            nums[1]++,nums[0]++,cn-=2

        while(nums[1]-nums[2]>7)

                nums[1]--,nums[0]--,cn+=2

        cn=de(nums,cn,len)

        nums[len-1]+=cn//不能均分,余数给最后一个元素,继续循环分配

    }

    return 1

}

void prAsStr(int *nums,int len)

{

    int i

    for(i=0i<leni++)

        printf("%d ",nums[i])

    printf("\n\n")

}

int de(int *nums,int n,int len)//数值平分给数组元素(数组必须有初值,累加),返回余数

{

    int i,c=n/len,y=n%len

    for(i=0i<leni++)

        nums[i]+=c

    return y

}

int *js(int zn,int gn,pv gz)//zn:总数,gn:分组个数,nums:数组,gz:规则函数,返回值:包含每个分组的最终分配数值的数组

{

    int i

    int *nums=(int *)malloc(sizeof(int)*gn)

    meError(nums)

    for(i=0i<gni++)

        nums[i]=0

    nums[gn-1]+=de(nums,zn,gn)//数组初值放平均值,平分后多余值给最后一个元素

    gz(nums,gn)

    return nums

}

void meError(void *p)

{

    if(p==NULL)

    {

        printf("异常:内存申请失败!回车结束程序!\n")

        while(getch()!='\r')

        exit(0)

    }

}