谭浩强c语言课后习题笔记[第9章]部分

第九章 结构体

9.1 定义结构体年月日,输入年月日计算改日是本年第几天

#include<stdio.h>

typedef struct setdata{
	int year;
	int month;
	int day; 
}Data; 

int isday(Data n);

int main()
{ 
	Data n;
	printf("请输入年月日,格式与1997/01/01一致:\n");
	scanf("%d/%d/%d",&n.year,&n.month,&n.day);
	
	printf("%d/%d/%d 是%d 年的第 %d 天",n.year,n.month,n.day,n.year,isday(n)); 
	
	return 0;
}

int isday(Data n)
{
	int i,sum=0,monthend[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	if((n.year%4==0&&n.year%100)||n.year%400==0) //判断这一年是否为闰年 
		monthend[2]=29;
	for(i=1;i<n.month;i++) //求month-1之前所有月份的最大天数 
		sum+=monthend[i];
	sum+=n.day; //再加上month当月的天数day的值 
	
	return sum;  //返回这是概念的第几天 
}

9.3 打印函数打印学生成绩数组构成的结构体

#include<stdio.h>
#define N 80

typedef struct setstus{
	int num;
	char name[N];
	int score[3]; 
}Studentlist; 
void printfstudent(Studentlist n);

int main()
{ 
	Studentlist n1;
	printf("请输入学生信息,学号 姓名 成绩1 成绩2 成绩3:\n");
	scanf("%d %s %d %d %d",&n1.num,&n1.name,&n1.score[0],&n1.score[1],&n1.score[2]);
	
	printfstudent(n1);
	
	return 0;
}

void printfstudent(Studentlist n)
{
	printf("输出学生信息: %03d %s %d %d %d",n.num,n.name,n.score[0],n.score[1],n.score[2]); 	
}

9.4 输入函数打印学生成绩数组构成的结构体

#include<stdio.h>
#define N 80

typedef struct setstus{
	int num;
	char name[N];
	int score[3]; 
}Studentlist; 
void printfstudent(Studentlist n);
void input(Studentlist *n);

int main()
{ 
	Studentlist n1;
	input(&n1);
	
	printfstudent(n1);
	
	return 0;
}

void input(Studentlist *n)
{
	printf("请输入学生信息,学号 姓名 成绩1 成绩2 成绩3:\n");
	
	scanf("%d %s %d %d %d",&n->num,&n->name,&n->score[0],&n->score[1],&n->score[2]);
}
void printfstudent(Studentlist n)
{
	printf("输出学生信息: %03d %s %d %d %d",n.num,n.name,n.score[0],n.score[1],n.score[2]); 	
}


9.5 学生成绩

#include<stdio.h>
#define N 80
#define M 10
typedef struct setstus{
	int num;
	char name[N];
	int score[3]; 
}Studentlist; 
void printfstudent(Studentlist n);
void input(Studentlist *n);
void avescore(Studentlist n[]);
void highestscore(Studentlist n[]);
int main()
{ 
	Studentlist n[M];
	int i;
	for(i=0;i<M;i++)
		input(&n[i]);
	
	
	avescore(n);
	highestscore(n);
	
	return 0;
}

void input(Studentlist *n)
{
	printf("请输入学生信息,学号 姓名 成绩1 成绩2 成绩3:\n");
	
	scanf("%d %s %d %d %d",&n->num,&n->name,&n->score[0],&n->score[1],&n->score[2]);
}
void printfstudent(Studentlist n)
{
	printf("输出学生信息: %03d %s %d %d %d",n.num,n.name,n.score[0],n.score[1],n.score[2]); 	
}
void avescore(Studentlist n[])
{
	int i,j,sum=0;
	double ave;
	for(i=0;i<M;i++)
	{
		for(sum=0,j=0;j<3;j++)
			sum+=n[i].score[j];
		ave=sum/3;
		printf("[%d] %s 同学的平均成绩是%f\n",n[i].num,n[i].name,ave); 
	}	
}
void highestscore(Studentlist n[])
{
	int i,j,sum=0,index=-1;
	double ave,max=0;
	for(i=0;i<M;i++)
	{
		for(sum=0,j=0;j<3;j++)
			sum+=n[i].score[j];
		ave=sum/3;
		if(max<ave)
		{
			index=i;
			max=ave;	
		}		
	}
	printf("输出最高分同学的信息:%d %s %d %d %d 平均分为 %f",n[index].num,n[index].name,n[index].score[0],n[index].score[1],n[index].score[2],max);
}

发布了137 篇原创文章 · 获赞 8 · 访问量 4336

猜你喜欢

转载自blog.csdn.net/qq_35891520/article/details/105059040