当前位置: 首页 > news >正文

算法设计学习2

实验目的及要求:

1.熟悉结构体的构建。

2.了解数据的排序及插入。

实验设备环境:

1.微型计算机

2.DEV C++(或其他编译软件)

实验步骤:
任务:建学生结构体,包含(学号,姓名,性别,年龄,总分),最多可存放100名学生信息,录入10名学生信息,输出。按照总分从高到低排序,输出。在录入一名学生信息,插入到合适位置,保持总分顺序。
解题思路:
构建结构体,然后将数据依次输入结构体中,随后进行排序输出。
算法代码如下:

#include<stdio.h>
#include <iostream>
#include<string.h>
struct student{
    char sno[20], name[20];
    char sex[20];
    int old;
    float sum;
};
void print(struct student stu[100],int n){
    for (int i = 0; i < n;i++){
        printf("%s %s %s %d %.2f\n", stu[i].sno, stu[i].name, stu[i].sex, stu[i].old, stu[i].sum);
    }
}
void sort(struct student s[100],int n){
    struct student a[100];
    for (int i = 1; i < n;i++){
        for (int j = 0; j < n - i;j++){
            if(s[j].sum<s[j+1].sum){
                a[j] = s[j];
                s[j] = s[j + 1];
                s[j + 1] = a[j];
            }
        }
    }
}
int add(struct student s[100],int n){
    int m;
    printf("数量:\n");
    scanf("%d", &m);
    for (int i = n; i < m + n;i++){
        printf("输入第%d位学生的信息:\n",i+1);
        scanf("%s %s %s %d %f", &s[i].sno, s[i].name, s[i].sex, s[i].old, s[i].sum);
    }
    return m;
}
int main(void){
	int n;
	printf("请输入需要录入学生的数量:\n");
	scanf("%d",&n);
	struct student s[100];
	for(int i=0;i<n;i++){ 
	    printf("请输入第%d个学生的信息:\n",i+1);
		scanf("%s %s %s %d %f",&s[i].sno,&s[i].name,&s[i].sex,&s[i].old,&s[i].sum);
	}
	printf("排序前:\n");
    print(s,n);
	sort(s,n);
	printf("排序后:\n");
	print(s,n);
	printf("是否继续添加学生信息,yes或no?\n");
	char a[10];
	scanf("%s",&a);
	if(strcmp(a,"yes")==0){
	    int m = add(s,n);
        for(int i=0;i<m;i++){ 
	    printf("请输入第%d个学生的信息:\n",i+1);
		scanf("%s %s %s %d %f",&s[i].sno,&s[i].name,&s[i].sex,&s[i].old,&s[i].sum);
        }
	    sort(s,m+n);
	    printf("添加再次排序后:\n");
	    print(s,n+m);
	    printf("程序运行结束!"); 
	}
	else if(strcmp(a,"no")==0) {
		printf("程序运行结束!");
	}
    return 0;
}

相关文章:

  • 【FreeRtos】任务调度器可以被挂起吗?
  • 【配电网】基于差分进化算法的含DG配电网无功优化模型
  • python技巧:自动控制高低温箱,通过串口输入命令,生成16进制字符串,并计算CRC16。
  • 4.1-3 模拟器
  • C#调用ACCESS数据库,解决“Microsoft.ACE.OLEDB.12.0”未注册问题
  • 计算机网络知识点汇总与复习——(一)计算机网络体系结构
  • 【408--考研复习笔记】计算机网络----知识点速览
  • Base64编码的优缺点
  • Redis原理:rename命令
  • 玩机搞机基本常识-------安卓机型各种root方式面面观 选择适合自己机型的root方式
  • 自然语言处理(26:(终章Attention 2.)带Attention的seq2seq的实现)
  • 人工智能图像识别大数据技术之Scala2
  • 工业通信协议“牵手密码”,Ethernet IP转Profinet网关的桥梁魔法
  • 体验智谱清言的AutoGLM进行自动化的操作(Chrome插件)
  • MySQL数据库中,tinyint(1) 和 tinyint 有什么区别
  • 深入剖析JavaScript多态:从原理到高性能实践
  • 基于R语言与MaxEnt的物种分布建模全流程解析:从算法优化到科研制图实战
  • C++编程指南32 - 模板编程时要避免过度约束以提高通用性
  • 蓝桥杯训练士兵
  • 单点登录(SSO)实战:基于Vue与Spring Boot的深度实现
  • 中央宣传部、全国妇联联合发布2025年“最美家庭”
  • 为什么越来越多景区,把C位留给了书店?
  • 人民日报:从“轻微免罚”看涉企执法方式转变
  • 日本前卫艺术先驱群展上海:当具体派相遇古树古宅
  • 习近平会见哥伦比亚总统佩特罗
  • 央媒评网红质疑胖东来玉石定价暴利:对碰瓷式维权不能姑息