C语言结构体,求大佬指点这个程序错在哪?

 

代码:
 

#include<stdio.h>

#include<string.h>

struct date

{

  int year;

  int month;

  int day;  

};

struct stu

{

  int num;

  char name[20];

  char sex;

  struct date birth;

  float score;

};  

int main()

{

  struct stu s1 = {10010,"zhangsan",'m',2000,5,4,84.5}, s2, s3;

scanf("%d%s%c%d%f",&s2.num,&s2.name,&s2.sex,&s2.date,&s2.score);

 s3=s1;

 s1=s2;

 s2=s3;

 printf("学号:%d\n姓名:%s\n性别:%c\n出生日期:%d\n成绩:\n",s1.num,s1.name,s1.sex,s1.date,s1.score);

 printf("学号:%d\n姓名:%s\n性别:%c\n出生日期:%d\n成绩:\n",s2.num,s2.name,s3.sex,s3.date,s3.score);

  return 0;

}

运行结果:

 

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <string.h>
struct data
{
	int year;
	int month;
	int day;
};
struct stu
{
	int num;
	char name[20];
	char sex;
	struct data birth;
	float score;
};
int main()
{
	struct stu s1 = {10010,"zhangsan",'m',2000,5,4,84.5},s2,s3;
	printf("请输入学生2的学号:");
	scanf("%d",&s2.num);
	printf("请输入写生2的姓名:");
	scanf("%s",s2.name);
	printf("请输入学生2的性别:");
	scanf(" %c%*c",&s2.sex);
	printf("请输入学生2的生日:");
	scanf("%d %d %d",&s2.birth.year,&s2.birth.month,&s2.birth.day);
	printf("请输入学生2的成绩:");
	scanf("%f",&s2.score);
	//交换
	s3 = s1;
	s1 = s2;
	s2 = s3;
	//输出s1和s2
	printf("学号:%d\n",s1.num);
	printf("姓名:%s\n",s1.name);
	printf("性别:%c\n",s1.sex);
	printf("出生日期:%d年%d月%d日\n",s1.birth.year,s1.birth.month,s1.birth.day);
	printf("成绩:%g\n",s1.score);
	printf("学号:%d\n",s2.num);
	printf("姓名:%s\n",s2.name);
	printf("性别:%c\n",s2.sex);
	printf("出生日期:%d年%d月%d日\n",s2.birth.year,s2.birth.month,s2.birth.day);
	printf("成绩:%g\n",s2.score);
	return 0;
}

#include <stdio.h>

#include <string.h>

struct data

{

 int year;

 int month;

 int day;

};

struct stu

{

 int num;

 char name[20];

 char sex;

 struct data birth;

 float score;

};

int main()

{

 struct stu s1 = {10010,"zhangsan",'m',2000,5,4,84.5},s2,s3;

 printf("请输入学生2的学号:");

 scanf("%d",&s2.num);

 printf("请输入写生2的姓名:");

 scanf("%s",s2.name);

 printf("请输入学生2的性别:");

 scanf(" %c",&s2.sex);

 printf("请输入学生2的生日:");

 scanf("%d %d %d",&s2.birth.year,&s2.birth.month,&s2.birth.day);

 printf("请输入学生2的成绩:");

 scanf("%f",&s2.score);

 //交换

 s3 = s1;

 s1 = s2;

 s2 = s3;

 //输出s1和s2

 printf("学号:%d\n",s2.num);

 printf("姓名:%s\n",s2.name);

 printf("性别:%c\n",s2.sex);

 printf("出生日期:%d年%d月%d日\n",s2.birth.year,s2.birth.month,s2.birth.day);

 printf("成绩:%.1f\n",2..score);

 printf("学号:%d\n",s1.num);

 printf("姓名:%s\n",s1.name);

 printf("性别:%c\n",s1.sex);

 printf("出生日期:%d年%d月%d日\n",s1.birth.year,s1.birth.month,s1birth.day);

 printf("成绩:%g\n",s1.score);

 return 0;

}