速求 做c程序 谢谢

一、C语言综合训练程序设计要求
已知在磁盘上有一个文本文件(stuin.txt),此文件存放了一组学生的成绩信息,按照如下格式存放:
1001 stuname1 89
1002 stuname2 78
1003 stuname3 60
......
1100 stuname100 87
请按照如下要求编写程序:
a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;
b. 将文本文件的内容读入到结构体数组中;
c. 显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);
d. 显示平均成绩、高于、低于和等于平均成绩的人数;
e. 显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;
f. 将以上显示的信息存放到stuout.txt文件中;

二、C语言综合训练设计报告要求
a. 结合教材第二章的内容,写出本次综合训练的分析文档;
b. 文档要求以WORD排版,语言简练,条理清楚;
c. 测试过程中遇到的主要问题及采取的解决措施;
d. 最后写出本次设计的个人总结;
e. 文档以“设计报告.DOC”名字保存。
c. 以w方式打开stuout.tat文件,定义各分数段计数器变量,循环判断各学生的成绩,并分段计数,使用fprintf技术结果写入stuout.tat中
麻烦了 你发到我QQ:364298448 谢谢了 我不会stuout.tat 这个


通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。

这次实训是老师给了范例程序,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。

通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。

计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。

八、参考资料:《C语言程序设计教程》

参考资料:《C语言程序设计教程》1.总结

通过本次的C++课程设计,让我学会了把书本上的知识应用到了实际中来。虽然在这几周中有过挫折和坎坷,有的问题一直到了最后才被解决,但是我认为这未必就不是好事,这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。

让我没有失去信心的是关怀我们的老师,当我们有了问题和疑问,老师就很耐心的给予讲解,让我们有了一个良好的学习氛围。追问

设计报告提纲
根据综合训练程序设计的要求,我以设计了学生成绩管理系统,程序的文件名为: ,以下介绍程序的功能、程序调试中出现的问题及处理情况及设计总结。
一、系统的功能介绍
(此处可以叙述你设计程序的功能,可以用流程图表示,也可用语言叙述)
二、实际操作中遇到的问题及处理情况。
(要求写5条以上)
三、个人总结
(此处写通过综合训练的程序设计过程,自己的收获及感想等)

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-02-19

程序挺简单,但是要做的事挺多,哈哈~~

下面是用C语言基于你给题目的要求量身打造的,希望对你有所帮助!

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <assert.h>

#define STU_NUM 100

#define EPS 1e-3

typedef struct Student

{

    int number;

    char name[20];

    int score;

}STU;

static int i = 0;

STU S[STU_NUM];

void load_file()

{

    FILE *in;

    assert((in=fopen("stuin.txt", "r"))!=NULL);

    while (!feof(in))

    {

        fscanf(in, "%d", &S[i].number);

        fscanf(in, "%s", S[i].name);

        fscanf(in, "%d", &S[i].score);

        i++;

    }

    fclose(in);

}

double average()

{

    int n = i;

    int sum = 0;

    while (n--)

        sum += S[n].score;

    return ((double)sum/i);

}

void write_file(const double avg)

{

    FILE *out;

    assert((out=fopen("stuout.txt", "w"))!=NULL);

    int n = 0;  //循环变量

    int high = S[0].score;

    for (n=0; n<i; n++)

        if (S[n].score > high)

            high = S[n].score;

    //写入成绩最高的学生信息

    fprintf(out, "%s", "成绩最高的人的学号、姓名和成绩\n");

    for (n=0; n<i; n++)

        if (S[n].score == high)

            fprintf(out, "%d\t%s\t%d\n", S[n].number, S[n].name, S[n].score);

    //显示平均成绩、高于、低于和等于平均成绩的人数

    int ln = 0; //低于平均分人数计数

    int hn = 0; //高域平均分人数计数

    int en = 0; //等于平均分人数计数

    for (n=0; n<i; n++)

    {

        if (avg - S[n].score > EPS)

            ln++;

        else if (avg - S[n].score < EPS)

            hn++;

        else

            en++;

    }

    fprintf(out, "%s", "平均成绩、高于、低于和等于平均成绩的人数\n");

    fprintf(out, "%d\t%d\t%d\n", ln, hn, en);

    //显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、

    //及格(60~69)、不及格(0~59)的人数和所占百分比

    int sn = 0;  //成绩为优秀(90~100)书生人数

    int gn = 0;  //成绩为良好(80~89)书生人数

    int mn = 0;  //成绩为中等(70~79)书生人数

    int pn = 0;  //成绩为及格(60~69)书生人数

    int fn = 0;  //成绩为不及格(0~59)书生人数

    for (n=0; n<i; n++)

    {

        if (S[n].score > 90)

            sn++;

        else if (S[n].score > 80)

            gn++;

        else if (S[n].score > 70)

            mn++;

        else if (S[n].score > 60)

            pn++;

        else

            fn++;

    }

    fprintf(out, "%s", " 显示成绩为优秀、良好、中等、及格、不及格的人数和所占百分比\n");

    fprintf(out, "%lf\t%lf\t%lf\t%lf\t%lf\n",

            (double)sn/i, (double)gn/i, (double)mn/i, (double)pn/i, (double)fn/i);

    fclose(out);

}

int main()

{

    load_file();

    write_file(average());

    return 0;

}

部分截图:

追问

谢谢了 我没学好 马上考试 没办法 只能这样了 太感谢你了

追答

哈哈,没关系,你加油哦!

追问

2.编写提示:
a. 定义最高成绩变量,使用r方式打开stuin.dat,使用fscanf读出成绩并求出最高成绩,以只写方式打开stuout.dat文件,循环判断,若成绩等于最高成绩,则打印该生的学号、姓名、成绩等信息(包括重复),并写入stuout.dat文件中
b. 定义平均成绩变量,定义并求出高于、低于、等于平均成绩计数器变量,以a方式打开stuout.dat文件, 使用fprintf将高于、低于、等于平均成绩人数写入stuout.dat

追答

把.txt改成.bat就完事了啊!这不用我写了吧

本回答被提问者采纳
相似回答