10 명의 학생 이 있 는데 각 학생 의 데 이 터 는 학 번, 성명, 3 개의 과정 성적 을 포함 하고 키보드 에서 10 개의 학생 데 이 터 를 입력 하여 3 개의 과정 총 평균 성적 과 최고 점 수 를 받 은 학생 의 데이터 (학 번, 성명, 3 개의 과정 성적, 평균 점수 포함) 를 수출 하도록 요구한다.
방법 1:
#include
struct student
{
int num;
char name[10];
float score[3];
float aver;
}stu[10];
void input(struct student s[], int n);
void average(struct student s[], int n);
void high_score(struct student s[], int n);
int main()
{
input(stu, 10);
average(stu, 10);
high_score(stu, 10);
return 0;
}
void input(struct student s[], int n)
{
int i, j;
for (i=0; i<n; i++)
{
printf("Please enter No.%d student's num name score:",i+1);
scanf("%d %s", &s[i].num, s[i].name);
for (j=0; j<3; scanf("%f", &s[i].score[j++]));
}
}
void average(struct student s[], int n)
{
int i, j;
float sum,total=0;
printf("
");
for (i=0; i<n; i++)
{
sum=0;
for(j=0; j<3; j++)
{
sum+=s[i].score[j];// i
}
printf("The average score of No.%d is %.2f
", s[i].num, sum/3);//
total+=sum;// 10 30
}
printf("Total Average: %.2f
", total/30.0);// 10 30
}
void high_score(struct student s[], int n)
{
int i, j;
float sum;
struct student temp;
for (i=0; i<n; i++)
{
sum=0;
for(j=0; j<3; j++)
{
sum+=s[i].score[j];
}
s[i].aver=sum/3;
}
for (i=0; i<n; i++)
{
for (j=i+1; j<n; s[i].aver<s[j].aver ? temp=s[i], s[i]=s[j], s[j]=temp, j++ : j++);
}
printf("The num and name of the student that achieved the highest scores are:%d %-5s
", s[0].num, s[0].name);//
printf("His(Her) three scores are:");
for (i=0; i<3; printf("%.2f ", s[0].score[i]),i++);//
printf("
");
printf("His(Her) average is:%.2f
", s[0].aver);//
}
방법 2:
#include
#include
struct Student
{
int num;
char name[10];
float score[3];
float aver;
};
void input(struct Student *st);
void print(struct Student *st);
int main()
{
struct Student *stu=(struct Student*)malloc(10*sizeof(struct Student));
input(stu);
print(stu);
return 0;
}
void input(struct Student *st)
{
int i,j;
struct Student *p;
for (p=st, i=0; p<st+10; p++, i++)
{
printf("Please enter No.%d student's num name score:", i+1);
scanf("%d %s", &(p+i)->num, (p+i)->name);
for (j=0; j<3; j++)
{
scanf("%f",&p->score[j]);
}
}
}
void print(struct Student *st)
{
int i, j;
float sum[10], total=0, max;
printf("
");
struct Student *p;
for (p=st, i=0; p<st+10; p++, i++)
{
sum[i]=0;
for(j=0; j<3; j++)
{
sum[i]+=p->score[j];// i
}
printf("The average score of No.%d is %.2f
", (p+i)->num, sum[i]/3);//
total+=sum[i];// 10 30
}
printf("Total Average: %.2f
", total/30.0);// 10 30
for (i=0; i<10; i++)
{
if (sum[i]>max || i==0)
{
max=sum[i];
j=i;
}
}
printf("The num and name of the student that achieved the highest scores are:%d %-5s
", (st+j)->num, (st+j)->name);//
printf("His(Her) three scores are:");
for (i=0; i<3; i++) printf("%.2f ", (st+j)->score[i]);//
printf("
");
printf("His(Her) average is:%.2f
",max/3.0);//
}
방법 2 개선:
#include
#include
struct Student
{
int num;
char name[20];
float score[3];
};
void input(struct Student *st);
void print(struct Student *st);
int main()
{
struct Student stu[10];
input(stu);
print(stu);
return 0;
}
void input(struct Student *st)
{
int i,j;
for (i=0; i<10; i++)
{
printf("Please enter No.%d student's num name score:", i+1);
scanf("%d %s", &(st[i].num), &(st[i].name));
for (j=0; j<3; j++)
{
scanf("%f", &(st[i].score[j]));
}
}
}
void print(struct Student *st)
{
int i, j;
float sum[10], total=0, max;
printf("
");
for (i=0; i<10; i++)
{
sum[i]=0;
for(j=0; j<3; j++)
{
sum[i]+=st[i].score[j];// i
}
printf("The average score of No.%d is %.2f
", st[i].num, sum[i]/3);//
total+=sum[i];// 10 30
}
printf("Total Average: %.2f
", total/30.0);// 10 30
for (i=0; i<10; i++)
{
if (sum[i]>max || i==0)
{
max=sum[i];
j=i;
}
}
printf("The num and name of the student that achieved the highest scores are:%d %-5s
", st[j].num, st[j].name);//
printf("His(Her) three scores are: ");
for (i=0; i<3; i++) printf("%.2f ", st[j].score[i]);//
printf("
");
printf("His(Her) average is:%.2f
", max/3.0);//
}
방법 3:
#include
#define N 10
struct student
{
char num[6];
char name[8];
float score[3];
float avr;
}stu[N];
int main()
{
int i,j,maxi;
float sum,max,average;
for(i=0;i<N;i++)//i
{
printf("input scores of students %d:
",i+1);
printf("NO.:");
scanf("%s",stu[i].num);//
printf("name:");
scanf("%s",stu[i].name);//
for(j=0;j<3;j++)//j
{
printf("score %d:",j+1);
scanf("%f",&stu[i].score[j]);//
}
}
average=0;
max=0;
maxi=0;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<3;j++)
{
sum+=stu[i].score[j];// i
}
stu[i].avr=sum/3.0;//
average+=stu[i].avr;// 10 30
if(sum>max)
{
max=sum;
maxi=i;
}
}
average/=N;// 10 30
printf(" NO. name score1 score2 score3 average
");
for(i=0;i<N;i++)
{
printf("%5s%10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
{
printf("%9.2f",stu[i].score[j]);
}
printf(" %8.2f
",stu[i].avr);
}
printf("average=%5.2f
",average);//
printf("The highest score is:student %s,%s
",stu[maxi].num,stu[maxi].name);//
printf("his scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.
",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);//
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
10 명의 학생 이 있 는데 각 학생 의 데 이 터 는 학 번, 성명, 3 개의 과정 성적 을 포함 하고 키보드 에서 10 개의 학생 데 이 터 를 입력 하여 3 개의 과정 총 평균 성적 과 최고 점 수 를 받 은 학생 의 데이터 (학 번, 성명, 3 개의 과정 성적, 평균 점수 포함) 를 수출 하도록 요구한다.10 명의 학생 이 있 는데 각 학생 의 데 이 터 는 학 번, 성명, 3 개의 과정 성적 을 포함 하고 키보드 에서 10 개의 학생 데 이 터 를 입력 하여 3 개의 과정 총 평균 성적 과 최고 점 수 를 받 은 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.