C语言数组版学生信息管理(不带函数)

数组版学生信息管理(不带函数)

说明:

适用于各种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; 
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值