注册 登录
编程论坛 C语言论坛

求大佬帮忙,自己编不出来,想参考一下

g2738597355 发布于 2022-05-11 23:46, 1972 次点击
学生成绩管理系统设计
学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:
(1)能按学期、按班级完成对学生成绩的录入、修改
(2)能按班级统计学生的成绩,求学生的总分及平均分
(3)能查询学生成绩,不及格科目及学生名单
(4)能按班级输出学生的成绩单
要求:使用文件方式存储数据。
8 回复
#2
wp2319572022-05-12 07:36
回复 楼主 g2738597355
这东西,没人写的主要原因是代码量大,而且没任何用处
#3
apull2022-05-12 08:36
顶楼上,你搜一下,论坛里以前别人写过的不少。
#4
g27385973552022-05-12 12:03
回复 3楼 apull
好的,谢谢
#5
yyy121382022-05-12 13:36
求求大佬找一下错误吧
#include <stdio.h>
int main(){
    int x, y , num , data ,a[num];
    printf("请输入当前数列的个数num: ");
    scanf("%d",&num);
    printf ("输入了%d个整数",&num);
    for(x=0;x<num;x++){
        scanf("%d",&a[x]);
    }
    printf ("输入要插入的整数: ");
    scanf("%d",&data);
    for(x=0;x<num;x++){
        if(data>a[x])
        continue;
        y=num-1;
        while(y>=x){
            a[y]=a[y+1];
            y++;
        }
        a[x]=data;
        break;
    }
    if(y==num){
    a[num]=data;
    for(x=0;x<num;x++)
    printf("%d",a[x]);
    printf("\n");}
    return 0;
    }
#6
wp2319572022-05-12 14:24
回复 5楼 yyy12138
int  a[num]   不能这样定义动态数组
#7
rjsp2022-05-12 16:27
回复 5楼 yyy12138
你起码要把题目贴出来吧,否则怎么从错误代码推导出正确的题目要求?

程序代码:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>

int main( void )
{
    // 输入数量 num
    size_t num;
    printf( "请输入当前数列的个数: " );
    if( 1 != scanf("%zu",&num) )
    {
        puts( "输入错误." );
        return 1;
    }

    // 申请 int[num+1],之所以加一是因为你后面还需要在其中插入一个元素
    int* a;
    if( num+1>SIZE_MAX/sizeof(int) || (a=malloc((num+1)*sizeof(int)))==NULL )
    {
        puts( "内存分配失败." );
        return 1;
    }

    // 输入num个整数
    printf( "请输入这%zu个整数: ", num );
    for( size_t i=0; i!=num; ++i )
    {
        if( 1 != scanf("%d",&a[i]) )
        {
            puts( "输入错误." );
            return 1;
        }
    }

    // 输入待插入的整数data
    int data;
    printf( "输入要插入的整数: " );
    if( 1 != scanf("%d",&data) )
    {
        puts( "输入错误." );
        return 1;
    }

    // 找到插入点
    size_t idx;
    for( idx=0; idx!=num && data>=a[idx]; ++idx );
    // 将插入点后面的数依次后移
    memmove( a+idx+1, a+idx, (num-idx)*sizeof(int) );
    // 在插入点插入data
    a[idx] = data;

    // 输出插入后的数组
    for( size_t i=0; i!=num+1; ++i )
        printf( "%d%c", a[i], " \n"[i==num] );

    // 释放内存
    free( a );
}


输入
6
1 1 2 2 2 3
2
输出
1 1 2 2 2 2 3

输入
6
1 1 2 2 2 3
3
输出
1 1 2 2 2 3 3

输入
6
1 1 2 2 2 3
4
输出
1 1 2 2 2 3 4

输入
3
1 1 3
2
输出
1 1 2 3

输入
3
1 2 3
0
输出
0 1 2 3
#8
纯蓝之刃2022-05-12 16:28
回复 5楼 yyy12138
程序代码:
#include <stdio.h>
int main()
{
    int x, y, num=0, data;
    printf("请输入当前数列的个数num: ");
    scanf("%d",&num);
    printf("输入了%d个整数",num);
    int a[num];
    for(x=0; x<num; x++)
    {
        scanf("%d",&a[x]);
    }
    printf ("输入要插入的整数: ");
    scanf("%d",&data);
    for(x=0; x<num; x++)
    {
        if(data>a[x])
            continue;
        y=num-1;
        while(y>=x)
        {
            a[y]=a[y+1];
            y++;
        }
        a[x]=data;
        break;
    }
    if(y==num)
    {
        a[num]=data;
        for(x=0; x<num; x++)
            printf("%d",a[x]);
        printf("\n");
    }
    return 0;
}

要先定义num,再定义数组a,为了防止num为随机数给他付个初值。
#9
Anfei19792022-05-14 11:44
这都是通用的软件程序,很简单的
1