⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smart.cpp

📁 这是我编写的一个小的程序
💻 CPP
字号:
/* Note:Your choice is C IDE */
#include <stdio.h>
#include <string.h>
#include <conio.h> 
#define M 3

//定义一个学生的结构
typedef struct student
{
	int num;
	char name[12];
	float score[M];
	float aver;
};

//函数声明部分
int count = 0;
struct student stu[50];
struct student Input();
void Display(struct student stud[]);
void Sort(struct student stud[]);
void Insert(struct student stud[]);
void Delete(struct student stud[]);


//主函数部分
void main()
{
	
    char ch = 'y';
    while((ch == 'y')||(ch == 'Y'))
     {
     	stu[count] = Input();
     	count++;
     	fflush(stdin);
     	printf("\n 是否继续输入?(y or n)");
     	scanf("%c",&ch);
     }
	 printf("学生人数为:%d\n",count);
     printf("所有学生信息如下:");
     //Sort(stu,count);
     Insert(stu);
      //printf("学生人数为:%d\n",count);
	 //Delete(stu);
	  //printf("学生人数为:%d\n",count);
     Display(stu);
	 

	
}

//学生信息录入

struct student Input()
{
	struct student studn;
	int j;
	float sum;
	sum = 0.0;
	printf("\n学号:");
	scanf("%d",&studn.num);
	printf("\n学生姓名:");
	scanf("%s",&studn.name);
	printf("\n各科成绩如下:");
	printf("\n");
	for(j = 0; j < M; j++)
	 {
	 	printf("专业%d:",j+1); 
	 	scanf("%f",&studn.score[j]);
	    //scanf("%d", &studn.score[j]);
	    sum += studn.score[j];
	 }
	 
	 studn.aver = sum/M;
	  return studn;//返回一个学生
}

//学生信息打印
void Display(struct student stud[])
{
	int i;
	printf("\n学号\t学生姓名\t平均成绩\n");
	//if(count<1)
	//printf("error!");
	//else
//	{
		for(i = 0; i<count; i++)
	{
	  printf("%d",stud[i].num);
      printf("\t%s",stud[i].name);
      printf("\t\t%f",stud[i].aver);
      printf("\n");
	}
//	}
}

//按平均成绩排序
void Sort(struct student stud[])
{
	int i,j;
	struct student t;
	for(i = 0; i < count; i++)
	{
		for(j = 0; j < count-i-1; j++ )
		{
			if(stud[j].aver < stud[j+1].aver)
			{
				t = stud[i];
				stud[i] = stud[j+1];
				stud[j+1] = t;
			}
		}
	}
}

//添加学生成绩
void Insert(struct student stud[])
{
	int i,j;
	struct student temp;
	printf("\n请输入要插入学生的学号");
	temp = Input();
	for(i = 0; i<count; i++)
	 {
	 	if(stud[i].aver<temp.aver)//前面对已有学生进行过排序
	 	break;
	 }
	 for(j = count;j>=i;j--)
	  {
	  	stud[j+1] = stud[i];
	  }
	  stud[i] = temp;
	
}

//删除学生信息
void Delete(struct student stud[])
{
	int delNum,i,j;
	struct student temp;
	printf("\n请输入要删除学生的学号:");
	scanf("%d",&delNum);
	for(i=0;i<count;i++)
	{
		if(stud[i].num == delNum)//如下最好检查输入学号是否存在
		break;
	}
	
	for(j = i; j<count-1;j++)//后移
	{
		stud[j+1] = stud[i];
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -