头文件
#ifndef HERO_H_INCLUDED
#define HERO_H_INCLUDED
typedef struct _pubTime{
int year;
int month;
int day;
}PubTime;
typedef struct _hero{
char * name;
char sex;
char *job;
int life; //英雄生命
double speed; //攻击速度
char *ability;//英雄特殊能力
PubTime pubTime; //上线时间
}Hero;
void Input();
void ShowAvg();
void Show();
#endif // HERO_H_INCLUDED
#include"Hero.h"
#include<stdio.h>
Hero heros[100] = {
{"引流蜘蛛接",'m',"刺客",579,0.64,"位移",{2018,9,8}},
{"情色仙女",'f',"法师",480,0.64,"减速",{2018,8,8}},
{"接风建好",'m',"战士",509,0.67,"护盾",{2018,9,6}}
};
int count = 3; //当前的英雄的总数
void Input()
{
//首先录入内容
//第一个录入完毕后 询问是否继续录入
char answer = 'y';
do{
if(count == 100)
{
printf("英雄的栏位已满,请购买!");
break;
}
printf("当前录入第%d位的英雄信息:",count +1);
printf("英雄名称:");
heros[count].name = (char *)malloc(50);
scanf("%s",heros[count].name);
printf("性别:");
fflush(stdin);
heros[count].sex = getchar();
fflush(stdin);
printf("职业:");
heros[count].job = (char *)malloc(50);
scanf("%s",heros[count].job);
fflush(stdin);
heros[count].life = 1000;
heros[count].speed = 0.644;
heros[count].ability = "上天入地";
heros[count].pubTime.year = 2016;
heros[count].pubTime.month = 8;
heros[count].pubTime.day = 3;
count++;
printf("是否继续录入?(y/n)\n");
answer = getch(); //用户输入键后就立即触发
}while(answer == 'y' || answer == 'Y');
}
void ShowAvg()
{
int lifeOfSum = 0;
double avg = 0;
int i;
for(i=0;i<count;i++)
{
lifeOfSum += (heros + i)->life;
}
//计算平均值
avg = lifeOfSum*1.0 / count;
printf("生命值的平均值为:%.3lf\n",avg);
}
void show()
{
//计算结构数组的大小
// int len = sizeof(heros)/sizeof(Hero);
//printf("结构数组的元素个数:%d",len);
// printf("请输入英雄的名称:");
//heros[0].name = (char *)malloc(50);
// scanf("%s",heros[0].name);
int i;
printf("\n");
for(i=0;i<count;i++)
{
printf("%s\t%s\t%d-%d-%d\n",(heros+i)->name,
heros[i].job,heros[i].pubTime.year,heros[i].pubTime.month,heros[i].pubTime.day);
}
}
#include <stdio.h>
#include <stdlib.h>
#include"Hero.h"
extern Hero heros[100];
int main()
{
Input();
show();
ShowAvg();
return 0;
}