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