任务1:
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1) 录入每个学生的学号和考试成绩;
(2) 计算课程的总分和平均分;
(3) 按成绩由高到低排出名次表;
(4) 按学号由小到大排出成绩表;
(5) 按学号查询学生排名及其考试成绩;
(6) 按优秀(90~100)、良好(70~89)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数及其所占的百分比;
(7) 输出每个学生的学号、考试成绩,课程总分和平均分。
我的程序:
#include<stdio.h>
#define NUM 30
void bubbleSort1(int grade[],int stn[],int n)
{
int i,j,t,k;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(grade[j+1]>grade[j])
{
t=grade[j+1],k=stn[j+1];
grade[j+1]=grade[j],stn[j+1]=stn[j];
grade[j]=t,stn[j]=k;
}
}
}
}
void bubble(int grade[],int stn[],int n)
{
int i,j,t,k;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(stn[j+1]<stn[j])
{
t=grade[j+1],k=stn[j+1];
grade[j+1]=grade[j],stn[j+1]=stn[j];
grade[j]=t,stn[j]=k;
}
}
}
}
void print(int grade[],int stn[],int n)
{
int i=0;
for(;i<n;i++)
{
printf("%d, %d\n",stn[i],grade[i]);
}
}
void main()
{
printf("请输入学生数量\n");
int n,i,sum=0;int a,b,c=1;
scanf("%d",&n);
printf("请输入学号和分数\n");
int grade[NUM];int stn[NUM];
for( i=0;i<n;i++)
scanf("%d,%d",&stn[i],&grade[i]);
for( i=0;i<n;i++)
sum=sum+grade[i];
printf("平均分是:%d,总分为:%d\n",sum/n,sum);
bubbleSort1( grade,stn, n);
printf("成绩名次表\n");
print( grade,stn, n) ;
bubble( grade,stn, n);
printf("学号排名成绩表\n");
print( grade,stn, n) ;
printf("请输入您想查询学生学号\n");
scanf("%d",&a);
for( i=0;i<n;i++){
if(a==stn[i]) b=grade[i];
else continue;}
for( i=0;i<n;i++)
if(b<grade[i]) c++;
printf("学号 %d ,名次 %d,其考试成绩%d\n",a,c,b);
int d=0;int e=0; int f=0;int g=0;
for( i=0;i<n;i++)
if(grade[i]>=90) d++;
if(70<=grade[i]<=89) f++;
if(60<=grade[i]<=69) g++;
if(grade[i]<60) e++;
printf("优秀 良好 及格 不及格\n");
printf("%d %d %d %d\n",d,f,g,e);
printf("%.2f% %.2f% %.2f% %.2f%\n",float(d)/float(n)*100,float(f)/float(n)*100,float(g)/float(n)*100,
float(d)/float(n)*100);
}
截图:
任务2:
从键盘输入5个整数存入一维数组中,输出最大的数,再按反序输出(要求用指针访问数组元素)
我的程序:
#include<stdio.h>
void main()
{ printf("请输入五个数\n");
int a[5],i,b;
for( i=0;i<5;i++)
{
scanf("%d",&a[i]) ; }
for(i=0;i<4;i++)
{
if(a[i+1]>a[i]) b=a[i+1];
else b=a[i]; }
printf("最大值%d\n",b);
for(i=4;i>=0;i--)
{
printf ("%d ",*(a+i)); }
}
截图: