结构体变量初始化。注意字母输入时用单引号’’ 如下M
#include <stdio.h>
int main()
{
struct Student
{
long int num;
char name[20];
char sex; //注意字母输入时用单引号'' 如下M。
char addr[20];
}a = {100010,"Li Ming",'M',"Beijing 123 road"};
printf(" NO:%d\n Name:%s\n sex:%c\n addr:%s\n",a.num,a.name ,a.sex ,a.addr );
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
struct Student
{
int num;
char name[20];
float score;
}student1,student2;
printf("input 2 student:\n");
scanf("%d%s%f",&student1.num,student1.name,&student2.score);
//注意数字变量&不可少。数组无需&(地址)本身代表首元素地址。
scanf("%d%s%f", &student2.num, student2.name,& student2.score);
printf("Higher:\n");
if (student1.score > student2.score)
{
printf("%d %s %f\n", student1.num, student1.name, student1.score);
}
else if (student1.score < student2.score)
{
printf("%d %s %f\n", student2.num, student2.name, student2.score);
}
else
{
printf("%d %s %f\n", student1.num, student1.name, student1.score);
printf("%d %s %f\n", student2.num, student2.name, student2.score);
}
return 0;
}
scanf("%d%s%f",&student1.num,student1.name,&student2.score);
//注意数字变量&不可少。数组无需&(地址)本身代表首元素地址。
//三候选人被投票,统计三人各个票数。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
struct Person
{
char name[20];
int count;
}leader[3] = {"li",0,"zhang",0,"liu",0};
int main()
{
int i, j;
char leader_name[20];
for (i = 0; i < 5; i++)
{
printf("输入选票名:\n");
scanf("%s", leader_name);
for (j = 0; j < 3; j++)
{
if (strcmp(leader[j].name, leader_name) == 0)
{
leader[j].count++;
}
}
}
printf("result:\n");
for (i = 0; i < 3; i++)
{
printf("%s %d\n", leader[i].name, leader[i].count);
}
return 0;
}
例子9.4 有n个学生的信息(学号、姓名、成绩),按照成绩高低输出信息。
//例9.4 有n个学生的信息(学号、姓名、成绩),按照成绩高低输出信息。
#include <stdio.h>
#include <string.h>
struct Stu
{
int num;
char name[20];
float score;
};
int main()
{
struct Stu stu[5] = { {1111,"liming",55}, {3333,"liujun",99}, {4444,"daming",88}, {5555,"xiaohong",90.9}, {2222,"zhangkun",66} };
struct Stu temp;
int i,j;
//从大到小排序;
for (i = 0; i < 4; i++)
{
for (j = i + 1; j < 5; j++)
{
if (stu[j].score>stu[i].score)
{
temp = stu[j];
stu[j] = stu[i];
stu[i] = temp;
}
}
}
printf("排序后:\n");
for (i = 0; i < 5; i++)
{
printf("%d %s %5.3f\n",stu[i].num,stu[i].name,stu[i].score);
}
return 0;
}
9.5通过结构体指针变量输出结构体变量中的成员信息。
//通过结构体指针变量输出结构体变量中的成员信息。
#include <stdio.h>
#include <string.h>
int main()
{
struct Stu
{
long num;
char name[20];
char sex;
float score;
};
struct Stu st1;
struct Stu *p;
p = &st1;
st1.num = 1111111222; //注意尝试不同的赋值与输出方式。
strcpy(st1.name, "limong");
// strcpy(st1.name[20], "limong"); //不对 因为name[20]指字符串中的第21位字符。类型不匹配。
p->sex = 'M';
(*p).score = 99;
printf("%ld %s %c %f \n", st1.num, st1.name, st1.sex, st1.score);
printf("%ld %s %c %f \n", p->num, (*p).name, p->sex, p->score);
return 0;
}
9.6 有3个学生的信息,放在结构体数组中,要求输出全部学生的信息。
用指结构体变量的指针来处理。
//9.6 有3个学生的信息,放在结构体数组中,要求输出全部学生的信息。
// 用指结构体变量的指针来处理。
#include <stdio.h>
#include <string.h>
struct Stu
{
int num;
char name[20];
char sex;
float score;
};
struct Stu stu[3] = { {22222,"zhangkun",'W',56}, {3333,"daming",'M',87}, {11111,"liming",'M',98} };
int main()
{
struct Stu *p;
printf("信息如下:\n");
for (p = stu; p < stu+3; p++)
{
printf("%-6d %-20s %c %5.3f\n",p->num,p->name,p->sex,p->score);
//使用-号相左对齐 控制相同的长度 从而输出美观。
}
return 0;
}
9.7 有n个结构体变量,内含学生学号、姓名和三门课程的成绩。要求输出平均成绩最高的学生信息。
包括学号、姓名、三门课程成绩和平均成绩。思路 三个函数:输入函数(输入和求平均成绩)、max函数、输出函数。
//9.7 有n个结构体变量,内含学生学号、姓名和三门课程的成绩。要求输出平均成绩最高的学生信息。
//包括学号、姓名、三门课程成绩和平均成绩。
//思路 三个函数:输入函数(输入和求平均成绩)、max函数、输出函数。
#include <stdio.h>
#define N 3
struct Stu
{
int num;
char name[20];
float score[3];
float aver;
};
int main()
{
void input(struct Stu stu[]);
struct Stu max(struct Stu stu[]); //最大成绩函数返回的是最好成绩的学生的信息。
void print(struct Stu stu); //只输出一个最大的学生 无需数组。
struct Stu stu[N];
struct Stu *p;
p = stu;
input(p);
struct Stu max(p);
print(max(p));
return 0;
}
void input(struct Stu stu[])
{
int i;
printf("输入各个学生信息:\n");
for (i = 0; i < N; i++)
{
scanf("%d%s%f%f%f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2])/3.0;
}
}
struct Stu max(struct Stu stu[])
{
int i,m=0;
for (i = 0; i < 3; i++)
{
if (stu[i].aver>stu[m].aver)
{
m = i;
}
}
return(stu[m]);
}
void print(struct Stu stu)
{
printf("\n最高成绩学生是:\n");
printf("%d %s %f %f %f %f", stu.num, stu.name, stu.score[0], stu.score[1], stu.score[2],stu.aver);
}