数组版学生信息管理(不带函数)
说明:
适用于各种C语言初学者 及 专业生成各种不服的 要求不能使用函数的老师(手动微笑:))特上传此版本——不带函数的数组版 学生信息录入(自动生成的序号、姓名、学号、成绩),由成绩计算学生等级、姓名查重、平均分排序、学生信息输出
头文件引入
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
// 宏定义 N为5
代码
int main()
{
int i,j,k;
//定义数组
int n[N];//学生序号
char name[N][10];
char num[N][20];//学生学号
float mark[N][2];
float ave[N];
float sum[N];
int count[N];
char rank[N];
for(i=0;i<N;i++)
{
printf("请输入第%d位学生的信息:\n",i+1);
printf("请输入学号和姓名:");
scanf("%s %s",&num[i],&name[i]);
n[i] =i+1; //自动生成序号
printf("请输入学生的成绩:");
scanf("%f %f",&mark[i][0],&mark[i][1]);
putchar(10);
sum[i]=mark[i][0]+mark[i][1];
ave[i]=sum[i]/2.0;
}
//计算学生等级
int t;
for(i=0;i<N;i++)
{
t=(int)(ave[i]/10);
switch(t)
{
case 10:
case 9:rank[i]='A';break;
case 8:rank[i]='B';break;
case 7:rank[i]='C';break;
case 6:rank[i]='D';break;
default: rank[i]='E';break;
}
}
//姓名查重
char nametemp[N][10];
char str[10];
int all=0;
for(j=0;j<N;j++)
{
strcpy(str,name[j]);
for(i=0;i<all;i++)
if (strcmp (str,nametemp[i]) == 0)//如果temp中出现和t中一样的姓名
{
count[i]++; //计数器加一 表示姓名出现一次
break;
}
if (i==all)
{
strcpy(nametemp[i],str);
count[i]=1;
all ++;
}
}
for (i=0;i<all;i++) //输出循环结果
{
if(count[i]>1)//输出重复姓名,隐藏出现一次的姓名
{
printf("姓名查重结果如下:\n");
printf ("%s出现%d次\n",nametemp[i],count[i]);
}
}
putchar(10);
//平均分排序
int nt;//学生序号
char namet[10];
char numt[20];//学生学号
float markt;
float avet;
float sumt;
int countt;
char rankt;
//定义做交换的临时数组
for (i=0;i<N;i++)
for (j=i+1;j<N;j++)
if (ave[i]<ave[j])
{
strcpy(namet,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],namet);//姓名交换
nt=n[i];
n[i]=n[j];
n[j]=nt;//序号交换
strcpy(numt,num[i]);
strcpy(num[i],num[j]);
strcpy(num[j],numt);//学号交换
markt=mark[i][0];
mark[i][0]=mark[j][0];
mark[j][0]=markt;//成绩1交换
markt=mark[i][1];
mark[i][1]=mark[j][1];
mark[j][1]=markt;//成绩2交换
sumt=sum[i];
sum[i]=sum[j];
sum[j]=sumt;//总分交换
avet=ave[i];
ave[i]=ave[j];
ave[j]=avet;//平均分交换
rankt=rank[i];
rank[i]=rank[j];
rank[j]=rankt;//等级交换
}
printf("平均分排序如下:\n");
//输出学生信息
printf(" %4s %15s %10s %9s %9s %9s %9s %9s ","序号","学号","姓名","成绩1","成绩2","总分","平均分","等级");
putchar(10);
for(i=0;i<N;i++)
{
printf("%4d %15s %10s %9.2f %9.2f %9.2f %9.2f %9c \n",n[i],num[i],name[i],mark[i][0],mark[i][1],sum[i],ave[i],rank[i]);
}
putchar(10);
return 0;
}