苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V5.0

2023-11-10

github:https://github.com/Jackie0Feng/SAMS
#系统需求描述

某班有最多不超过30人(具体人数由键盘输入)参加期末考试,考试科目最多不超过6门(具体门数由键盘输入)。定义结构体类型,用结构体数组作函数参数编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号,姓名和各科考试成绩;
(2)计算每门课程的总分和平均分;
(3)计算每个学生的总分和平均分
(4)按每个学生的总分由高到低排出名次表;
(5)按每个学生的总分由低到高排出名次表;
(6)按学号由小到大排出成绩表;
(7)按姓名的字典顺序排出成绩表;
(8)按学号查询学生排名及其各科考试成绩;
(9)按姓名查询学生排名及其各科考试成绩;
(10)按优秀(90- 100)、良好(80- 89)、中等(70-79)、及格(60- 69)、不及格(0-59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;
(11)输出每个学生的学号、姓名,各科考试成绩,总分,平均分,以及每门课程的总分和平均分。
要求程序运行后先显示如下菜单,并提示用户输入选项:
1.Input record
2.Caculate total and average score of every course
3.Caculate total and average score of every student
4.Sort in descending order by total score of every student
5.Sort in ascending order by total score of every student
6.Sort in ascending order by number
7.Sort in dictionary order by name
8.Search by number
9.serch by name
10.Statistic analysis
11.List record
0.Exit
Please enter your choice:
根据用户输入的选项执行相应的操作

实验目的:在学生管理系统V4.0的基础上,通过增加任务要求,熟悉结构体类型,结构体数组做函数参数,模块化程序设计,体会应用结构体类型代替普通的数组类型实现数据管理的优越性
#顶层设计
这次升级最大的变化就是将原来四散分离的各种类型的数据组成一个学生结构体,大大使得函数的形参变得简洁了,代码可读性更好了,实际操作起来也并不难,重构过程算是个体力活。

/*程序功能:   学生成绩管理
编码者:   JackieFeng
日期:  13/11/2021
版本号:5.0
备注:
某班有最多不超过30人(具体人数由键盘输入)参加期末考试,考试科目最多不超过6门(具体门数由键盘输入)。
定义结构体类型,用结构体数组作函数参数编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号,姓名和各科考试成绩;
(2)计算每门课程的总分和平均分;
(3)计算每个学生的总分和平均分
(4)按每个学生的总分由高到低排出名次表;
(5)按每个学生的总分由低到高排出名次表;
(6)按学号由小到大排出成绩表;
(7)按姓名的字典顺序排出成绩表;
(8)按学号查询学生排名及其各科考试成绩;
(9)按姓名查询学生排名及其各科考试成绩;
(10)按优秀(90- 100)、良好(80- 89)、中等(70-79)、及格(60- 69)、不及格(0-59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;
(11)输出每个学生的学号、姓名,各科考试成绩,总分,平均分,以及每门课程的总分和平均分。*/
#include <stdio.h>
#include "SAMS.h"
#include <string.h>
#include <stdlib.h>
//#pragma warning(disable : 4996)

int main()
{
    int order = -1;//用户指令
    
    /*int n;
    long num[STU_NUM];
    float score[STU_NUM];*/
    //初始数据
    int n = 5;//学生人数
    int m = 3;//课程数

    long num[STU_NUM] = { 10001,10002,10003,10004,10005 };
    char name[][MAX_LEN] = { "tom","jack","bill","amy","jackie" };
    float score[STU_NUM] = { 20.0,80.0,50.0,66.0,95.0 };
    float score2[STU_NUM][COURSE_NUM] = { {20.0,80.0,50.0},//2表示二维
                                                                        {66.0,95.0,77.0},
                                                                        {63.0,77.0,81.0},
                                                                        {86.0,43.0,72.0},
                                                                        {96.0,95.0,89.0} };
    /*这次改变了一个字段,将一维的课程升级为了二维数组,
    又新增了一个功能统计每个学生所有课程的平均分和总分,
    所以需要新增两个一维数组sum[],aver[]存储一下此信息.*/
    float sum[STU_NUM] = { 0 };
    float aver[STU_NUM] = { 0 };
    //AverSumofEveryStudent(score2, sum, aver, n, m);

    //初始化结构体数组数据
    STU students[STU_NUM];
    for (int i = 0; i < n; i++)
    {
        students[i].num = num[i];
        strcpy_s(students[i].name, MAX_LEN, name[i]);
        for (int j = 0; j < m; j++)
        {
            students[i].score[j] = score2[i][j];
        }
    }
    AverSumofEveryStudent(students, n, m);

    Mean();//显示菜单
    //使用系统
    while (1)
    {
        printf("Please enter your choice : \n");
        scanf_s("%d", &order);
        getchar();//读走缓存里的回车符
        switch (order)
        {
        case 1://录入成绩
            //n = ReadScore(num, score, n);
            n = ReadScore(students, n, m);
            AverSumofEveryStudent(students, n, m);//每次录入结束后都得重新计算
            break;
        case 2://计算每门课程的总分和平均分;
            AverSumofEveryCourse(students, n, m);
            break;
        case 3://计算每个学生的总分和平均分
            AverSumofEveryStudent(students, n, m);
            printf("已经重新计算总分和平均分\n");
            break;
        case 4://按每个学生的总分由高到低排出名次表;
            SortbyScore(students, n, m, Descending);
            printf("Descendingly scorted by scores:\n");
            PrintScore(students, n, m);
            break;
        case 5://按每个学生的总分由低到高排出名次表;
            SortbyScore(students, n, m, Ascending);
            printf("Ascendingly scorted by scores:\n");
            PrintScore(students, n, m);
            break;
        case 6://按学号升序排名
            SortbyNum(students, n, m, Ascending);
            printf("Ascendingly scorted by num:\n");
            PrintScore(students, n, m);
            break;
        case 7://按姓名的字典顺序排出成绩表;
            SortbyName(students, n, m);
            printf("Dictionarily scorted by name:\n");
            PrintScore(students, n, m);
            break;
        case 8://按学号查询学生排名及其各科考试成绩;
            SearchbyNum(students, n, m);
            break;
        case 9://按姓名查询学生排名及其各科考试成绩;
            SearchbyName(students, n, m);
            break;
        case 10://按优秀(90- 100)、良好(80- 89)、中等(70-79)、及格(60- 69)、不及格(0-59)5个类别,
                   //统计每个类别的人数以及所占的百分比;
            StatistAnalysis(students, n, m);
            break;
        case 11://输出每个学生的学号、姓名,各科考试成绩,总分,平均分,以及每门课程的总分和平均分。
            PrintScore(students, n, m);
            AverSumofEveryCourse(students, n, m);
            break;
        case 0://退出系统
            printf("Good Bye!\n");
            exit(0);//建议main函数用exit(0)表示正常结束
        default:
            Mean();
            break;
        }
    }
}

头文件

/*程序功能:   学生成绩管理
编码者:   JackieFeng
日期:  13/11/2021
版本号:5.0
备注:
某班有最多不超过30人(具体人数由键盘输入)参加期末考试,考试科目最多不超过6门(具体门数由键盘输入)。
定义结构体类型,用结构体数组作函数参数编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号,姓名和各科考试成绩;
(2)计算每门课程的总分和平均分;
(3)计算每个学生的总分和平均分
(4)按每个学生的总分由高到低排出名次表;
(5)按每个学生的总分由低到高排出名次表;
(6)按学号由小到大排出成绩表;
(7)按姓名的字典顺序排出成绩表;
(8)按学号查询学生排名及其各科考试成绩;
(9)按姓名查询学生排名及其各科考试成绩;
(10)按优秀(90- 100)、良好(80- 89)、中等(70-79)、及格(60- 69)、不及格(0-59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;
(11)输出每个学生的学号、姓名,各科考试成绩,总分,平均分,以及每门课程的总分和平均分。*/
#pragma once
#define STU_NUM 30      //最多人数
#define MAX_LEN 10      //名字最大长度
#define COURSE_NUM 6//课程数上限

//学生结构体
//long num;
//char name[MAX_LEN];
//float score[COURSE_NUM];
//float sum;
//float aver;
typedef struct student
{
    long num;
    char name[MAX_LEN];
    float score[COURSE_NUM];
    float sum;
    float aver;
}STU;

/*
函数名称:   Mean
功能描述:   显示菜单页面,提示用户如何使用
参数:
返回:
备注:*/
int Mean(void);
/*
函数名称:   ReadScore
功能描述:   录入每个学生的学号和成绩,并返回总人数
参数:
    STU students:学生结构体数组
    n:实际总人数
    m:实际课程数
返回:变化后总人数
备注:*/
int ReadScore(STU students[], int n, int m);
/*
函数名称:   AverSumofEveryCourse
功能描述:   计算每门课程的总分和平均分
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
返回:
备注:*/
void AverSumofEveryCourse(STU students[], int n, int m);
/*
函数名称:   AverSumofEveryCourse
功能描述:   计算每个学生的总分和平均分
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
返回:
备注:*/
void AverSumofEveryStudent(STU students[], int n, int m);
/*
函数名称:   SortbyScore
功能描述:   按照学生总分排列名次表,使用函数指针表达升降序
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
    *compare:比较函数指针
返回:
备注:*/
void SortbyScore(STU students[], int n, int m, int (*compare)(int a, int b));
/*
函数名称:   SortbyNum
功能描述:   按照学号升序排列
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
    *compare:比较函数指针
返回:
备注:*/
void SortbyNum(STU students[], int n, int m, int (*compare)(int a, int b));
/*
函数名称:   SortbyName
功能描述:   按照姓名字典顺序排列
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
返回:
备注*/
void SortbyName(STU students[], int n, int m);
/*
函数名称:   SearchbyNum
功能描述:   按学号查询学生排名及其各科考试成绩;
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
返回:索引号
备注:*/
int SearchbyNum(STU students[], int n, int m);
/*
函数名称:   SearchbyName
功能描述:   按姓名查询学生排名及其各科考试成绩;
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
返回:索引号
备注:*/
int SearchbyName(STU students[], int n, int m);
/*
函数名称:   StatistAnalysis
功能描述:   按优秀(90- 100)、良好(80- 89)、中等(70-79)、及格(60- 69)、不及格(0-59)5个类别,
                 对每门课程分别统计每个类别的人数以及所占的百分比;
参数:
    STU students:学生结构体数组
    n:总人数
    m:总课程数
返回:
备注:*/
void StatistAnalysis(STU students[], int n, int m);
/*
函数名称:   PrintScore
功能描述:   打印每位学生的学号,姓名和成绩
参数:
    STU students:学生结构体数组
    n:总人数
    m:课程总数
返回:
备注:*/
void PrintScore(STU students[], int n, int m);
/*
函数名称:   FloatSwap
功能描述:   交换两个浮点型变量
参数:
    a:float型指针
    b:float型指针
返回:
备注:*/
void FloatSwap(float* a, float* b);
/*
函数名称:   LongSwap
功能描述:   交换两个长整型变量
参数:
    a:long型指针
    b:long型指针
返回:
备注:*/
void LongSwap(long* a, long* b);
/*
函数名称:   LongSwap
功能描述:   交换两个长整型变量
参数:
    a:long型指针
    b:long型指针
返回:
备注:*/
void CharSwap(char a[], char b[]);
/*
函数名称:   Ascending
功能描述:   升序比较函数
参数:
    a:比较数
    b:比较数
返回:a<b
备注:*/
int Ascending(int a, int b);
/*
函数名称:   Descending
功能描述:   降序比较函数
参数:
    a:比较数
    b:比较数
返回:a>b
备注:*/
int Descending(int a, int b);

#具体实现

int ReadScore(STU students[], int n, int m)
{
    printf("正在录入学生信息...\n");
    printf("学号录入-1时结束录入\n");
    int i = n - 1;
    do
    {
        i++;
        printf("正在录入第%d个学生的学号,姓名\n", i + 1);
        //scanf("%ld%s%f", &num[i], name[i], &score[i]);//数值类型与字符串类型交叉输入可用空格隔开
        scanf_s("%ld", &students[i].num);
        if (students[i].num == -1)//若用户输入完毕则退出输入
            break;
        scanf_s("%s", students[i].name, 10);//scanf_s函数在输入字符串时必须指定字符串长度
        getchar();//读走回车符
        printf("请连续按顺序输入第%d个学生%d课成绩\n", i + 1, m);
        for (int j = 0; j < m; j++)
        {
            scanf_s("%f", &students[i].score[j]);
        }
    } while (i <= 30);
    printf("录入完成总共录入%d人\n", i);
    return i;
}

void AverSumofEveryCourse(STU students[], int n, int m)
{
    float sum[COURSE_NUM] = { 0 };
    float aver[COURSE_NUM] = { 0 };
    //i行j列,算课程总分,按列算总和
    for (int j = 0; j < m; j++)
    {
        for (int i = 0; i < n; i++)
        {
            sum[j] += students[i].score[j];
        }
        aver[j] = sum[j] / n;
        printf("科目%d的总分为%.2f,平均分为%.2f\n", j + 1, sum[j], aver[j]);
    }
}

void AverSumofEveryStudent(STU students[], int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        students[i].sum = 0;//每次计算总和都得先初始化sum为0
        for (int j = 0; j < m; j++)
        {
            students[i].sum += students[i].score[j];
        }
        students[i].aver = students[i].sum / m;
    }
}

