C语言做成绩表

C语言做成绩表,第1张

#include "stdioh"
int main()
{
double s[11][3],x=00,y=00,z=00;
int i;
for(i=0;i<10;i++)
{
printf("请输入第%d个学生的数学成绩:",i+1);
scanf("%lf",&s[i][0]);
x+=s[i][0];
printf("请输入第%d个学生的政治成绩:",i+1);
scanf("%lf",&s[i][1]);
y+=s[i][1];
printf("请输入第%d个学生的英语成绩:",i+1);
scanf("%lf",&s[i][2]);
z+=s[i][2];
}
s[10][0]=x/100;s[10][1]=y/100;s[10][2]=z/100;/计算平均成绩/
printf("数学的成绩的平均分为:%3lf\n",s[10][0]);
printf("政治的成绩的平均分为:%3lf\n",s[10][1]);
printf("英语的成绩的平均分为:%3lf\n",s[10][2]);
getchar();
return 0;
}

把100分定为最高分,60分为及格分数线。用C语言实现如下:

#include

#define N 100

void main()

{

int i;

float grade,sum=0,min=100,pass=0;

for(i=0;i{

scanf("%f",&grade);//输入学生分数。

sum+=grade;//计算学生的成绩的总和。

if (gradeif (grade>=60) pass++;  //求及格人数。

}

printf("%02f\n",sum/N);

//保留两位小数输出100个学生的成绩的平均值。

printf("%02f\n",min);//保留两位小数输出最低分。

printf("%02f%%\n",pass/N100);//保留两位小数输出及格率。

}

switch里有三种写法,第一种就是每个单独写出来如:(这种如果数据多的话不推荐,比如这题)
switch(score) {
case 90: case 91://case 100:
//优秀。。
break;
case 80:case 81:case 82: //case 89:
//中等。。
break;
}
第二种就是进行缩小范围,如:(这种如果数据分布很有规律就用,比如这题)
switch(score/10) {
case 10: case 9: //优秀
break;
case 8: //中等
break;
}
第三种是函数的写法,这适用于数据分布无规律而不能进行缩小范围时,假如90~96为优秀,97~100为特优秀的话,可以这样,如:(这种适用于数据分布无规律)
int score_fun(int score)
{
if(score >= 97)
return 1;
if(score >= 90)
return 2;
if(score >= 80)
return 3;
}

//

switch(score_fun(score)) {
case 1: //特优秀。。
break;
case 2: //优秀。。
break;
case 3: //中等。。
break;
}

按照你要求,用二维数组编写。

#include<stdioh>
#include<stringh>
int main( )
{
    char stu[4][100],stuName[5][5]={"小明","小王","小陈","小李","小丽"},score[4],maxName[4][5];//成绩最多输入3位数999
    int i,j,num,sum,ave[4],maxScore[4]={0,0,0,0};
    for(i=0;i<4;i++)
    {
        stu[i][0]=0;
        sum=0;
        printf("请输入学科%d各个学生的成绩:\n",i+1);
        for(j=0;j<5;j++)
        {
            printf("%15s的成绩:",stuName[j]);
            scanf("%d",&num);
            sprintf(score,"%d",num);
            if(maxScore[i]<num)//记录每科最高成绩的人
            {
                maxScore[i]=num;
                strcpy(maxName[i],stuName[j]);
            }
            sum=sum+num;//记录每科总分
            strcat(stu[i],stuName[j]);//拼接成绩单
            strcat(stu[i],":");
            strcat(stu[i],score);
            strcat(stu[i],";");
        }
        ave[i]=sum/5;//记录每科平均分
    }
    for(i=0;i<4;i++)
    {
        printf("学科%d的最高分为%s:%d,平均分为%d。\n    所有学生成绩单为:%s。\n",i+1,maxName[i],maxScore[i],ave[i],stu[i]);
    }
    return 0;
}

#include <stdioh>
#include <stdlibh>
#define student_num5
typedef struct student
{
char name[8], clas;
float chin, eng, math, tot, ave;
} student;
void input(student s[])
{
int i;
printf(" \n\n输入 分数\n\n ");
for (i = 0; i < 5; i++)
{
printf("[%d次 输入]\n\n", i + 1);
printf("姓名:");
fflush(stdin);
gets(s[i]name);
printf("语文:");
fflush(stdin);
scanf("%f", &s[i]chin);
printf("英语:");
fflush(stdin);
scanf("%f", &s[i]eng);
printf("数学:");
fflush(stdin);
scanf("%f", &s[i]math);
system("cls");
}
}
void ave(student s[])
{
int i;
for (i = 0; i < 5; i++)
{
s[i]ave = (s[i]chin + s[i]eng + s[i]math) / 3;
}
}
void clas(student s[])
{
int i;
for (i = 0; i < 5; i++)
{
if (s[i]ave >= 90)
{
s[i]clas = 'A';
}
else if (s[i]ave >= 80)
{
s[i]clas = 'B';
}
else if (s[i]ave >= 70)
{
s[i]clas = 'C';
}
else if (s[i]ave >= 60)
{
s[i]clas = 'D';
}
else
{
s[i]clas = 'F';
}
}
}
void total(student s[])
{
int i;
for (i = 0; i < 5; i++)
{
s[i]tot = s[i]chin + s[i]eng + s[i]math;
}
}
void sort(student s[])
{
int i, j, k, in;
student temp;
printf("排列 菜单");
printf("1 从小到大 排列");
printf("2 从大到小 排列>");
scanf("%d", &in);
if (in == 1)
{
for (i = 0; i < 4; i++)
{
k = i;
for (j = i + 1; j < 5; j++)
if (s[k]ave > s[j]ave)
k = j;
if (k > i)
{
temp = s[k];
s[k] = s[i];
s[i] = temp;
}
}
}
else if (in == 2)
{
for (i = 0; i < 4; i++)
{
k = 1;
for (j = i + 1; j < 5; j++)
{
if (s[k]ave > s[j]ave)
k = j;
if (k < i)
{
temp = s[k];
s[k] = s[i];
s[i] = temp;
}
}
}
}
}//这缺少一个括号

void print(student s[])
{
int i = 0;
printf("\t\t\t######成绩 输出######\n\n");
printf("姓名\t语文\t英语\t数学\t平均\t总数\t等级\t排名\n");
for (i = 0; i < 5; i++)
{
printf("%s\t%2lf\t%2lf\t%2lf\t%2lf\t%2f\t%c\t%d\n", s[i]name, s[i]chin,
s[i]eng, s[i]math, s[i]ave, s[i]tot, s[i]clas, i);//这输出的时候格式少了一项%d
}
}
void research(student s[])
{
int i = 0;
printf(" 搜索 姓名 输入 ");
gets(s[i]name);
printf("\t\t\t######搜索 学生 情报 输出######\n\n");
printf("姓名\t语文\t英语\t数学\t平均\t总数\t等级\t排名\n");
printf("%s\t%2lf\t%2lf\t%2lf\t%2lf\t%2f\t%c\t%d\n", s[i]name, s[i]chin,
s[i]eng, s[i]math, s[i]ave, s[i]tot, s[i]clas, i);//这s[i]chin少了一个点,和格式也少了一项
}
main()//这缺少了个主函数
{
}

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;

/定义学生结构体/

struct Student

{

char ID[20];

char Name[20];

float Mark1;

float Mark2;

float Mark3;

float Average;

};
/声明学生数组及学生数量/

struct Student students[1000];

int num=0;
/求平均值/

float Avg(struct Student stu)

{

return (stuMark1+stuMark2+stuMark3)/3;

}
/通过学号返回数组下标/

int Student_SearchByIndex(char id[])

{

int i;

for (i=0;i<num;i++)

{

if (strcmp(students[i]ID,id)==0)

{

return i;

}

}

return -1;

}
/通过姓名返回数组下标/

int Student_SearchByName(char name[])

{

int i;

for (i=0;i<num;i++)

{

if (strcmp(students[i]Name,name)==0)

{

return i;

}

}

return -1;

}
/显示单条学生记录/

void Student_DisplaySingle(int index)

{

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");

printf("-------------------------------------------------------------\n");

printf("%10s%10s%82f%82f%82f%102f\n",students[index]ID,students[index]Name,

students[index]Mark1,students[index]Mark2,students[index]Mark3,students[index]Average);

}
/插入学生信息/

void Student_Insert()

{

while(1)

{

printf("请输入学号:");

scanf("%s",&students[num]ID);

getchar();
printf("请输入姓名:");

scanf("%s",&students[num]Name);

getchar();
printf("请输入成绩:");

scanf("%f",&students[num]Mark1);

getchar();
printf("请输入成绩:");

scanf("%f",&students[num]Mark2);

getchar();
printf("请输入成绩:");

scanf("%f",&students[num]Mark3);

getchar();
students[num]Average=Avg(students[num]);

num++;
printf("是否继续(y/n)");

if (getchar()=='n')

{

break;

}

}
}
/修改学生信息/

void Student_Modify()

{

//float mark1,mark2,mark3;

while(1)

{

char id[20];

int index;

printf("请输入要修改的学生的学号:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf("学生不存在!\n");

}

else

{

printf("你要修改的学生信息为:\n");

Student_DisplaySingle(index);

printf("-- 请输入新值--\n");
printf("请输入学号:");

scanf("%s",&students[index]ID);

getchar();
printf("请输入姓名:");

scanf("%s",&students[index]Name);

getchar();
printf("请输入成绩:");

scanf("%f",&students[index]Mark1);

getchar();
printf("请输入成绩:");

scanf("%f",&students[index]Mark2);

getchar();
printf("请输入成绩:");

scanf("%f",&students[index]Mark3);

getchar();
students[index]Average=Avg(students[index]);

}

printf("是否继续(y/n)");

if (getchar()=='n')

{

break;

}

}

}
/删除学生信息/

void Student_Delete()

{

int i;

while(1)

{

char id[20];

int index;

printf("请输入要删除的学生的学号:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if (index==-1)

{

printf("学生不存在!\n");

}

else

{

printf("你要删除的学生信息为:\n");

Student_DisplaySingle(index);

printf("是否真的要删除(y/n)");

if (getchar()=='y')

{

for (i=index;i<num-1;i++)

{

students[i]=students[i+1];//把后边的对象都向前移动

}

num--;

}

getchar();

}

printf("是否继续(y/n)");

if (getchar()=='n')

{

break;

}

}

}
/按姓名查询/

void Student_Select()

{

while(1)

{

char name[20];

int index;

printf("请输入要查询的学生的姓名:");

scanf("%s",&name);

getchar();

index=Student_SearchByName(name);

if (index==-1)

{

printf("学生不存在!\n");

}

else

{

printf("你要查询的学生信息为:\n");

Student_DisplaySingle(index);

}

printf("是否继续(y/n)");

if (getchar()=='n')

{

break;

}

}

}
/按平均值排序/

void Student_SortByAverage()

{

int i,j;

struct Student tmp;

for (i=0;i<num;i++)

{

for (j=1;j<num-i;j++)

{

if (students[j-1]Average<students[j]Average)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}

}
/显示学生信息/

void Student_Display()

{

int i;

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");

printf("-------------------------------------------------------------\n");

for (i=0;i<num;i++)

{

printf("%10s%10s%82f%82f%82f%102f\n",students[i]ID,students[i]Name,

students[i]Mark1,students[i]Mark2,students[i]Mark3,students[i]Average);

}

}
/将学生信息从文件读出/

void IO_ReadInfo()

{

FILE fp;

int i;

if ((fp=fopen("Databasetxt","rb"))==NULL)

{

printf("不能打开文件!\n");

return;

}

if (fread(&num,sizeof(int),1,fp)!=1)

{

num=-1;

}

else

{

for(i=0;i<num;i++)

{

fread(&students[i],sizeof(struct Student),1,fp);

}

}

fclose(fp);

}
/将学生信息写入文件/

void IO_WriteInfo()

{

FILE fp;

int i;

if ((fp=fopen("Databasetxt","wb"))==NULL)

{

printf("不能打开文件!\n");

return;

}

if (fwrite(&num,sizeof(int),1,fp)!=1)

{

printf("写入文件错误!\n");

}

for (i=0;i<num;i++)

{

if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)

{

printf("写入文件错误!\n");

}

}

fclose(fp);

}
/主程序/

void main()

{

int choice;

IO_ReadInfo();

while(1)

{

/主菜单/

printf("\n------ 学生成绩管理系统------\n");

printf("1 增加学生记录\n");

printf("2 修改学生记录\n");

printf("3 删除学生记录\n");

printf("4 按姓名查询学生记录\n");

printf("5 按平均成绩排序\n");

printf("6 退出\n");

printf("请选择(1-6):");

scanf("%d",&choice);

getchar();

switch(choice)

{

case 1:

Student_Insert();

break;

case 2:

Student_Modify();

break;

case 3:

Student_Delete();

break;

case 4:

Student_Select();

break;

case 5:

Student_SortByAverage();

Student_Display();

break;

case 6:

exit(0);

break;

}

IO_WriteInfo();

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12750579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存