关于c语言编程,比如4个学生的三科成绩,int score[4][3],成绩随便打,名字char
发布网友
发布时间:2023-05-01 14:22
我来回答
共2个回答
热心网友
时间:2023-10-12 05:53
#include <stdio.h>
struct student
{
char szName[100];
int score1; // 课程1成绩
int score2; // 课程2成绩
int score3; // 课程3成绩
int totalScore; // 总成绩
// 等号重载
student operator=(student &st)
{
sprintf(szName, st.szName);
score1 = st.score1;
score2 = st.score2;
score3 = st.score3;
totalScore = st.totalScore;
return *this;
}
// 输出学生信息以及分数
void printfStu()
{
printf("%s\t%d\t%d\t%d\t%d\n", szName, score1, score2, score3, totalScore);
}
};
int main()
{
const int stuCount = 3;
student stuArray[stuCount];
printf("姓名 课程1成绩 课程2成绩 课程3成绩\n");
for (int i = 0; i < stuCount; i++)
{
scanf("%s %d %d %d",
stuArray[i].szName,
&stuArray[i].score1,
&stuArray[i].score2,
&stuArray[i].score3);
stuArray[i].totalScore = (stuArray[i].score1 + stuArray[i].score2 +
stuArray[i].score3 );
}
// 排序
for (int i = 0; i < stuCount; i++)
{
for (int j = 0; j < stuCount - i -1; j++)
{
if (stuArray[j + 1].totalScore > stuArray[j].totalScore)
{
student stu = stuArray[j];
stuArray[j] = stuArray[j + 1];
stuArray[j + 1] = stu;
}
}
}
// 打印
printf("姓名\t课程1\t课程2\t课程3\t总成绩\n");
for (int i = 0 ; i < stuCount; i ++)
{
stuArray[i].printfStu();
}
return 0;
}
运行结果:
热心网友
时间:2023-10-12 05:53
#include<stdio.h>
#include<string.h>
int main()
{
int i, j, k, r;
char ts[20];
char name[4][20];
int score[4][3];
float t, zf[4];
//此处为输入数据的代码
/* 计算总分 */
for(i=0; i<4; i++)
{
/* 计算第i行的总分保存于zf[i] */
t=0;
for(j=0; j<3; j++)
t+=score[i][j];
zf[i]=t;
}
/* 排序 */
for(i=0; i<3; i++)
{
k=i;
for(j=i+1; j<4; j++)
if(zf[j]>zf[k])
k=j;
if(i!=k) /* 交换成绩表的第i行和第k行 */
{
strcpy(ts,name[i]); /* 交换姓名 */
strcpy(name[i],name[k]);
strcpy(name[k],ts);
t=zf[i]; /* 交换总成绩 */
zf[i]=zf[k];
zf[k]=t;
/* 交换scores的第i行和第k行 */
for(j=0; j<3; j++){
r=score[i][j];
score[i][j]=score[k][j];
score[k][j]=r;
}
}
}
/* 输出 */
printf("名次\t姓名\t课程1\t课程2\t课程3\t总分\n");
for(i=0; i<4; i++) /* sn个学生*/
{
printf("%d\t%s\t", i+1, name[i]); /* 名次 姓名*/
for(j=0; j<3; j++) /* 3门课成绩 */
printf("%d\t", score[i][j]);
printf("%.2f\n", zf[i]); /* 总分 */
}
return 0;
}