结构体类型
1.定义和使用结构体变量
#include <stdio.h>
struct date
{
int year;
int mouth;
int day;
};
struct student
{
int inum;
char cname[10];
struct date birthday;
double score;
}st3= { 103,"王五",{1779,12,29},98 },st4= { 104,"三毛",{1992,12,29},98 };
struct student st1 = { 101,"张三",{2020,12,29},98 }, st2= { 102,"李四",{1989,12,29},99 };
int main()
{
printf("No.1:%d %s %d-%d-%d %.1lf\n", st1.inum, st1.cname, st1.birthday, st1.score);
printf("No.2:%d %s %d-%d-%d %.1lf\n", st2.inum, st2.cname, st2.birthday, st2.score);
printf("No.3:%d %s %d-%d-%d %.1lf\n", st3.inum, st3.cname, st3.birthday, st3.score);
printf("No.4:%d %s %d-%d-%d %.1lf\n", st4.inum, st4.cname, st4.birthday, st4.score);
return 0;
}
2.使用结构体数组
#include <stdio.h>
struct date
{
int year;
int mouth;
int day;
};
struct student
{
int inum;
char cname[10];
struct date birthday;
double score;
}st[4]={ { 103,"王五",{1779,12,29},98 },
{ 104,"三毛",{1992,12,29},98 },
{ 101,"张三",{2020,12,29},98 },
{ 102,"李四",{1989,12,29},99 }
};
int main()
{
for(int i=0;i<4;i++)
printf("No.%d: %d %s %d-%d-%d %.1lf\n", i + 1, st[i].inum, st[i].cname, st[i].birthday, st[i].score);
return 0;
}
#include <stdio.h>
struct PersonS
{
char name[20];
int iCount;
}leader[3] = { {"li",0},{"zhang",0},{"wang",0} };
int main()
{
char lname[20];
for (int i = 1; i <= 10; i++)
{
printf("请输入候选人的姓名(li zhang wang):");
scanf_s("%s", lname, 20);
for (int j = 0; j < 3; j++)
{
if (strcmp(lname, leader[j].name) == 0)
leader[j].iCount++;
}
}
for (int i = 0; i < 3; i++)
{
printf("候选人%s:%d票\n", leader[i].name, leader[i].iCount);
}
printf("\n\n");
return 0;
}
3.结构体指针
#include <stdio.h>
struct date
{
int year;
int mouth;
int day;
};
struct student
{
int inum;
char cname[10];
struct date birthday;
double score;
}st[4] = { { 103,"王五",{1779,12,29},98 },
{ 104,"三毛",{1992,12,29},98 },
{ 101,"张三",{2020,12,29},98 },
{ 102,"李四",{1989,12,29},99 }
};
int main()
{
struct student *ps = st;
printf("\n【结构体数组输出学生信息】\n");
for (int i = 0; i < 4; i++)
printf("No.%d: %d %s %d-%d-%d %.1lf\n", i + 1, st[i].inum, st[i].cname, st[i].birthday, st[i].score);
printf("\n\n【结构体指针第一种形式输出学生信息】\n");
for (int i = 0; i < 4; i++)
printf("No.%d: %d %s %d-%d-%d %.1lf\n", i + 1, (*(ps + i)).inum, (*(ps + i)).cname, (*(ps + i)).birthday, (*(ps + i)).score);
printf("\n\n【结构体指针第二种形式输出学生信息】\n");
for (int i = 0; i < 4; i++)
printf("No.%d: %d %s %d-%d-%d %.1lf\n", i + 1, (ps + i)->inum, (ps + i)->cname, (ps + i)->birthday, (ps + i)->score);
return 0;
}