void SortbyScore(STU students[], int n, int m, int(*compare)(int a, int b))
{
    //选择排序,第一层循环整个数组,每次归一位
    for (int i = 0; i < n - 1; i++)
    {
        int cmp = i;//比较位索引值,初始为乱序区第一位
        //第二层循环乱序位,每次从乱序列中选择最大一位
        for (int j = i; j < n; j++)
        {
            if (compare(students[cmp].sum, students[j].sum))//比总分
            {
                cmp = j;
            }
        }
        //发生改变,交换
        if (i != cmp)
        {
            LongSwap(&students[i].num, &students[cmp].num);
            CharSwap(students[i].name, students[cmp].name);
            FloatSwap(&students[i].sum, &students[cmp].sum);
            FloatSwap(&students[i].aver, &students[cmp].aver);
            for (int j = 0; j < m; j++)
            {
                FloatSwap(&students[i].score[j], &students[cmp].score[j]);
            }
        }
    }
}

void SortbyNum(STU students[], int n, int m, int(*compare)(int a, int b))
{
    //选择排序,第一层循环整个数组,每次归一位
    for (int i = 0; i < n - 1; i++)
    {
        int cmp = i;//最大位索引值,初试为乱序区第一位
        //第二层循环乱序位,每次从乱序列中选择学号最小的一位
        for (int j = i + 1; j < n; j++)
        {
            if ((*compare)(students[cmp].num, students[j].num))
            {
                cmp = j;
            }
        }
        //发生改变,交换
        if (i != cmp)
        {
            LongSwap(&students[i].num, &students[cmp].num);
            CharSwap(students[i].name, students[cmp].name);
            FloatSwap(&students[i].sum, &students[cmp].sum);
            FloatSwap(&students[i].aver, &students[cmp].aver);
            for (int j = 0; j < m; j++)
            {
                FloatSwap(&students[i].score[j], &students[cmp].score[j]);
            }
        }
    }
}

