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();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)