struct运用

来源:互联网 发布:空气质量软件哪个好 编辑:程序博客网 时间:2024/06/05 14:55

一个简单的学生信息管理test


#define _CRT_SECURE_NO_DEPRECATE

#include<stdio.h>
#include<iostream>
using namespace std;
typedef struct LNode{
long id;
char name[20];
double results[5];
double sum;
double average;
struct LNode *next;
}LinkList;


/* 功能新建学生数据链表:输入学生的学号、姓名、5门课成绩,并算出总分和平均分。*/
struct LNode* InitList(struct LNode *L)
{
struct LNode *a;
a = (struct LNode*)malloc(sizeof(struct LNode));
if (a == NULL)
{
exit(0);
}
printf("输入学生的学号、姓名、5门课成绩:\n");
scanf("%d", &a->id);
scanf("%s", &a->name);
double sum = 0;
for (int i=0; i < 5; i++)
{
scanf("%lf", &a->results[i]);
//printf("%f\n", a->results[i]);
sum =sum + a->results[i];
}
a->average = sum / 5;
a->sum = sum;
printf("sum=%4.2lf  average=%4.2lf\n",a->sum,a->average);
a->next = NULL;
if (L == NULL)
{
L = a;
}
else{
LNode *p = L;
while (p->next != NULL){
p = p->next;
}
p->next = a;
}
return L;
}
/*输出学生数据:输出学生的学号、姓名、5门课成绩、总分和平均分*/
void print(struct LNode *L)
{
LNode *p=L;
while (p)
{
double average = p->average;
printf("id:%ld  name:%s  rusults: %.2lf  %.2lf  %.2lf  %.2lf  %.2lf  sum:%.2lf  average:%.2lf",
p->id, p->name, p->results[0], p->results[0], p->results[0], p->results[0], p->results[0],p->sum,p->average );
p = p->next;
}
}


/*添加一个学生记录:按照学号顺序插入一个学生的学号、姓名、5门课成绩,并算出总分和平均分*/
struct LNode* addlist(struct LNode *L)
{
struct LNode *a;
a = (struct LNode*)malloc(sizeof(struct LNode));
if (a == NULL)
{
exit(0);
}
printf("输入学生的学号、姓名、5门课成绩:\n");
scanf("%d", &a->id);
scanf("%s", &a->name);
double sum = 0;
for (int i = 0; i < 5; i++)
{
scanf("%lf", &a->results[i]);
//printf("%f\n", a->results[i]);
sum = sum + a->results[i];
}
a->average = sum / 5;
a->sum = sum;
printf("sum=%4.2lf  average=%4.2lf\n", a->sum, a->average);
a->next = NULL;
if (L == NULL)
{
L = a;
}
else{
if (a->id < L->id)
{
a->next = L;
L->next = NULL;
return a;
}
else if (L->next == NULL){
L->next = a;
return L;
}else {
LNode *p = L, *j = L;
while (p->next != NULL&&p->id < a->id){
j = p;
p = p->next;
}
j->next = a;
a->next = p;
}
}
return L;
}


/*删除一个学生:按照给出学生的学号来删除一个学生。*/
struct LNode* deletel(struct LNode *L, long id)
{
if (L == NULL){ printf("list is NULL"); return L; }
if (L->id == id){  printf("delete %d", id); L = L->next; return L; }
LNode *p = L, *j = L;
while (p->next&&p->id != id){
j = p;
p = p->next;
}
if (p->next == NULL&&p->id != id){
printf("no find.\n");
return L;
}
else{
j->next = p->next;
printf("delete %d", id);
return L;
}
}
/*查找:一是查找指定的学号,*/
struct LNode* findid(struct LNode *L, long id){
LNode *p = L;
while (p){
if (p->id == id){
printf("id:%ld  name:%s  rusults: %.2lf  %.2lf  %.2lf  %.2lf  %.2lf  sum:%.2lf  average:%.2lf",
p->id, p->name, p->results[0], p->results[0], p->results[0], p->results[0], p->results[0], p->sum, p->average);
return L;
}
p = p->next;
}
printf("no find id:%l",id);
}
/*二是查找平均分大于等于85的学生*/
struct LNode* find85(struct LNode *L){
LNode *p = L;
while (p){
if (p->average >=85){
printf("id:%ld  name:%s  rusults: %.2lf  %.2lf  %.2lf  %.2lf  %.2lf  sum:%.2lf  average:%.2lf",
p->id, p->name, p->results[0], p->results[0], p->results[0], p->results[0], p->results[0], p->sum, p->average);
}
p = p->next;
return L;
}
}
/*,三是查找不及格的学生*/
struct LNode* find60(struct LNode *L){
LNode *p = L;
while (p){
for (int i = 0; i < 5; i++){
if (p->results[i] <60){
printf("id:%ld  name:%s  rusults: %.2lf  %.2lf  %.2lf  %.2lf  %.2lf  sum:%.2lf  average:%.2lf",
p->id, p->name, p->results[0], p->results[0], p->results[0], p->results[0], p->results[0], p->sum, p->average);
break;
}
}
p = p->next;
return L;
}
}
int main11()
{
struct LNode *list;
list = NULL;
list = InitList(list);
list = addlist(list);
list=deletel(list, 2013);
print(list);
find60(list);
scanf("%d,%d");
getchar();
return 0;
}
0 0
原创粉丝点击