用c语言设计一个程序统计一个班的学生成绩

作者&投稿:谯解 (若有异议请与网页底部的电邮联系)
设计一个统计班级学生成绩的c语言程序~

仅供参考:
#include "stdio.h"#define N 35struct student{int num;//学号char name[8];//姓名int nannv;//性别int chines;//语文成绩int math;//数学成绩int English;//英语成绩int physics;//物理成绩int sum;//总分double avr;//平均分}stu[N];void input(int n){int i;for(i=0;i<n;i++){int sum=0;double avr=0.0;printf("请输入第%d个学生信息
",i+1);printf("请输入学号:");scanf("%d",&stu[i].num);printf("请输入姓名:");scanf("%s",stu[i].name);printf("请输入性别:");scanf("%d",&stu[i].nannv);printf("请输入语文成绩:");scanf("%d",&stu[i].chines);printf("请输入数学成绩:");scanf("%d",&stu[i].math);printf("请输入英语成绩:");scanf("%d",&stu[i].English);printf("请输入物理成绩:");scanf("%d",&stu[i].physics);//计算总分和平均分stu[i].sum = stu[i].chines+stu[i].math+stu[i].English+stu[i].physics;stu[i].avr = (double)(stu[i].sum*1.0/4);}}void output(int n){int i;for(i=0;i<n;i++){printf("------------------------------------------------------------------
");printf("第%d名:
",i+1);printf("学号:%d姓名:%s性别:%d
",stu[i].num,stu[i].name,stu[i].nannv);printf("语文成绩:%d数学成绩:%d英语成绩:%d物理成绩:%d
",stu[i].chines,stu[i].math,stu[i].English,stu[i].physics);printf("总分:%d平均分:%.2f
",stu[i].sum,stu[i].avr);printf("------------------------------------------------------------------
");}}void sort(int n){int i,j;struct student st;//冒泡排序for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++){if(stu[j].sum<stu[j+1].sum){st = stu[j];stu[j] = stu[j+1];stu[j+1] = st;}}}}void main(){int n;printf("请输入学生人数:");scanf("%d",&n);input(n);//输入学生信息sort(n);//按总成绩排序printf("排名信息如下:
");output(n);//输出学生信息}

改好了,问题不大,我都写在注释里了:

#include
#include
#define N 35
#define COURSE 4

struct student
{
char num[10];/*如果把num当作字符串的话,不能用int,而是char数组。不然就用int num;*/
float score[4];
float sum;
float aver;
}
stu[N];

void main()
{
void Input(struct student stu[]);
void count(struct student stu[]);
void sort(struct student stu[]);
void find(struct student stu[]);
sqrt(1.0);/*不知你用什么编译器,如果TC的话,有个BUG。就是结构体里有float型的话,要加这句,不然会报错*/
Input(stu);
count(stu);
find(stu);
/*为什么你的程序里没有执行着几个函数咧?*/

}
void Input(struct student stu[])
{
int i,j;
printf("Enter No.and score as :score1 score2 score3 score4
");
for (i=0;i<N;i++)
{
scanf("%s",stu[i].num);/*用%s输入字符串*/
for (j=0;j<COURSE;j++)
{
scanf("%f",&stu[i].score[j]);
}
}

}

void count(struct student stu[])
{
float sum,aver;
int i,j;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<5;j++)
sum+=stu[i].score[j];
aver=sum/4;
stu[i].sum=sum;
stu[i].aver=aver;
}

}

void sort(struct student stu[])
{
int i,j,k;
struct student temp;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[k].sum<stu[j].sum)k=j;
if(k!=i)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
}
printf("number score1 score2 score3 score4 sum average
");
for(i=0;i<N;i++)
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f
",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
/*输出学号也用%s*/
}

