1. 结构体的引入(98.8.1)
#include <stdio.h>
struct Student
{
int num;
char name[20];
char sex;
int age;
double score;
char addr[20];
};
struct Date
{
int year;
int month;
int day;
};
struct Income
{
int profit;
int num;
};
int main()
{
return 0;
}
2. 定义结构体和使用变量(99.8.2)
#include <stdio.h>
#include <string.h>
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};
int main()
{
int a;
struct Student stu1;
struct Student stu2;
a = 10;
stu1.num = 1;
strcpy(stu1.name,"Jessie");
stu1.sex ='M';
stu1.age = 24;
stu1.score = 98.5;
strcpy(stu1.addr,"郑州");
printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
stu1.num,stu1.name,stu1.sex,stu1.age,stu1.score,stu1.addr);
return 0;
}
3. 小应用(100.8.3)
- demo02.c 比较两个学生的成绩,输出成绩高的学生信息;用ifelse的方法
#include <stdio.h>
#include <string.h>
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};
int main()
{
int a;
struct Student stu1;
struct Student stu2={2,"Oxygen",'M',20,99.5,"洛阳"};
a = 10;
stu1.num = 1;
strcpy(stu1.name,"Jessie");
stu1.sex ='M';
stu1.age = 24;
stu1.score = 98.5;
strcpy(stu1.addr,"郑州");
if(stu1.score<stu2.score){
printf("成绩比较好的是:\n");
printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
stu2.num,stu2.name,stu2.sex,stu2.age,stu2.score,stu2.addr);
}else{
printf("成绩比较好的是:\n");
printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
stu1.num,stu1.name,stu1.sex,stu1.age,stu1.score,stu1.addr);
}
return 0;
}
- demo03.c 比较两个学生的成绩,输出成绩高的学生信息;用max的方法
#include <stdio.h>
#include <string.h>
struct Student
{
int num;
char name[32];
char sex;
int age;
double score;
char addr[32];
};
int main()
{
int a;
struct Student stu1;
struct Student stu2={2,"Oxygen",'M',20,99.5,"洛阳"};
struct Student max;
stu1.num = 1;
strcpy(stu1.name,"Jessie");
stu1.sex ='M';
stu1.age = 24;
stu1.score = 99.59;
strcpy(stu1.addr,"郑州");
max=stu1;
if(stu1.score<stu2.score){
max=stu2;
}
printf("成绩比较好的是:\n");
printf("学号:%d,姓名:%s,性别:%c,年龄:%d,分数:%lf,地址:%s\n",
max.num,max.name,max.sex,max.age,max.score,max.addr);
return 0;
}
#include <stdio.h>
#include <string.h>
struct Student
{
int num;
char name[32];
char sex[32];
int age;
double score;
char addr[32];
};
int main()
{
int a;
struct Student stu1;
struct Student stu2;
struct Student max;
printf("请输入第一个同学的信息:\n");
printf("请输入序号:\n");
scanf("%d",&stu1.num);
printf("请输入姓名:\n");
scanf("%s",&stu1.name);
printf("请输入性别:\n");
scanf("%s",&stu1.sex);
printf("请输入年龄:\n");
scanf("%d",&stu1.age);
printf("请输入分数:\n");
scanf("%lf",&stu1.score);
printf("请输入所在地区:\n");
scanf("%s",&stu1.addr);
printf("请输入第二个同学的信息:\n");
printf("请输入序号:\n");
scanf("%d",&stu2.num);
printf("请输入姓名:\n");
scanf("%s",&stu2.name);
printf("请输入性别:\n");
scanf("%s",&stu2.sex);
printf("请输入年龄:\n");
scanf("%d",&stu2.age);
printf("请输入分数:\n");
scanf("%lf",&stu2.score);
printf("请输入所在地区:\n");
scanf("%s",&stu2.addr);
max=stu1;
if(stu1.score<stu2.score){
max=stu2;
}
printf("成绩比较好的是:\n");
printf("学号:%d,姓名:%s,性别:%s,年龄:%d,分数:%lf,地区:%s\n",
max.num,max.name,max.sex,max.age,max.score,max.addr);
return 0;
}
4. 结构体和数组的结合(101.8.4)
#include <stdio.h>
struct Student
{
int num;
char name[32];
char sex[32];
int age;
double score;
char addr[32];
};
int main()
{
int arr[3]={2,5,4};
int len;
struct Student arr2[3]={
{1,"Jessie","男",24,99.59,"郑州"},
{2,"Oxygen","男",20,99.5,"洛阳"},
{3,"Zhouzhou","男",21,97.6,"吉林"}
};
len=sizeof(arr2)/sizeof(arr2[0]);
for(int i=0;i<len;i++){
printf("学号:%d,姓名:%s,性别:%s,年龄:%d,分数:%lf,地址:%s\n\n",
arr2[i].num,arr2[i].name,arr2[i].sex,arr2[i].age,arr2[i].score,arr2[i].addr);
}
return 0;
}
5. 结构体数组应用之选票系统(102.8.5)
#include <stdio.h>
#include <string.h>
struct XuanMin
{
char name[32];
int tickets;
};
int main()
{
struct XuanMin xm[3];
struct XuanMin max;
int i,j;
int len = sizeof(xm)/sizeof(xm[0]);
char tmpName[32];
int mark = 0;
int feiPiao = 0;
for(i = 0; i<len; i++){
xm[i].tickets = 0;
printf("请输入第%d个选民的名字:\n",i+1);
scanf("%s",xm[i].name);
}
for(i=0;i<5;i++){
mark = 0;
printf("请输入你要投给谁:\n");
memset(tmpName,'\0',sizeof(tmpName));
scanf("%s",tmpName);
for(j = 0;j<len; j++){
if(strcmp(tmpName, xm[j].name) == 0){
xm[j].tickets++;
mark = 1;
}
}
if(mark == 0){
printf("没有此候选人,放弃\n");
feiPiao++;
}
}
for(i=0;i<len;i++){
printf("名字:%s,票数:%d\n",xm[i].name,xm[i].tickets);
}
max = xm[0];
for(i=1;i<len;i++){
if(max.tickets < xm[i].tickets){
max = xm[i];
}
}
printf("%s以%d票当选!废票有%d票。\n",max.name,max.tickets,feiPiao);
}