void SortbyName(STU students[], int n, int m)
{
    //选择排序,第一层循环整个数组,每次归一位
    for (int i = 0; i < n - 1; i++)
    {
        int cmp = i;//最大位索引值,初试为乱序区第一位
        //第二层循环乱序位,每次从乱序列中选择字典顺序靠前的一位
        for (int j = i + 1; j < n; j++)
        {
            if (strcmp(students[cmp].name, students[j].name) > 0)//对比位比乱序位大,不行要换,保持对比位最小(升序)
            {
                cmp = j;
            }
        }
        //发生改变,交换
        if (i != cmp)
        {
            LongSwap(&students[i].num, &students[cmp].num);
            CharSwap(students[i].name, students[cmp].name);
            FloatSwap(&students[i].sum, &students[cmp].sum);
            FloatSwap(&students[i].aver, &students[cmp].aver);
            for (int j = 0; j < m; j++)
            {
                FloatSwap(&students[i].score[j], &students[cmp].score[j]);
            }
        }
    }
}

int SearchbyNum(STU students[], int n, int m)
{
    int rank = -1;//学生排名
    int x;//被查询学号
    while (true)
    {
        printf("Please enter the student ID queried\n");
        scanf_s("%d", &x);
        SortbyScore(students, n, m, Descending);//先排序
        //顺序查找
        for (int i = 0; i < n; i++)
        {
            if (x == students[i].num)
            {
                printf("name:%-10s rank:%-10d", students[i].name, i + 1);//索引+1为排名
                for (int j = 0; j < m; j++)
                {
                    printf("科目%d:%-10.1f", j + 1, students[i].score[j]);
                }
                printf("\n");
                return i;
            }
        }
        printf("Can't find,please checkout again.\n");
    }
}

