学生成绩统计
『壹』 用C语言编程 学生成绩统计
#include<stdio.h>
voidprint1(inta[],intn){
for(inti=0;i<n;i++)
printf("%d",a[i]);
printf(" ");
}
intmain()
{
inta[30],i,j,k=0,m=0,b[30],c[30],d[10]={0};
for(i=0;i<30;i++){
intscore;
scanf("%d",&score);
if(score<0){
j=i;
break;
}
a[i]=score;
}
for(i=0;i<j;i++){
if(a[i]>60)
b[k++]=a[i];
else
c[m++]=a[i];
d[a[i]/10]++;
}
printf("及格人数%d ",k);
print1(b,k);
printf("不及格人数%d ",m);
print1(c,m);
for(i=0;i<10;i++){
printf("%d到%d占:%d%% ",i,(i+1)*10-1,d[i]*10);
}
}
『贰』 excel根据学生各科成绩统计每个学生总分
1、打开EXCEL文件,输入每个学生的分数。
『叁』 C语言 统计学生成绩
#include<stdio.h>
#include<stdlib.h>
struct student
{
double score[5];
}s[10];
void avg()
{
printf("\n");
double sum;
for(int i=0;i<10;i++)
{
sum=0;
printf("第%d位学生的平均分数是: ",i+1);
for(int j=0;j<5;j++)
sum+=s[i].score[j];
printf("%.2lf\n",sum/5);
}
printf("\n");
return ;
}
void tavg()
{
printf("\n");
double sum;
for(int j=0;j<5;j++)
{
sum=0;
for(int i=0;i<10;i++)
sum+=s[i].score[j];
printf("第%d门功课的平均分是: %.2lf\n",j+1,sum/10);
}
return ;
}
void maxsc()
{
printf("\n");
double max=-1;
int i,j;
for( i=0;i<10;i++)
{
for( j=0;j<5;j++)
if(max<s[i].score[j])
{
max=s[i].score[j];
}
}
printf("最高分是:%.2lf分,对应学生与功课如下:\n",max);
for(i=0;i<10;i++)
{
for(int j=0;j<5;j++)
if(max==s[i].score[j])
{
printf("第%d位学生的第%d门成绩\n",i+1,j+1);
}
}
printf("\n");
}
int main()
{
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
printf("输入第%d位学生的第%d门功课的成绩: ",i+1,j+1);
scanf("%lf",&s[i].score[j]);
printf("\n");
}
printf("\n");
}
printf("学生平均分数情况:\n");
avg(); //每个学生的平均分
printf("功课平均分数情况:\n");
tavg(); //每门功课的平均分
printf("最高分数即对应学生功课:\n");
maxsc(); //最高分对应的学生和功课
system("PAUSE");
return 0;
}
『肆』 学生成绩统计,求解!!
学生成绩统计
『伍』 利用excel统计学生成绩
对于教师而言,经常需要用Excel进行学生成绩统计,会被一些常见问题难住。碰到的难题主要有:如何统计不同分数段人数、如何在保持学号不变前提下进行排名、如何将百分制转换成不同分数段与如何用红色显示不及格的分数等,本文着重对这些问题的解决方法与技巧加以分析和讨论。
本文假设读者已对Excel的基本操作已经有一定基础,已经掌握如何进行求和、求平均和如何使用自动填充柄进行复制公式等操作,本文对这些一般性操作不做详细介绍,仅对一些难度较大的操作技巧进行讨论。
一、Excel统计学生成绩时的四个难题
假设在统计学生成绩时,我们需要统计出如图1所示的相关结果。
这里,假设学号、姓名、成绩等列及行15都已经事先输好,需要让Excel统计其他的相关数据结果。这时,成绩统计中主要难解决的问题及它们在图中的位置如下:
问题1:如何统计不同分数段的学生人数?(图中A16——E16)
问题2:如何在保持学号顺序不变的前提下进行学生成绩名次排定?(图中F2——F13)
问题3:如何将百分制转换成不同的等级分?(图中“等级1”与“等级2”列)
问题4:如何使不及格的分数以红色显示?(图中红色显示部分,即第12行)
二、解决统计学生成绩时的四个难题的方法
下面,针对上面提出的四个难题分别讨论解决的方法与技巧。
1、统计不同分数段的学生人数
统计不同分数段的学生人数是非常常见的需求,其所需结果如图1中A16——E16所示。这里,假设需要统计90——100、80——89、70——79、60——69及低于60分五个不同分数段的人数。
通常,统计不同分数段最好的方法是利用COUNTIF(X,Y)函数。其中有两个参数,第一个参数X为统计的范围,一般最好用绝对引用;第二个参数Y为统计条件,要加引号。
对于小于60分的人数只要用一个COUNTIF( )函数,如在E16单元格中输入公式:=COUNTIF($C$2:$C$13,"<60")。
对于其他在两个分数之间的分数段的人数统计,需要用两个COUNTIF( )函数相减。如在A16单元格中输入公式:=COUNTIF($C$2:$C$13,"<=100")-COUNTIF($C$2:$C$13,"<90"),即用小于等于100的人数减去小于90的人数。
如果要统计80——89、70——79与60——69分数段的人数,只要利用自动填充柄将该公式复制到右边三个单元格,再把"<=100"与"<90"作相应的修改,就可以得到正确的结果。
『陆』 c语言统计学生成绩
#include <stdio.h>
#define N 2
#define M 2
int s[N]={0},a[N][M];
char b[N][10];
void fun1(int a[N][M])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
s[i]+=a[i][j];
printf("第%d个同学的平均分是%.2f\n",i+1,s[i]/5.0);
}
}
void fun2(int a[N][M])
{
float p[M]={0};
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
p[i]+=a[j][i];
p[i]/=10.0;
printf("第%d门课程的平均分是%.2f\n",i+1,p[i]);
}
}
void fun3(char b[N][10])
{
int max,t,i;
max=s[0];
for(i=1;i<N;i++)
if(s[i]>max)
{
max=s[i];
t=i; /*记住最大时i的值,以便找到姓名*/
}
printf("%s荣获所有学生中最高分%d分\n",b[t],max);
}
main()
{
int i,j;
float p[M]={0};
/* 输入姓名和成绩*/
for(i=0;i<N;i++)
{
printf("输入第%d个学生的姓名:",i+1);
scanf("%s",&b[i]);
for(j=0;j<M;j++)
{
printf("输入该学生的第%d门成绩:",j+1);
scanf("%d",&a[i][j]);
}
}
printf("\n");
/*计算每个同学平均分*/
fun1(a);
printf("\n");
/*计算每门课的平均分*/
fun2(a);
printf("\n");
/*比较求出最大总分和输出姓名*/
fun3(b);
return 0;
}
代码经过测试了 运行成功
如果有什么不懂的可以问我
『柒』 C语言程序设计统计学生成绩
用数复组,你学了制数组吗?
int i,b,c;
scanf("%d"&i); //输入需要几个学生成绩
int a[i]; //定义数组大小。
for (b=0;b<=i;b++) //循环输入成绩
a[i]=scanf("%d",c);
『捌』 在语言中输入10个学生成绩并统计每个成绩的人数
# include <stdio.h>
void main()
{
int fun(int score[],int m,int below[]);
int score[100],m,below[100];
int i=0;
char c;
printf(" 请输入学生成绩,回车后结束:\n");
do
{
scanf("%d",&score[i]);
i++;
c=getchar();
if(c=='\n')
break;
}
while(1);
m=fun(score,i,below);
printf("高于平均分的人数有%d人\n", m);
for(i=0;i<m;i++)
printf("%d\t",below[i]);
getchar();
}
int fun(int score[],int m,int below[])
{
int i,k=0;
int aver=0;
for(i=0;i<m;i++)
aver+=score[i];
printf("总分:%d",aver);
printf(" \n");
aver/=m;
printf("平均分:%d\n",aver);
for(i=0;i<m;i++)
if(score[i]>aver)
{
below[k]=score[i];
k++;
}
return k;
}
请采纳。
『玖』 c语言学生成绩统计系统
#include<stdio.h>
#include<string.h>
#define NUM1 3
#define NUM2 3
#define NUM3 3
struct student
{
char name[10];
int score;
}c1[NUM1],c2[NUM2],c3[NUM3];//定义三个结构体数组
int i,j,k;
FILE *fp1_order,*fp2_order,*fp3_order;/*/定义文件指针
/*/=========================================================
void main(void)
{
void data_in(void);
void score_order(void);
void save_in(void);
void save_order(void);
void open_order(void);
printf("******************************学生成绩文件管理******************************\n");
printf(" programmer:喻翔\n\n");
printf("一、输入三个班的学生姓名和成绩:\n\n");
data_in();
printf("\n\n\n");
printf("############################################################################\n\n");
printf("二、保存输入的姓名和成绩:\n\n");
save_in();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("三、排名并保存姓名和成绩:\n\n");
score_order();
save_order();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("四、验证排名后保存的文件:\n\n");
open_order();
printf("\n\n\n");
}
//=============================================================
void data_in(void)
{
printf("请输入一班%d个学生的姓名和成绩:\n",NUM1);
for(i=0;i<NUM1;i++)
{
printf("第%d个:",i+1);
scanf("%s %d",c1[i].name,&c1[i].score);
}
printf("\n\n\n请输入二班%d个学生的姓名和成绩:\n",NUM2);
for(j=0;j<NUM2;j++)
{
printf("第%d个:",j+1);
scanf("%s %d",c2[j].name,&c2[j].score);
}
printf("\n\n\n请输入三班%d个学生的姓名和成绩:\n",NUM3);
for(k=0;k<NUM3;k++)
{
printf("第%d个:",k+1);
scanf("%s %d",c3[k].name,&c3[k].score);
}
}
//=============================================================
void score_order(void)
{
int h,t;
char s[10];
for(h=0;h<NUM1-1;h++)
for(i=0;i<NUM1-1-h;i++)
if(c1[i].score<c1[i+1].score)
{
t=c1[i].score;
c1[i].score=c1[i+1].score;
c1[i+1].score=t;
strcpy(s,c1[i].name);//一定要使用strcpy()函数
strcpy(c1[i].name,c1[i+1].name);
strcpy(c1[i+1].name,s);
}
for(h=0;h<NUM2-1;h++)
for(j=0;j<NUM2-1-h;j++)
if(c2[j].score<c2[j+1].score)
{
t=c2[j].score;
c2[j].score=c2[j+1].score;
c2[j+1].score=t;
strcpy(s,c2[j].name);
strcpy(c2[j].name,c2[j+1].name);
strcpy(c2[j+1].name,s);
}
for(h=0;h<NUM3-1;h++)
for(k=0;k<NUM3-1-h;k++)
if(c3[k].score<c3[k+1].score)
{
t=c3[k].score;
c3[k].score=c3[k+1].score;
c3[k+1].score=t;
strcpy(s,c3[k].name);
strcpy(c3[k].name,c3[k+1].name);
strcpy(c3[k+1].name,s);
}
}
//=====================================================================
void save_in(void)
{
FILE *fp1_in,*fp2_in,*fp3_in;
if((fp1_in=fopen("data1_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_in);
if((fp2_in=fopen("data2_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_in);
if((fp3_in=fopen("data3_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_in);
}
//==============================================================
void save_order(void)
{
if((fp1_order=fopen("data1_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_order);
if((fp2_order=fopen("data2_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_order);
if((fp3_order=fopen("data3_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_order);
}
//=============================================================
void open_order(void)
{
fp1_order=fopen("data1_order.dat","rb");
printf("一班的成绩排名如下:\n");
printf("名次 姓名 C语言成绩\n");
printf("----------------------------------------\n");
for(i=0;i<NUM1;i++)
{
printf("第%d名 ",i+1);
fread(&c1[i],sizeof(struct student),1,fp1_order);
printf("%s %d\n",c1[i].name,c1[i].score);
}
fp2_order=fopen("data2_order.dat","rb");
printf("\n\n\n二班的成绩排名如下:\n");
printf("名次 姓名 C语言成绩\n");
printf("----------------------------------------\n");
for(j=0;j<NUM2;j++)
{
printf("第%d名 ",j+1);
fread(&c2[j],sizeof(struct student),1,fp2_order);
printf("%s %d\n",c2[j].name,c2[j].score);
}
fp3_order=fopen("data3_order.dat","rb");
printf("\n\n\n三班的成绩排名如下:\n");
printf("名次 姓名 C语言成绩\n");
printf("----------------------------------------\n");
for(k=0;k<NUM3;k++)
{
printf("第%d名 ",k+1);
fread(&c3[k],sizeof(struct student),1,fp3_order);
printf("%s %d\n",c3[k].name,c3[k].score);
}
}
『拾』 如何用Excel电子表格统计学生成绩
1、用SUM汇总学生总成绩;
大致主要就是用这些了。