任务1:
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1) 录入每个学生的学号和考试成绩;
(2) 计算课程的总分和平均分;
(3) 按成绩由高到低排出名次表;
(4) 按学号由小到大排出成绩表;
(5) 按学号查询学生排名及其考试成绩;
(6) 按优秀(90~100)、良好(70~89)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数及其所占的百分比;
(7) 输出每个学生的学号、考试成绩,课程总分和平均分。
include<stdio.h>
#define H 30
int main()
{ void toofuck(int *x,int *y,int *z,int *w);
int *l,*i,*p,*o;
int god[H];
int FUCK[H];
int a=0,b=0,c=0,e,f,g=0,n,h=0,j,d=0,s=0;
printf("需要输入多少人的成绩\n");
scanf("%d",&n);
printf("输入学生的学号及成绩\n");
while(a<n)
{scanf("%d,%d",&god[a],&FUCK[a]);
b=FUCK[a]+b;
a++;}
c=b/n;
printf("平均分为%d,总分为%d",c,b);
while(d<n)
{for(f=0;f<n;f++)
{l=&FUCK[f];i=&FUCK[f+1];p=&god[f];o=&god[f+1];
toofuck(l,i,p,o);}d++;}
printf("成绩表如下\n");
[cpp] view plaincopy
g=0;
while(g<n)
{printf("%d,%d\n",god[g],FUCK[g]);
g++;}
while(s<n)
{for(f=0;f<n;f++)
{l=&god[f];i=&god[f+1];p=&FUCK[f];o=&FUCK[f+1];
toofuck(l,i,p,o);}s++;}
printf("学号表如下");
while(g<n)
{printf("%d,%d\n",god[g],FUCK[g]);
g++;}
printf("请输入想要查询的学号");
scanf("%d",&h);
j=0;
while(j<n)
{if(god[j]==h)
{printf("学号:%d 名次:%d 成绩:%d",god[j],j+1,FUCK[j]);
break;}j++;
}
a=0;b=0;c=0;d=0;e=0;
while(a<n)
{ if(FUCK[a]>90)
c++;
if(FUCK[a]>70&&FUCK[a]<90)
d++;
if(FUCK[a]>60&&FUCK[a]<70)
e++;
if(FUCK[a]<60)
b++;a++;}
printf("优秀类别有%d人,占全部的%d%\n",c,c*100/n);
printf("良好类别有%d人,占全部的%d%\n",d,d*100/n);
printf("及格类别有%d人,占全部的%d%\n",e,e*100/n);
printf("不及格类别有%d人,占全部的%d%\n",b,b*100/n);}
void toofuck(int *x,int *y,int *z,int *w)
{ int a;
if(*x<*y)
{a=*x;
*x=*y;
*y=a;
a=*z;
*z=*w;
*w=a;}}
任务2:
从键盘输入5个整数存入一维数组中,输出最大的数,再按反序输出(要求用指针访问数组元素)
#include<stdio.h>
#define m 5
void main()
{
int i,*p,max=0;
int number[m];
printf("请输入五个数:\n");
for(i=0;i<m;i++)
{
scanf("%d",&number[i]);
}
for(p=number;p<number+m;p++)
{
if(max>*p)
{
max=max;
}
max=*p;
}
printf("这五个数中的最大数是:%d\n",max);
printf("这五个数的逆序是:\n");
for(p=number+m-1;p>=number;p--)
{
printf("%d\n",*p);
}
}