void find(struct student stu[])
{
int flag=0;
int i,j;
sort(stu) /*;//stu[];)*/

printf("the student of one score>=90 and 前五名:
");
/*这两句调换一下位置,不然输出不太好*/

for(i=0;i<5;i++)
{
int sum=0;
for(j=0;j<4;j++)
if(stu[i].score[j]>=90 )sum++;
if(sum)
{
flag=1;
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f
",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
}
}
if(flag==0)
printf(" not exist!
");
/*这个判断放在循环体之外,不然会输出好多" not exist!"*/

}

另外,注意:
1.个班的学生成绩最多35人。你的咋是固定35人捏?
2.第四点要求:根据用户要求输入课程号显示该门课程成绩在90以上且总分在前五的学生的 学号和各科成绩,平均分和总分

你似乎没有看清题意吧?是要用户输入课程号耶。

这些你自己应该知道怎么做吧?

改好了,问题不大,我都写在注释里了:

#include<stdio.h>
#include<math.h>
#define N 35
#define COURSE 4

struct student
{
char num[10];/*如果把num当作字符串的话,不能用int,而是char数组。不然就用int num;*/
float score[4];
float sum;
float aver;
}
stu[N];

void main()
{
void Input(struct student stu[]);
void count(struct student stu[]);
void sort(struct student stu[]);
void find(struct student stu[]);
sqrt(1.0);/*不知你用什么编译器,如果TC的话,有个BUG。就是结构体里有float型的话,要加这句,不然会报错*/
Input(stu);
count(stu);
find(stu);
/*为什么你的程序里没有执行着几个函数咧?*/

}
void Input(struct student stu[])
{
int i,j;
printf("Enter No.and score as :score1 score2 score3 score4\n");
for (i=0;i<N;i++)
{
scanf("%s",stu[i].num);/*用%s输入字符串*/
for (j=0;j<COURSE;j++)
{
scanf("%f",&stu[i].score[j]);
}
}

}

void count(struct student stu[])
{
float sum,aver;
int i,j;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<5;j++)
sum+=stu[i].score[j];
aver=sum/4;
stu[i].sum=sum;
stu[i].aver=aver;
}

}

void sort(struct student stu[])
{
int i,j,k;
struct student temp;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[k].sum<stu[j].sum)k=j;
if(k!=i)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
}
printf("number score1 score2 score3 score4 sum average \n");
for(i=0;i<N;i++)
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
/*输出学号也用%s*/
}

void find(struct student stu[])
{
int flag=0;
int i,j;
sort(stu) /*;//stu[];)*/

printf("the student of one score>=90 and 前五名:\n");
/*这两句调换一下位置,不然输出不太好*/

for(i=0;i<5;i++)
{
int sum=0;
for(j=0;j<4;j++)
if(stu[i].score[j]>=90 )sum++;
if(sum)
{
flag=1;
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
}
}
if(flag==0)
printf(" not exist!\n");
/*这个判断放在循环体之外,不然会输出好多" not exist!"*/

}

另外,注意:
1.个班的学生成绩最多35人。你的咋是固定35人捏?
2.第四点要求:根据用户要求输入课程号显示该门课程成绩在90以上且总分在前五的学生的 学号和各科成绩,平均分和总分

你似乎没有看清题意吧?是要用户输入课程号耶。

这些你自己应该知道怎么做吧?

