c语言编程:建立一个结构体数组?

c语言编程:建立一个结构体数组?,第1张

分析题意:

一、要定义两个结构体,一个是日期年月日,一个是员工。

二、程序包含三个功能:1、结构数组的输入。2、结构数组的输出。3、统计平均工资。根据编程习惯,三功能要写成独立函数,方便扩展和调用。

ps:员工数量定义成常斗肢握量,也为编程习惯,便于修改。另外,日期验证我只写了月份检测给你参考。需扩展,自行编写函数验证。

#include <stdio.h>

#define M 3//最大员工数量

typedef struct date

{

  int year

  int month

  int day

}YMD

typedef struct employee

{

  int id//工号

  char name[20]//姓名

  YMD date//日期

  int wage

}EME

void inputInfo(EME emes[])//输入

void outputInfo(EME emes[])//输出

float getAvg(EME emes[])//求平均工资

int main()

{

  EME emes[M]//员工结构体数组

  inputInfo(emes)

  outputInfo(emes)

  printf("平均工资:%f",getAvg(emes))

  return 0

}

void inputInfo(EME emes[])

{

  int i

  for(i=0i<Mi++)

  {

      printf("请输入员工%d的信息:\n",i+1)

      printf("工号:"),scanf("%d",&emes[i].id)

      printf("姓名:"),scanf("%s",emes[i].name)

      printf("日期(分别输入年月日,空格分割):"),scanf("%d%d%d"饥厅,&emes[i].date.year,&emes[i].date.month,&emes[i].date.day)

      if(emes[i].date.month>12 || emes[i].date.month<=0)//日期输入的验证不通过时,重新输入,验证可单独写函数,这里只做参考!

      {

          printf("输入日期不符合,请重新输入!\n\n"),i--

          continue

      }

      printf("工资:"),scanf("%d",&emes[i].wage)

      printf("\n")

  }

}

void outputInfo(EME emes[])

{

  int i

  printf("所有员工的信息为空庆:----------------------------\n")

  for(i=0,printf("员工%d的信息:\n",i+1)i<Mi++)

  {

      printf("工号:%d\n",emes[i].id)

      printf("姓名:%s\n",emes[i].name)

      printf("日期:%04d-%02d-%02d\n",emes[i].date.year,emes[i].date.month,emes[i].date.day)

      printf("工资:%d\n",emes[i].wage)

      printf("\n")

  }

}

float getAvg(EME emes[])

{

  int i

  float sum=0

  for(i=0i<Mi++)

      sum+=emes[i].wage

  return sum/M

}

int main()

{int mat[3][4]

mat[0][0]=1

for (int i=1i<=3i++)

{for (int j=1j<=4j++)

 {printf("请输入数组的第%d行第%d列的元素\n",i,j)

 scanf ("%d",&mat[i-1][j-1])

 }

}

printf("这个二维数组宽胡是:\n"慎派拦)

for (int m=0m<3m++)

{for (int n=0n<4n++)

{printf ("%d 羡手 ",mat[m][n])

}

printf ("\n")

}

}

/*编写一个程序,定义一个学悉改告生结构体数组存储学生信息(姓名、学号、家庭住址),

分别定义一个添加和删除的函数,实现学生数组的添加、按照学号进行删除功能。*/

#include<stdio.h>

#include<string.h>

struct student

{

char name[20],address[20]

char xuehao[20]

}

main()

{

struct student stu[20]

int i=0,j,m

char ch[10]

printf("\n请添加学生信息\n")

do{

printf("\n请输入学生姓名\n")

gets(stu[i].name)

printf("\n请输入学生学号\n")

gets(stu[i].xuehao)

printf("\n请输入学生家庭住址\n")

gets(stu[i].address)

i++

printf("是否继续添加?y or n\n")

gets(ch)

m=strcmp(ch,"y")

}while(m==0)

printf("是否删除学睁明生信息\n")

gets(ch)

m=strcmp(ch,"y")

while(m==0||i==0)

{

printf("请输入要删的学生的编号,注意是从零开始的\n")

scanf("%d",&m)

for(j=mj<ij++)

{

strcpy(stu[j].name,stu[j+1].name)

strcpy(stu[j].xuehao,stu[j+1].xuehao)

strcpy(stu[j].address,stu[j+1].address)

}

i--

if(i!=0)

{printf("是否继续删除学生信息\n")

scanf("%s",ch)

m=strcmp(ch,"y")

}

}

if(i==0)

printf("没有学生信息\n")

for(j=0j<ij++)

{

printf("歼陪%s %s %s\n",stu[j].name,stu[j].xuehao,stu[j].address)

}

return 0

}

你试试你看,如果可以,要给分呀。。。呵呵


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12370561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存