matlab学生成绩统计
❶ 在 matlab中怎么建立学生成绩的结构数据
张三','李四','王五'李四后面的逗号是中文的,要改成英文的,我运行了下,就没错误了
❷ (1) matlab编写一个学生成绩管理的函数
数学建抄模的实验报告:实验袭内容是:编写一个学生成绩管理的函数程序:将学生成绩按五个等级划分:优秀(90以上),良好(80-90),中等(70-79),及格(60-69),不及格(60以下)对输入的学生成绩按五个等级划分后,打印学生姓名,得分,等级,并计算全班最高分、最低分、平均分.模型的建立于求解怎么写???
❸ matlab输入一个百分制成绩,要求输出成绩等级,A,B,C,D,E
clear;
m=input('请输入一个数值:');
m=ceil(m/10);
switch m
case {10,9}
disp('A');
case 8
disp('B');
case 7
disp('C');
case 6
disp('D');
case {5,4,3,2,1,0}
disp('E');
otherwise
disp('输入有误!')
end
matlab的吧..这个样子就可以了吧?不过还是希望楼主下次自版己写,这种权程序还是自己写过才能学到东西,而且这算是基本的了,楼主加油吧~
❹ 用matlab编程求20个学生成绩的最大分数,最小分数,前5名得分数,及平均分数
a=[%学生数据%]
%排序
a = sort(a);
%最低分
a(1)
%最高分
a(length(a))
%前五名成绩
a([1 2 3 4 5])
%平均分
mean(a)
❺ matlab 学生成绩管理系统
#include <iostream>
#define number 100
#define increasment 10
using namespace std;
int i;
bool found;
//结构体变量student.
struct student
{
char num[4];//学生的学号.
int score;//学生的分数.
};
//定义线性表变量.
typedef struct
{
student *elem;//线性表的首地址.
int length;
int listsize;
}sqlist;
//初始化此表.
void initlist(sqlist &L)
{
L.elem=(student*)malloc(number*sizeof(student));//分配存储空间.
if(!L.elem)exit(0);
L.length=0;
L.listsize=number;
return;
}
//为次表添加数据.
void inputlist(sqlist &L)
{
int n;
cout<<"输入你要存入学生信息的个数n:"<<endl;
cin>>n;
if(n>L.listsize)cout<<"空间不足.";//如输入的个数大于表的初始长的报错.
cout<<"这"<<n<<"明学生的具体的信息(学号(三位),成绩)是:"<<endl;
cout<<"输入范例:"<<endl<<"001 97"<<endl<<"002 95"<<endl<<"......"<<endl<<"学号 成绩"<<endl;
for(i=0;i<n;i++)
{
buf:
cin>>L.elem[i].num>>L.elem[i].score;//输入学生的学号和成绩.
if(L.elem[i].score<0||L.elem[i].score>100)//判断如果数据是否符合要求.
{
cout<<"输入数据错误,请从新输入"<<endl;
goto buf;
}
L.length++;
}
}
//输出整个表.
void output(sqlist &L)
{
cout<<"学号 成绩"<<endl;
for(i=0;i<L.length;i++)//输出表中所有学生的信息.
cout<<L.elem[i].num<<" "<<L.elem[i].score<<endl;
cout<<"学生总个数为:"<<L.length<<endl;
return ;
}
//在表中的某个位置插入一个元素.
void insertlist(sqlist &L,int i,student &e)
{
student *q,*newbase;
if(i<1||i>L.length+1)//如果插入的位置超出范围则报错.
printf("插入的节点不存在./n");
if(L.length>=L.listsize)
{
newbase=(student*)realloc(L.elem,(number+increasment)*sizeof(student));//开辟内存.
if(!newbase)exit(0);
L.elem=newbase;
L.listsize+=increasment;
}
for(q=L.elem+L.length-1;q>=&(L.elem[i-1]);q--)//插入点数之后的数据进行后移.
*(q+1)=*q;
*(q+1)=e;//插入该点.
L.length++;//表长加1.
output(L);//输出插入元素后所有学生的信息.
return ;
}
//删除一个一个表中的某个元素.
void deletelist(sqlist &L,int i,student &e)
{
student *p;
if(i<1||i>L.length)//删除的点超出范围则报错.
printf("删除的节点不存在./n");
e=L.elem[i-1];
for(p=&(L.elem[i-1]);p<=L.elem+L.length-2;p++)//删除点之后的元素进行前移.
*p=*(p+1);
L.length--;//表长减1.
output(L);//输出删除元素后所有学生的信息.
return ;
}
//合并两个表.
void connect(sqlist &La,sqlist &Lb,sqlist Lc)
{
student *pa,*pb,*pc,*pa_last,*pb_last;
pa=La.elem;pb=Lb.elem;
Lc.listsize=Lc.length=La.length+Lb.length;
pc=Lc.elem=(student*)malloc(Lc.listsize*sizeof(student));//分配新内存.
if(!pc)exit(0);
pa_last=La.elem+La.length-1;
pb_last=Lb.elem+Lb.length-1;
while(pa<pa_last&&pb<pb_last)//将表La和表Lb中的元素进行比较后添加到表Lc中.
{
if((*pa).score<(*pb).score)*pc++=*pa++;
else*pc++=*pb++;
}
while(pa<=pa_last)*pc++=*pa++;//将还剩下的元素也添加到表Lc中去.
while(pb<=pb_last)*pc++=*pb++;
output(Lc);//输出表Lc.
return ;
}
//定位某个元素是否在此线性表中.
bool location(sqlist &L,student &e)
{
found=false;
for(i=0;i<L.length&&!found;i++)//寻找元素是否在表中.
{
found=false;
for(int j=0;j<3;j++)
{
found=false;
if(e.num[j]==L.elem[i].num[j]&&e.score==L.elem[i].score)//存在则found赋值为true.
found=true;
}
}
return found;//返回一个bool型变量,来判断是否找到元素.
}
int main()
{
int n;//作为选择变量.
sqlist La,Lb,Lc;//定义三个表.
student e;//定义学生变量.
initlist(La);//初始化表La.
inputlist(La);//对表La进行赋值.
repeat:
cout<<"你可以对这些学生进行如下操作:"<<endl<<"1:插入元素;2:删除元素;3:显示所有信息;4:合并两个表;5:查找某元素是否在表中."<<endl;
cin>>n;
switch(n)//选择要进行的操作.
{
case 1:
{
cout<<"请输入所插入元素在哪个元素前.";
cin>>i;
cout<<"请输入所插入学生的具体信息,即学号(三位数字):";//输入学生的学号.
cin>>e.num;
cout<<"请输入成绩(0-100):";//数入学生的成绩.
cin>>e.score;
insertlist(La,i,e);break;//将上面的元素插入到表中去.
}
case 2:
{
cout<<"请输入所要删除的元素.";
cin>>i;
deletelist(La,i,e);break;//删除表的此元素.
}
case 3:output(La);break;//输出表.
case 4:
{
cout<<"请再建立一个表,从而能够实现两个表的合并."<<endl;
initlist(Lb);//初始化表Lb.
inputlist(Lb);//对表Lb进行赋值.
cout<<endl;
connect(La,Lb,Lc);break;//合并表La和Lb,并存到表Lc中.
}
case 5:
{
cout<<"请输入所要查找学生的具体信息,即学号(三位数字):";//输入学生的学号.
cin>>e.num;
cout<<"请输入成绩(0-100):";//数入学生的成绩.
cin>>e.score;
if(location(La,e))//确定此元素是否存在.
cout<<"此学生在表中,基本信息是:"<<e.num<<" "<<e.score<<endl;
else
cout<<"此学生不在表中."<<endl;
break;
}
default:cout<<"error";break;//报错.
}
cout<<"是否还进行其它操作,是请按1,否请按2."<<endl;
cin>>i;
if(i==1)//判断是否还进行其它的操作.
goto repeat;//是在跳到repeat出.
return 0;
}
❻ 用MATLAB把学生成绩,姓名,学号排序,跪求详细程序
clc;clear
stu=struct('name',{'Zhang1','Zhang2','Zhang3',...
'Wang1','Wang2','Wang3','Li1','Li2','Li3'},...
'snum',{1,2,3,4,5,6,7,8,9},...
'grade',{86,67,66,45,76,89,60,87,20});
[~,idx]=sort([stu.grade],'descend');%从大抄到小排列
stu_new=stu(idx);%新的顺序
❼ 用Matlab筛选数据,有一个学生成绩的表格,有学生好几次的成绩,怎么筛选出一个学生多次的成绩
因为你没有给具体的格式,所以只能笼统地说了。。。
首先需要用 xlsread 函数把excel数据读入matlab,具体请查看 help。
然后,筛选数据,比如
a = [1 3 6 87 4 2 4 6 3 1 5 7 3 1 5 3 1 6 858 998 6 5 4 ];
b=a(a<5); % a中所有小于5的值
c=a(a>3); % a中所有大于3的值
❽ matlab学生成绩查询系统怎么做。在线等。
bu不知道您需要用什么做后台, 简单的excel可以存储, mysql是免费的, Oracle比较贵.
前端的话, Matalb自带的gui界面编辑器就可以搞定.
❾ 用matlab解决:给50个学生成绩要求统计间隔10分分数段的学生人数和占总学生的百分比,并画出曲线图
data=[85 88 67 87 76 87 79 75 85 80
78 64 74 80 67 90 54 86 75 64
95 86 82 64 86 86 93 56 68 89
67 76 78 95 90 75 79 80 92 45
87 85 83 83 79 60 91 78 65 85 ];
data=data(:); %所有数据转成一列的数据
x=0:10:100; %分数区间
y=hist(data,x) %各区间人数
yy=y/length(data);%各区间人数占学生的百分比回
bar(x,yy)
xlabel('分数')
ylabel('百分比')
这个函数也是有答一点问题的
❿ 求matlab大神 用M脚本文件循环输入学生成绩,用函数文件判断等级并统计各等级人数
编写M脚本文件,将某班学生某门课程的成绩:60,75,85,97,52,36,86,56,94,84,77,统计各个分段的学生人数,并将每个人的学生成绩变为优,良,中,及格和不及格表示,统计人数和成绩变换都用子程序表示。
x=[60 75 85 96 52 36 86 56 94 84 77];
c=count1(x)
d=change1(x)
function z1=count1(xx)
n=size(xx);
z1=zeros(5,1);
for n1=1:n(2)
x1=fix(xx/10);
switch x1(n1)
case 9
z1(1)=z1(1)+1;
case 8
z1(2)=z1(2)+1;
case 7
z1(3)=z1(3)+1;
case 6
z1(4)=z1(4)+1;
otherwise
z1(5)=z1(5)+1;
end
end
function z1=change1(xx)
我把这些输入,它说??? Undefined function or method 'count1' for input arguments of type 'double'.
我加了function caculation,不再提示之前的那个,但变成这样了
>> function caculation
x=[60 75 85 96 52 36 86 56 94 84 77];
c=count1(x)
d=change1(x)
function z1=count1(xx)
n=size(xx);
z1=zeros(5,1);
for n1=1:n(2)