int SearchbyName(STU students[], int n, int m)
{
    int rank = -1;//学生排名
    char x[MAX_LEN];//被查询姓名
    while (true)
    {
        printf("Please enter the student name queried\n");
        gets_s(x, MAX_LEN);
        SortbyScore(students, n, m, Descending);//先排序
        //顺序查找
        for (int i = 0; i < n; i++)
        {
            if (strcmp(x, students[i].name) == 0)
            {
                printf("name:%-10s rank:%-10d", students[i].name, i + 1);//索引+1为排名
                for (int j = 0; j < m; j++)
                {
                    printf("科目%d:%-10.1f", j + 1, students[i].score[j]);
                }
                printf("\n");
                return i;
            }
        }
        printf("Can't find,please checkout again.\n");
    }
}

void StatistAnalysis(STU students[], int n, int m)
{
    for (int j = 0; j < m; j++)//统计每门课
    {
        printf("科目%d情况如下:\n", j + 1);

        int ranks[5] = { 0 };// 各种档次的人数,首位赋值为0,后续位补充为0
        for (int i = 0; i < n; i++)//遍历整个成绩,统计数据
        {
            if (students[i].score[j] < 60)
            {
                ranks[0]++;
            }
            else if (students[i].score[j] < 70 && students[i].score[j] >= 60)
            {
                ranks[1]++;
            }
            else if (students[i].score[j] < 80 && students[i].score[j] >= 70)
            {
                ranks[2]++;
            }
            else if (students[i].score[j] < 90 && students[i].score[j] >= 80)
            {
                ranks[3]++;
            }
            else//90到100档
            {
                ranks[4]++;
            }
        }
        //输出统计数据
        printf("%-10s%-10s%-10s\n", "rank ", "amount", "percent");
        printf("%-10s%-10d%.0f%%\n", "0-59 ", ranks[0], ranks[0] / (float)n * 100);
        printf("%-10s%-10d%.0f%%\n", "60-69", ranks[1], ranks[1] / (float)n * 100);
        printf("%-10s%-10d%.0f%%\n", "70-79", ranks[2], ranks[2] / (float)n * 100);
        printf("%-10s%-10d%.0f%%\n", "80-89", ranks[3], ranks[3] / (float)n * 100);
        printf("%-10s%-10d%.0f%%\n", "90-100", ranks[4], ranks[4] / (float)n * 100);
    }
}

