學生成績統計
『壹』 用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匯總學生總成績;
大致主要就是用這些了。