//å§åï¼å¦å·ï¼è±è¯ï¼è¯æï¼æ°å¦ä¸ç§æ绩
#include <stdio.h>
#include <stdlib.h>
#define maxnumber 30
int student_number;
int count1=0,count2=0,Operate1=3;
FILE *stream;
typedef struct stu{
int idnumber;
char name[20];
double English_score;
double chinese_score;
double math_score;
}Student;
//æå¦å·æåº
void putout_one(Student *sp)
{
for( int j=0;j<10;j++)
printf("******");
printf("\n");
printf(" %d %s %.1f %.1f %.1f\n",(*sp).idnumber,(*sp).name,(*sp).English_score,(*sp).chinese_score,(*sp).math_score);
for( j=0;j<10;j++)
printf("******");
printf("\n");
}
void putout_lot(Student *student)
{
for(int i=0;i<=Operate1;i++)
{
for(int j=0;j<10;j++)
printf("******");
printf("\n");
printf(" %d %s %.1f %.1f %.1f\n",student[i].idnumber,student[i].name,student[i].English_score,student[i].chinese_score,student[i].math_score);
}
for( int j=0;j<10;j++)
printf("******");
printf("\n");
}
void input_student(Student *S)//è¾å
¥æå
¥å¦ççä¿¡æ¯
{
//printf("请è¾å
¥ç¬¬%dä½å¦çï¼å¦å·ï¼ååï¼è¯æï¼è±è¯ï¼æ°å¦ï¼\n",i+1);
scanf("%d",&(*S).idnumber);
scanf("%s",&(*S).name);
scanf("%lf%lf%lf",&(*S).chinese_score,&(*S).English_score,&(*S).math_score);
}
void id_find_in(Student *S,Student *q)//ææ°çå¦çä¿¡æ¯å å
¥è¡¨å
{
Student *p=S,*t;
while(count1<Operate1+1)
{
t=p;
p++;
count1++;
}
*t=*q;
count1=0;
Operate1++;
}
void insert_element(Student *S)//æå
¥å¦çä¿¡æ¯
{
printf("请è¾å
¥1ä½å¦çï¼å¦å·ï¼ååï¼è¯æï¼è±è¯ï¼æ°å¦ï¼\n");
Student *temp=(Student *)malloc(sizeof(Student)),*q=S;
input_student(temp);
id_find_in(S,temp);
}
void delet_element(Student *S,int id_n)
{
Student *p=S,*t;
while(count1<Operate1)
{
if((*p).idnumber==id_n)
{
t=p;
printf("å·²å é¤%då·å¦çä¿¡æ¯\n",(*p).idnumber);
while(count2<Operate1-count1-1)
{
*(t-1)=*(++t);
count2++;
}
break;
}
count1++;
p++;
}
count1=0;
count2=0;
Operate1--;
}
int junge(char*a,char*b)
{
char *p=a,*q=b;
while(*p!='\0')
{
if(*p==*q)
{
p++;
q++;
continue;
}
else
break;
}
if(*p=='\0'&&*q=='\0')
return 1;
else
return 0;
}
void show_stu_element(Student*S,char*sp)//æ¾ç¤ºæ人信æ¯(åè½å·²å®ç°)
{
Student *p=S;
while(count1<Operate1)
{
if(junge((*p).name,sp))
{
printf("å·²æ¾å°æ¤äººï¼%s\n",(*p).name);
putout_one(p);
p=S;
break;
}
else
{
p++;
count1++;
continue;
}
}
if(p!=S)
printf("æ¥æ æ¤äººï¼\n");
count1=0;
}
void id_sort(Student *S)
{
Student *temp=(Student*)malloc(sizeof(Student)),*q=S,*t;
int num=Operate1;
while(count1<Operate1)
{
t=q+1;
while(count2<num)
{
if( (*q).idnumber> (*t).idnumber)
{
*temp=*q;
*q=*t;
*(t)=*temp;
// printf("%d\n",(*t).idnumber);
}
count2++;
t++;
// t=t+sizeof(Student); //è¿æ ·æ æ³å®ç°why?
}
num--;
q++;
count2=0;
count1++;
//q=q+sizeof(Student);
}
count1=0;
count2=0;
}
void count_passnumber(Student *S)
{
Student *p=S;
int e_p_number=0,m_p_number=0,c_p_number=0,num=0;
while(num<=Operate1)
{
if(p->English_score>=60)
e_p_number++;
if(p->math_score>=60)
m_p_number++;
if(p->chinese_score>=60)
c_p_number++;
num++;
p++;
}
printf("/***å¦çæ»äººæ°=ï¼%d\n",Operate1);
printf("/***è±è¯è¿å
³äººæ°=%d æ°å¦è¿å
³äººæ°=%d è¯æè¿å
³äººæ°=%d\n",e_p_number,m_p_number,c_p_number);
printf("/***è±è¯æç§äººæ°=%d æ°å¦æç§äººæ°=%d è¯ææç§äººæ°=%d\n",Operate1+1-e_p_number,Operate1+1-m_p_number,Operate1+1-c_p_number);//å 为æ°ç»ä¸æ æ¯ä»0å¼å§ç
}
void main()
{
Student student[maxnumber];
stream=freopen("in.txt","r",stdin);
int Operate=3;int i;int id_n;
char student_element[20];
for(i=0;i<Operate1;i++)
{
printf("请è¾å
¥ç¬¬%dä½å¦çï¼å¦å·ï¼ååï¼è¯æï¼è±è¯ï¼æ°å¦ï¼\n",i+1);
scanf("%d",&student[i].idnumber);
scanf("%s",&student[i].name);
scanf("%lf%lf%lf",&student[i].chinese_score,&student[i].English_score,&student[i].math_score);
}
//fclose(stream);
for( i=0;Operate!=0;i++)
{
printf("è¾å
¥ï¼0.éåºã 1.è¾å
¥å¦çä¿¡æ¯ 2.æå§åæ¥æ¾å¹¶å é¤å¦çä¿¡æ¯ \n3.æå¦å·æåº 4.æ¥æ¾æ¾ç¤ºä¸ä½å¦çä¿¡æ¯ \n5.æ¾ç¤ºç»è®¡è®°å½ï¼æåæ°ãæ¯ç§å¹³ååï¼ 6.è¾åºæ¯ç§åæ ¼äººæ°åä¸åæ ¼äººæ° 7(default).æä½å®æï¼çå¾
ç¨æ·è¾å
¥ï¼\n");
scanf("%d",&Operate);
switch(Operate)
{
case 1:insert_element(student); break;
case 2: scanf("%d",&id_n); delet_element(student,id_n); break;
case 3:id_sort(student);break;
case 4:scanf("%s",student_element); show_stu_element(student,student_element);break;
case 5:putout_lot(student);break;
case 6:count_passnumber(student);break;
default: printf("请è¾å
¥ï¼\n");continue;
}
if(Operate==0)
break;
}
}
温馨提示:答案为网友推荐,仅供参考