void PrintScore(STU students[], int n, int m)
{
    printf("%-10s%-10s", "学号", "姓名");
    for (int j = 0; j < m; j++)
    {
        printf("%-4s%-6d", "科目", j + 1);//汉字一个字算两个width
    }
    printf("%-10s%-10s\n", "总分", "平均分");

    for (int i = 0; i < n; i++)
    {
        printf("%-10d%-10s", students[i].num, students[i].name);
        for (int j = 0; j < m; j++)
        {
            printf("%-10.1f", students[i].score[j]);
        }
        printf("%-10.1f%-10.1f", students[i].sum, students[i].aver);
        printf("\n");
    }
}

void FloatSwap(float* a, float* b)
{
    float tmp = *a;
    *a = *b;
    *b = tmp;
}

void LongSwap(long* a, long* b)
{
    long tmp = *a;
    *a = *b;
    *b = tmp;
}

void CharSwap(char a[], char b[])
{
    char tmp[MAX_LEN];
    strcpy_s(tmp, MAX_LEN, a);
    strcpy_s(a, MAX_LEN, b);
    strcpy_s(b, MAX_LEN, tmp);
}

int Ascending(int a, int b)
{
    return a > b;
}

int Descending(int a, int b)
{
    return a < b;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V5.0 的相关文章

随机推荐

  • 公安局计算机岗位应知应会综合基础知识,事业单位考试计算机综合知识基础知识真题...

    事业单位考试计算机综合知识基础知识真题 根据最新事业单位考试真题等汇总而成 事业编考试网 http www shizheng100 com 提供更多笔试真题 面试原创内容等 一 单项选择题 本大题共50个小题 每小题1分 共50分 1 下面
  • 微信小程序:从小程序打开H5页面

    1 样式 关于踩的坑和更多信息请看后续文章 已发布 2 两个wxml 第一个wxml
  • 退役小节

    大学期间我能拿的出手的好像只有acm 貌似acm的成绩也拿不出手 有点荒废的意思 大一被猴哥拉进武术协会 然后第二年这个协会就解散了 解散之前猴哥还在协会找个女朋友 真的是皮 第一学期刷了500道题 然后就进了acm实验室 为什么要进实验室
  • 语义分割系列26-VIT+SETR——Transformer结构如何在语义分割中大放异彩

    SETR Rethinking Semantic Segmentation from a Sequence to Sequence Perspectivewith Transformers 重新思考语义分割范式 使用Transformer实
  • Java 函数式编程 详细介绍

    在兼顾面向对象特性的基础上 Java语言通过Lambda表达式与方法引用等 为开发者打开了函数式编程的大门 下面我们做一个初探 Lambda的延迟执行 有些场景的代码执行后 结果不一定会被使用 从而造成性能浪费 而Lambda表达式是延迟执
  • linux远程管理工具之tabby

    linux远程管理工具之tabby Tabby简介 Tabby下载及安装 PowerShell 快捷键 Tabby简介 tabby是一款开源且免费的终端连接工具 可以使用于多平台 例如 windows mac linux等系统都支持 Tab
  • 峰面积峰高半峰宽_峰高峰面积的计算方法

    峰面积和峰高的计算方法 峰面积和峰高是色谱图上最基本数据 它们的测量精度将直接影响定量分析的精度 在色谱峰是对称 峰 且与其他峰完全分离的情况下 准确地测出峰高和峰面积是不困难的 但是当色谱峰不对称 没 有完全分离开以及基线发生较明显的漂移
  • Hudi学习2:数仓和数据湖介绍

    数据湖解决了 1 数仓无法存储非结构化数据 图像 音视频等 的问题 2 解决了数仓必须分层 数据湖直接存储原始数据 不需要分层 直接用于应用 数仓和数据湖的区别 性价比 分层可能存在冗余
  • Pytorch 中 LSTM 和 LSTMCell 的区别

    LSTM 的官方文档在这里 在例子中 LSTM 函数的参数为输入特征向量的长度 input size 10 隐藏层向量的长度 hidden size 20 隐藏层的数量 num layers 2 输入 input 的维度是时间 序列长度 句
  • Java学习interface4

    A package com mashibing interfacedemo5 public interface A public void show B package com mashibing interfacedemo5 public
  • dataphin如何使用zip文件,离线安装python第三方包?

    好久没写文章啦 快过年了啦 打工人要回家啦 背景介绍 每次在dataphin里使用pandas的时候 都要pip install pandas dataphin需要下载pandas安装包 比较费时 总而言之 这种方式慢 所以我要在datap
  • 台式计算机销量排名,2019台式电脑销量排行_笔记本哪些好 2019笔记本销量排行榜...

    笔记本哪些好 2019笔记本销量排行榜 JPG 594x348 232KB 428 250 笔记本哪些好 2019笔记本销量排行榜 JPG 570x350 128KB 407 250 台式电脑哪款好 2019十款热门台式电脑排行榜 JPG
  • cocos2d-x 旅程开始--(实现瓦片地图中的碰撞检测)

    转眼隔了一天了 昨天搞了整整一下午加一晚上 楞是没搞定小坦克跟砖头的碰撞检测 带着个问题睡觉甚是难受啊 还好今天弄成功了 不过感觉程序不怎么稳定啊 而且发现自己写的东西让我重写一遍的话我肯定写不出来 还要继续学习啊 上次的进度 实现了坦克的
  • 学生信息管理系统——C语言版本(易懂)

    一 功能概述 1 账号的登录与注册 2 学生信息的增添 3 学生信息对于学号的排序 4 学生信息的删除 5 学生信息的修改 6 学生信息的查找 7 学生信息的分类 8 学生信息表的打印 9 结束程序时对信息的在内存中的保存 10 执行程序时
  • 地类图斑代码大全_使用字段计算器对同一地类图斑自动编号(标记重复记录)...

    问题描述 在某个表中把某个字段 如字段一 中具有相同值的记录标出来 并且按照从小到大的排序自动增加一个编号 存储在字段二中 实现如下的效果 FID 字段1 字段2 1 001 0011 2 001 0012 3 002 0021 4 002
  • 离散系统的稳定性分析

    自控笔记 6 5 离散系统的稳定性分析 一 离散系统稳定的充要条件 线性连续系统的稳定的充要条件是特征方程的根全部位于左半s平面 在离散系统中 根据s平面与z平面之间的映射关系 s j z
  • android开发技术要点

    android开发技术要点 应用内HTML5的开发 提升应用内HTML5的开发和使用体验 com tencent smtt 手机京东 第三方登录 腾讯QQ互联平台 热补丁 Tinker 微信Android热补丁方案 地图 腾讯位置服务 百度
  • 计算机视觉基础1

    颜色空间 空间之间可以进行转换 RGB空间 HSV空间 CIE XYZ颜色空间 基于人类颜色视觉的直接测定 主流的颜色空间 RGB三通道彩色图 图片 三维矩阵 0 255 单通道灰度图 Gray 图像预处理 是图像增强的过程 目标 改善图像
  • Cholesky分解、乔列斯基分解

    一 简介 1 1 定理 Cholesky分解法 又叫 平方根法 是一种分解 正定Hermite矩阵 即 A A H boldsymbol A boldsymbol A mathrm H A AH 的方法 以下我用
  • 苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V5.0

    github https github com Jackie0Feng SAMS 系统需求描述 某班有最多不超过30人 具体人数由键盘输入 参加期末考试 考试科目最多不超过6门 具体门数由键盘输入 定义结构体类型 用结构体数组作函数参数编程