分析题意:
一、要定义两个结构体,一个是日期年月日,一个是员工。
二、程序包含三个功能: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
}
你试试你看,如果可以,要给分呀。。。呵呵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)