要求输入10个学生5门功课的成绩,分别用子函数求出:(1)每个学生的平均分;(2)每门功课的平均分;(3)找出最高分所对应的学生和功课。
#include<stdio.h>
#include<stdlib.h>
struct student
{
 double score[5];
}s[10];
void avg()

 printf("
");
 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
",sum/5);
  }
  printf("
");
  return ;
}
void tavg()
{
 printf("
");
 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
",j+1,sum/10); 
 }
 return ;
}
void maxsc()
{
 printf("
");
 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分,对应学生与功课如下:
",max);
  for(i=0;i<10;i++)
  {
   for(int j=0;j<5;j++)
      if(max==s[i].score[j])
      {
     printf("第%d位学生的第%d门成绩
",i+1,j+1);
    }
  } 
  printf("
"); 

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("
");
    }
    printf("
");
 
 }
 printf("学生平均分数情况:
"); 
   avg();         //每个学生的平均分 
   printf("功课平均分数情况:
"); 
   tavg();        //每门功课的平均分
   printf("最高分数即对应学生功课:
"); 
 maxsc();        //最高分对应的学生和功课 
   system("PAUSE");
   return 0;
}


改好了,问题不大,我都写在注释里了:

#include<stdio.h>
#include<math.h>
#define N 35
#define COURSE 4

struct student
{
char num[10];/*如果把num当作字符串的话,不能用int,而是char数组。不然就用int num;*/
float score[4];
float sum;
float aver;
}
stu[N];

void main()
{
void Input(struct student stu[]);
void count(struct student stu[]);
void sort(struct student stu[]);
void find(struct student stu[]);
sqrt(1.0);/*不知你用什么编译器,如果TC的话,有个BUG。就是结构体里有float型的话,要加这句,不然会报错*/
Input(stu);
count(stu);
find(stu);
/*为什么你的程序里没有执行着几个函数咧?*/

}
void Input(struct student stu[])
{
int i,j;
printf("Enter No.and score as :score1 score2 score3 score4\n");
for (i=0;i<N;i++)
{
scanf("%s",stu[i].num);/*用%s输入字符串*/
for (j=0;j<COURSE;j++)
{
scanf("%f",&stu[i].score[j]);
}
}

}

void count(struct student stu[])
{
float sum,aver;
int i,j;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<5;j++)
sum+=stu[i].score[j];
aver=sum/4;
stu[i].sum=sum;
stu[i].aver=aver;
}

}

void sort(struct student stu[])
{
int i,j,k;
struct student temp;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[k].sum<stu[j].sum)k=j;
if(k!=i)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
}
printf("number score1 score2 score3 score4 sum average \n");
for(i=0;i<N;i++)
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
/*输出学号也用%s*/
}

void find(struct student stu[])
{
int flag=0;
int i,j;
sort(stu) /*;//stu[];)*/

printf("the student of one score>=90 and 前五名:\n");
/*这两句调换一下位置,不然输出不太好*/

for(i=0;i<5;i++)
{
int sum=0;
for(j=0;j<4;j++)
if(stu[i].score[j]>=90 )sum++;
if(sum)
{
flag=1;
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
}
}
if(flag==0)
printf(" not exist!\n");
/*这个判断放在循环体之外,不然会输出好多" not exist!"*/

}

另外,注意:
1.个班的学生成绩最多35人。你的咋是固定35人捏?
2.第四点要求:根据用户要求输入课程号显示该门课程成绩在90以上且总分在前五的学生的 学号和各科成绩,平均分和总分

你似乎没有看清题意吧?是要用户输入课程号耶。

这些你自己应该知道怎么做吧?

改好了,问题不大,我都写在注释里了:
#include<stdio.h>
#include<math.h>
#define
N
35
#define
COURSE
4
struct
student
{
char
num[10];/*如果把num当作字符串的话,不能用int,而是char数组。不然就用int
num;*/
float
score[4];
float
sum;
float
aver;
}
stu[N];
void
main()
{
void
Input(struct
student
stu[]);
void
count(struct
student
stu[]);
void
sort(struct
student
stu[]);
void
find(struct
student
stu[]);
sqrt(1.0);/*不知你用什么编译器,如果TC的话,有个BUG。就是结构体里有float型的话,要加这句,不然会报错*/
Input(stu);
count(stu);
find(stu);
/*为什么你的程序里没有执行着几个函数咧?*/
}
void
Input(struct
student
stu[])
{
int
i,j;
printf("Enter
No.and
score
as
:score1
score2
score3
score4\n");
for
(i=0;i<N;i++)
{
scanf("%s",stu[i].num);/*用%s输入字符串*/
for
(j=0;j<COURSE;j++)
{
scanf("%f",&stu[i].score[j]);
}
}
}
void
count(struct
student
stu[])
{
float
sum,aver;
int
i,j;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<5;j++)
sum+=stu[i].score[j];
aver=sum/4;
stu[i].sum=sum;
stu[i].aver=aver;
}
}
void
sort(struct
student
stu[])
{
int
i,j,k;
struct
student
temp;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[k].sum<stu[j].sum)k=j;
if(k!=i)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
}
printf("number
score1
score2
score3
score4
sum
average
\n");
for(i=0;i<N;i++)
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
/*输出学号也用%s*/
}
void
find(struct
student
stu[])
{
int
flag=0;
int
i,j;
sort(stu)
/*;//stu[];)*/
printf("the
student
of
one
score>=90
and
前五名:\n");
/*这两句调换一下位置,不然输出不太好*/
for(i=0;i<5;i++)
{
int
sum=0;
for(j=0;j<4;j++)
if(stu[i].score[j]>=90
)sum++;
if(sum)
{
flag=1;
printf("%-8s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
}
}
if(flag==0)
printf("
not
exist!\n");
/*这个判断放在循环体之外,不然会输出好多"
not
exist!"*/
}
另外,注意:
1.个班的学生成绩最多35人。你的咋是固定35人捏?
2.第四点要求:根据用户要求输入课程号显示该门课程成绩在90以上且总分在前五的学生的
学号和各科成绩,平均分和总分
你似乎没有看清题意吧?是要用户输入课程号耶。
这些你自己应该知道怎么做吧?


如何用C语言编写一个简单的计算机程序?
include <stdio.h> int main(){ int x=8,y;printf("请输入x:8\\n");scanf("%d",&x);if(x>0)y=1;else if(x<0)y=-1;else if(x=0)y=0;printf("y=%d\\n",y);return 0;}

怎样用C语言编写一个简单的程序?
int main(){ int a[7]; \/\/ 建立一个 7 元素的数组 int i;int sum = 0;int max = a[0];int min = a[0];\/\/ 手动输入 7 个元素 for (i = 0; i < 7; i++){ printf("请输入第 %d 个元素的值: ", i+1);scanf("%d", &a[i]);} \/\/ 求这 7 个元素的和 for (i...

如何编写一个C语言的程序?
创建一个新的 "项目"。选择 C 语言作为您的项目的编程语言。在编辑器中编写您的 C 代码。使用网站提供的编译器编译代码。运行您的程序并查看输出。您也可以使用解释器来运行 C 代码。例如,您可以使用 CINT 解释器将 C 代码保存在文本文件中,然后使用以下命令运行代码:cint mycode.c 但是,CINT 仅...

C语言怎样编一个程序?
C语言怎样编一个程序:01 启动vc++6.0编程工具。点击“开始”——“所有程序”——“Microsoft visual studio6.0”——“Microsoft visual c++6.0”启动。02 建立工程。选择“文件”——“新建”,工程下的方框内填工程名字,c位置是文件储存地址。03 系统显示如图所示对话框,选中“An empty project...

如何用C语言编写一个程序?
include <stdio.h> int main(void){ float n, n2, n3;printf("请输入一个数\\n");scanf("%f",&n);printf("请再输入一个数\\n");scanf("%f",&n2);n3=n2+n;printf("这两个数的和是%.2f",n3);return 0;}

如何编写C语言程序?
1.打开桌面上的DEV_C++,进入如下界面:2.快捷键“CTRL+N”建立新源代码。3.输入源代码,下面给出最简单的Hello,world源代码:include <stdio.h> int main( ){ printf("Hello,World\\n");return 0;} 4.按下F11编译并且运行源代码,得到运行结果:5.点击任意键返回源代码编辑界面可以继续进行开发...

如何用C语言编写一个简单的程序!
进入编辑页面在,页面编辑源代码就可以 include<stdio.h> void main() { printf("hello world!"n); } 然后选择保存,打印,输出运行。输出的效果就是这样了,一个简单的c语言程序就写好了 特别提示 所有的输入都要在英文半角的情况下输入,不然程序会不能识别,会报错。

c语言程序设计:有一个已排好序的数组,要求输入一个数后,按原来排序的规...
本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。 后移结束跳出外循环。插入点为i,把n赋予a[i...

编写一个C语言小程序
程序一 include<stdio.h> void main(){ char c;int en = 0, space = 0, num = 0, other = 0;do { scanf("%c", &c);if (c >= '0' && c <= '9')num++;else if (c == ' ')space++;else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')en++...

编写一个简单C语言程序
include<stdio.h>#include<math.h>int main(){ int n, sum=0; for(n=1;sum<9000;n++) { sum += pow(2,n); } printf("%d",sum); return 0;}

清丰县18883698921: C语言一道题目,求教教3.统计一个班的学生成绩.要求程序具有如下功能:(1) 每个学生的学号和四门功课的成绩从键盘读入.(2) 计算每个学生的总分和... -
羿秦尼莫:[答案] #include #define NULL0#define LEN sizeof(struct student)struct student{ long num; char name[20]; float score1; float score2; float score3; float score4; float score5; float c; float z; struct...

清丰县18883698921: 用c语言设计一个程序统计一个班的学生成绩 -
羿秦尼莫: 改好了,问题不大,我都写在注释里了:#include<stdio.h> #include<math.h> #define N 35 #define COURSE 4struct student {char num[10];/*如果把num当作字符串的话,不能用int,而是char数组.不然就用int num;*/float score[4];float sum...

清丰县18883698921: 设计一个C语言程序,要求能求一个班级学生的总分和平均分 -
羿秦尼莫: 用malloc 函数,用于申请内存.首先先输入学生数n,然后申请一片内存,如下: #include<stdio.h> #include<stdlib.h> int main() {int n,i;float *score;float sum=0.0,ave=0.0;printf("请输入班级学生人数:");scanf("%d",&n); score=(...

清丰县18883698921: 一个c语言的学生成绩统计程序 功能1输入一个班学生基本信息及对应的4门课程的成绩 -
羿秦尼莫: 定义一个结构体去存,按这样写: typedef struct Mycourse {float c1; float c2; float c3; float c4;}Mycourse;用的时候就定义 Mycourse[学生人数] 这样一个数组, 输入就是scanf("%f",&Mycourse[i].c2) 表示把输入数据存入第i个学生的第二门课 输出是printf("%f",Mycourse[i].c2) 表示输出第i个学生第2门课的成绩祝题主好运

清丰县18883698921: 学生成绩统计的编程题目C语言求帮忙~~谢啦从键盘输入一个班(全班
羿秦尼莫: 给你提供一个思路: 1,建立一个含有30个节点的双向链表. 2,从键盘每输入一个学生的成绩,就把成绩存入链表里. 3,链表节点有成绩,上指针,下指针,学生姓名字符串数组. 4,当输入负值后,扫描链表,进行对成绩的各项操作即可.

清丰县18883698921: C语言设计一个程序,统计一个班(最多有35人)的学生成绩(不用链表,用结构体) -
羿秦尼莫: //已调试成功#include #define N 35 void main() { int i,n=0; int student[N],sum=0; printf("请输入学生成绩(以-1输入结束)\n"); for(i=0;i { scanf("%d",&student[i]); if(student[i]==-1) { break; } n++; } for(i=0;i { sum += student[i]; } printf("%d个学生的总成绩为:%d\n",n,sum); }

清丰县18883698921: 编写一个C语言程序,统计一个班(最多50人)的学生成绩,要求实现以下功能: -
羿秦尼莫: include<stdio.h> struct student//结构体 { int num;//数量 char name[10];//姓名 float grade[6];//记录各科成绩 }a[5];//这种结构体类型的数组(只能有五学生) input() { int i; for(i=0;i<5;i++)//每次读入五个学生的数据 { printf("\nplease input the ...

清丰县18883698921: C语言高手来!从键盘输入一个班的(最多不超过30人)学生的学号和
羿秦尼莫: 答案不麻烦,但比较繁琐,建议你看看谭浩强老师编的《c程序设计>>,里面有一个这样的题;下面是代码: void ReadScore(long num[ ],float score[ ],int n) {int i,n,j; long ...

清丰县18883698921: 求教C语言统计一个班的平均分 最低分 最高分 程序怎么写 我是一点都不懂的 求高手指导 表格随便您怎么找个 -
羿秦尼莫: 我写的代码如下: #include <stdio.h> #include<stdlib.h> int compare(const void*a,const void*b){return *(int*)a-*(int*)b;} //排序方式以升序排序 int main(){int m,i;printf("请输入班级的人数");scanf("%d",&m);int mark[m],marks=0; //定...

清丰县18883698921: c语言编写程序,一个班(10个人)成绩统计90~100分,80~89分,70~79分,60~69分和不及格的人数. -
羿秦尼莫: 源程序如下: #include <stdio.h> int main () { int n=10; float cj; int r1=0,r2=0,r3=0,r4=0,r5=0; printf("请输入10个学生的成绩:\n "); for(int i=0;i<n;i++) { scanf("%f",&cj); if (cj>=90&&cj<=100) r1=r1+1; else if(cj>=80&&cj<=89) r2=r2+1; else if(cj...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网