最近快要期末考试了,也没什么特别多时间去学习新的知识,只能好好复习一些学过的知识并加以运用。
下面是一些实例(根据从易到难的顺序排列):
1.定义5个学生结构体类型(姓名、学号、三门课的成绩(高数、英语、C语言)、平均分);输入该生的上述信息并输出。
#include typedef struct student
{
char name[20];
int id;
int score[3];
float aver;
}STUDENT;
void Input(STUDENT *p)
{
scanf("%s%d%d%d%d",&p->name,&p->id,&p->score[0],&p->score[1],&p->score[2]);
p->aver=(p->score[0]+p->score[1]+p->score[2])/3.0;
}
int main()
{
STUDENT st;
printf("请输入姓名,学号,三门课成绩:\n");
Input(&st);
printf("该学生的信息为:\n");
printf("%s\t%d\t%d\t%d\t%d\t%5.2f\n",st.name,st.id,st.score[0],st.score[1],st.score[2],st.aver);
return 0;
}
2.用结构体数组存储学生信息,每个学生有姓名、学号、性别和成绩。输入5名学生信息,按成绩从高到低的顺序输出各学生的全部信息,并将学生信息存入磁盘文件student.txt。
#include #include #define N 5
struct student
{
char name[20];
int id;
char sex[8];
int s;
};
void Input(struct student st[])
{
int i;
for(i=0;i<5;i++)
scanf("%s%d%s%d",st[i].name,&st[i].id,st[i].sex,&st[i].s);
}
void change(struct student st[])
{
int i,j,k;
struct student t;
for(i=0;i<5-1;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(st[k].s
注意:在交换数据时,我在第一次打代码时遇到了一个很常见的问题。就是在通过成绩比较时,只交换了成绩而其余信息并未被交换,导致数据错乱。所以在交换时应交换整个结构体数组,而不是只交换数组中的某一项。
3.建立班级通讯录,每个人的信息形式如下:
姓名 性别 手机 QQ 班级 宿舍
zhangsan 男 13300001111 23784987223 网络1803 1-101
lisi 男 17711110000 43223445344 计科1801 1-203
liqingzhao 女 18991902100 98234523121 计科1802 2-305
wangwu 男 13305782314 52390823349 网络1804 1-603
要求从键盘读入学生信息,并按姓名排序,再将学生信息存入磁盘文件student_list.txt。
#include#include#include#define N 20
struct student
{
char name[20];
char sex[5];
char qq[15];
char number[15];
char clas[20];
char sushe[20];
};
int main()
{
FILE *fp;
struct student t;
struct student txl[N];
int i,n,j;
printf("请输入学生人数:\n");
scanf("%d",&n);
printf("请输入这几个学生的通讯信息并将这几个学生的通讯信息录入文件'student_list.txt'中\n");
printf("(请按照 姓名、性别、手机、qq、班级、宿舍号的顺序写~)\n");
for(i=0;i0)
{
t=txl[j];
txl[j]=txl[j+1];
txl[j+1]=t;
}
}
}
fp=fopen("student_list.txt","w");
for(i=0;i
注意:在根据姓名排序时,不能直接用“、=”进行比较,而应该运用strcmp()函数进行比较。
谢谢阅读 ~~如有不妥,请多指正!