关于c语言从文件中读取学生信息,处理并打印

图片说明
b) 建议函数流程:
i. 打开数据文件,失败返回-1;
ii. 从头到尾扫描数据文件(即预读一遍)获得学生人数;
iii. 根据学生人数,利用malloc和sizeof等函数或运算符为struct student** pStudents分配内存;
iv. 利用rewind函数,定位到文件头;
v. 读取数据文件,并把每一条记录通过数组下标法或指针法保存到结构体数组pStudents中;
vi. 关闭文件;
vii. 返回学生人数。

c) 数据文件格式说明:
一行一条学生信息的记录,不同属性用空格隔开,输入数据中无总成绩记录,例如:
张三 通信 89 93 95
李四 网络 88 91 94
王五 物联网 71 94 88

  1. 编写统计函数:
    a) 函数定义void Count(struct student pStudents[], int num)。输入参数分别为保存学生的结构体数组和学生人数。
    b) 功能为:统计所有学生的总成绩和每个专业(假定一共三个专业:通信,网络,物联网)的平均成绩;输入参数包括学生信息结构体数组,学生人数,返回的每个学生的总成绩直接填充到对应的输入结构体数组对应字段中。统计信息包括三个专业的总人数、平均成绩数组,用全局变量来表示。访问每个学生信息的时候,用指针来指向当前正在处理的学生。
    c) 设计一个或者三个带参数的宏,判断输入的字符串是否是指定的专业名称,并在函数Count中使用。

  2. 编写main函数实现:
    a) 定义变量,其中保存学生信息的数据文件直接在源代码中初始化;
    b) 读取学生信息,如果失败,打印失败信息并退出程序;
    c) 统计学生信息;
    d) 输出统计信息。
    e) 释放内存。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student{
    char name[15];
    char major[15];
    int Eng_sco;
    int cal_sco;
    int c_sco;
    int sum;
};
int tx_per=0,tx_ave,tx_sum=0;
int wl_per=0,wl_ave,wl_sum=0;
int wlw_per=0,wlw_ave,wlw_sum=0;
int ReadStudentInfo(const char* filename, struct student** pStudents);
void Count(struct student pStudents[], int num);
int main()
{

    int count;
    int m;
    struct student *list;
    count=ReadStudentInfo("readme.txt", &list);
    printf("学生信息: \n");
    printf("----------------------------------------------------\n");
    printf("序号  姓 名  专业名称 英语成绩 线性代数成绩 c语言成绩 总成绩\n");
    for(m=1;m<=count;m++)
    {
        printf("%4d %s %s %4d %4d %4d %4d\n",m,(list+m-1)->name,(list+m-1)->major,(list+m-1)->Eng_sco,(list+m-1)->cal_sco,(list+m-1)->c_sco,(list+m-1)->sum);
    }
    Count(list, count);
    printf("\n统计信息 :\n");
    printf("----------------------------------------------------\n");
    printf("序号  专业名称 学生人数 平均成绩\n");
    printf("   1    通信      %d       %d\n",tx_per,tx_ave);
    printf("   2    网络      %d       %d\n",wl_per,wl_ave);
    printf("   3   物联网     %d       %d\n",wlw_per,wlw_ave);

    return 0;
}
int ReadStudentInfo(const char* filename, struct student** pStudents)
{
    FILE *fp;
    char ch;
    int i=1,j;
    fp=fopen(readme.txt,"r");
    if(fp==NULL)
    {
        printf("cann't open the file");
        exit(-1);
    }
    ch=fgetc(fp);
    while(ch!=EOF)
    {
        if(ch=='\n')
        {
            i++;
        }
        ch=fgetc(fp);
    }
    rewind(fp);
     *pStudents=(struct student*)malloc(sizeof(** pStudents)*i);
    for(j=0;j<i;j++)
    {
        fread(&*pStudents[j],sizeof(struct student)-sizeof(int),1,fp);
        (*pStudents+j)->sum=((*pStudents+j)->Eng_sco+(*pStudents+j)->cal_sco+(*pStudents+j)->c_sco);
    }
    fclose(fp);
    return i;
}
void Count(struct student pStudents[], int num)
{
    int n=1;
    for(n=1;n<=num;n++)
    {
        if(!strcmp((pStudents+n-1)->major,"通信"))
        {
            tx_per++;
            tx_sum=tx_sum+(pStudents+n-1)->sum;
        }
        if(!strcmp((pStudents+n-1)->major,"网络"))
        {
            wl_per++;
            wl_sum=wl_sum+(pStudents+n-1)->sum;
        }
        if(!strcmp((pStudents+n-1)->major,"物联网"))
        {
            wlw_per++;
            wlw_sum=wlw_sum+(pStudents+n-1)->sum;
        }
        tx_ave=tx_sum/tx_per;
        wl_ave=wl_sum/wl_per;
        wlw_ave=wlw_sum/wlw_per;
    }
    free(pStudents);
}

运行不起来,是哪里出问题了?

c

13个回答

 \#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student{
    char name[15];
    char major[15];
    int Eng_sco;
    int cal_sco;
    int c_sco;
    int sum;
};
int tx_per=0,tx_ave,tx_sum=0;
int wl_per=0,wl_ave,wl_sum=0;
int wlw_per=0,wlw_ave,wlw_sum=0;
int ReadStudentInfo(const char* filename, struct student** pStudents);
void Count(struct student pStudents[], int num);
int main()
{

    int count;
    int m;
    struct student *list;
    count=ReadStudentInfo("stu.txt", &list);
    printf("学生信息: \n");
    printf("----------------------------------------------------\n");
    printf("序号  姓名  专业名称  英语成绩   线性代数成绩    c语言成绩   总成绩\n");
    for(m=1;m<=count;m++)
    {
        printf("%4d %6s %6s %4d %4d %4d %4d\n",m,(list+m-1)->name,(list+m-1)->major,(list+m-1)->Eng_sco,(list+m-1)->cal_sco,(list+m-1)->c_sco,(list+m-1)->sum);
    }
    Count(list, count);
    printf("\n统计信息 :\n");
    printf("----------------------------------------------------\n");
    printf("序号  专业名称 学生人数 平均成绩\n");
    printf("   1    通信      %d       %d\n",tx_per,tx_ave);
    printf("   2    网络      %d       %d\n",wl_per,wl_ave);
    printf("   3   物联网     %d       %d\n",wlw_per,wlw_ave);

    return 0;
}
void CutString(char* buf,char*temp,char sp);
int ReadStudentInfo(const char* filename, struct student** pStudents)
{
    FILE *fp;
    char ch;
    int i=1,j;
    fp=fopen(filename,"r");
    if(fp==NULL)
    {
        printf("cann't open the file");
        exit(-1);
    }
    ch=fgetc(fp);
    while(ch!=EOF)
    {
        if(ch=='\n')
        {
            i++;
        }
        ch=fgetc(fp);
    }
    rewind(fp);
    *pStudents=(struct student*)malloc(sizeof(** pStudents)*i);

    char buf[512]={0};
    for(j=0;j<i;j++)
    {
        memset(*pStudents+j,0,sizeof(struct student));
        fgets(buf,512,fp);
        int len = strlen(buf);
        buf[len]=' ';


        CutString(buf,(*pStudents+j)->name,' ');
        CutString(buf,(*pStudents+j)->major,' ');
        char e_Score[8],cal_Score[8],c_Score[8];

        memset(e_Score,0,8);
        memset(cal_Score,0,8);
        memset(c_Score,0,8);
        CutString(buf,e_Score,' ');
        (*pStudents+j)->Eng_sco = atoi(e_Score);
        CutString(buf,cal_Score,' ');
        (*pStudents+j)->cal_sco = atoi(cal_Score);
        CutString(buf,c_Score,' ');
        (*pStudents+j)->c_sco = atoi(c_Score);
        (*pStudents+j)->sum=((*pStudents+j)->Eng_sco+(*pStudents+j)->cal_sco+(*pStudents+j)->c_sco);
    }
    fclose(fp);
    return i;
}

void CutString(char* buf,char*temp,char sp)
{
    int len = strlen(buf);
    for (int i=0;i<len;i++)
    {
        if (buf[i]==sp)
        {
            memcpy(buf,buf+i+1,strlen(buf+i+1));
            break;
        }
        temp[i] = buf[i];
    }
}

void Count(struct student pStudents[], int num)
{
    int n=1;
    for(n=1;n<=num;n++)
    {
        if(!strcmp((pStudents+n-1)->major,"通信"))
        {
            tx_per++;
            tx_sum=tx_sum+(pStudents+n-1)->sum;
            tx_ave=tx_sum/tx_per;
        }
        if(!strcmp((pStudents+n-1)->major,"网络"))
        {
            wl_per++;
            wl_sum=wl_sum+(pStudents+n-1)->sum;
            wl_ave=wl_sum/wl_per;
        }
        if(!strcmp((pStudents+n-1)->major,"物联网"))
        {
            wlw_per++;
            wlw_sum=wlw_sum+(pStudents+n-1)->sum;
            wlw_ave=wlw_sum/wlw_per;
        }    
    }
    free(pStudents);
}


闲来无事,改了一把, 拿过去跑一把吧

ReadStudentInfo(const char* filename, struct student** pStudents)函数中fopen的readme.txt如果是文件名,请加双引号,如果是形参,请写参数名

senlijiu
senlijiu 我这样改,但就是运行不起来。我把fopen中的文件名改为一个不存在的文件名时,可以打印出cann't open the file然后跳出。但改为形参或存在的文件名时,程序就运行不起来
大约 2 年之前 回复

书上C语言的文件里有

senlijiu
senlijiu 什么书?
大约 2 年之前 回复
fp=fopen(readme.txt,"r");第一个参数路径需要双引号

ReadStudentInfo(const char* filename, struct student** pStudents)函数中fopen的readme.txt如果是文件名,请加双引号,如果是形参,请写参数名

fp=fopen(readme.txt,"r")这里加个双引号

fp=fopen(readme.txt,"r");

改成

fp=fopen(filename,"r");

我把fopen中的文件名改为一个不存在的文件名时,可以打印出cann't open the file然后跳出。但改为形参或存在的文件名时,程序就运行不起来图片说明

读文件函数写的有问题,1、最好把while(ch!=EOF)改为while(!feof(fp)) 2、你打开文件的方式为“r”,但却用fread以二进制方式读取,还是先看看读写文件的基本方式吧

问题出在 fread(&*pStudents[j],sizeof(struct student)-sizeof(int),1,fp);这一句,你这样读,要求文件保存的时候也是直接保存结构体到文件,这样的文件你是看不懂的,而现在是保存的是人可以看懂的字符串,所以这个函数是不能用的,可以使用fgets()来读取一行放到缓冲里,让后按照空格解析出每一个字段来,赋值给结构体的相应的成员

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言读取WAV文件并读取
c语言如何将WAV音频文件读取并存入char数组中,读入的数据要能用而不是乱码!求大神!
关于c语言文件的读取和修改
直接从文件中读取到屏幕 查询 修改 和把文件以链表的形式写入内存在查询 读取 修改 哪个效率高呢? 把文件写入到链表也需要时间吧
c# 如何从数据库格式(eg: .db , .sqlite)文件流中读取数据信息显示界面中,而不是直接从文件中读取
c# 如何从数据库格式(eg: .db , .sqlite)文件流中读取数据信息显示界面中,而不是直接从文件中读取,麻烦各位告知一下这种情况如何处理,谢谢
关于c语言读取文件信息到链表,怎么操作?
问题:在读取文件数据到链表时好像出错了,除了"w+"的打开方式会让打印函数在程序运行,其他的打开方式在程序运行后不显示。![图片说明](https://img-ask.csdn.net/upload/201903/16/1552703248_859387.png) ``` #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<malloc.h> struct stu { int id; int age; char name[10]; int score; struct stu *next; }; void printf_stu(struct stu * head)//打印函数 { struct stu *p = head; printf("学生成绩\n"); printf("%-2s %-2s\n", "学号", "成绩"); while (p != NULL) { printf("%d %d\n", p->id, p->score); p = p->next; } } struct stu * create(int n) {//输入链表函数 int i; struct stu *head = NULL, *p, *q = NULL; for (i = 1; i <= n; i++) { if ((p = (struct stu *)malloc(sizeof(struct stu))) == NULL) { printf("不能分配!"); exit(0); } p->next = NULL; printf("第%d个学生的信息:", i); scanf("%d%d", &p->id, &p->score); if (i == 1) head = p; else q->next = p; q = p; } return head; } void open_in(struct stu *head) {//输入文件函数1 FILE *fp; struct stu *p = head; fp = fopen("c://学生信息表.txt", "w"); fprintf(fp, "%s %s\n", "学号", "成绩"); while (p != NULL) { fprintf(fp, "%d %d\n", p->id, p->score); p = p->next; } fclose(fp); } void open_inpp(struct stu *head) {//输入文件函数2 FILE *fp; struct stu *p = head; fp = fopen("c://学生信息表.txt", "a+"); fprintf(fp, "%s %s\n", "学号", "成绩"); while (p != NULL) { fprintf(fp, "4%d 4%d\n", p->id, p->score); p = p->next; } fclose(fp); } struct stu *createlink()//读取文件数据函数 { struct stu *head = (struct stu *)malloc(sizeof(struct stu)); int t, y; struct stu *p; struct stu *q; FILE * fp; p = q = head; fp = fopen("c://学生信息表.txt", "r"); while (fscanf(fp, "%d %d\n", &t, &y) != EOF) { q = (struct stu*)malloc(sizeof(struct stu)); q->id = t; q->score = y; p->next = q; p = q; } p->next = NULL; head = p; return head; } void main() { int n, i,sel; struct stu *head = NULL,*p; for (i = 1; i > 0; i++) { printf("1-输入学生数据 2-添加学生数据\n"); printf("3-打印学生数据"); printf("请输入选择(1-3)\n"); scanf("%d", &sel); switch (sel) { case 3: head = createlink(); printf_stu(head); break; case 2: open_inpp(head); break; case 1: printf("输入n:"); scanf("%d", &n); head = create(n); open_in(head); break; } printf("1-回到上一页 2-结束\n"); scanf("%d", &sel); if (sel > 1) break; } system("pause"); } ```
关于C语言的文件读写的问题
写了个简单的成绩管理系统,非常简单,但是用到了文件操作,下面贴出两个函数,求大神解释一下,问什么在对文件进行写入时会出现问题。 #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 20 #define MAX 30 //每班最多30个学生 typedef struct gra { int C; //C语言与程序设计 int ENG; //英语 int FM; //高数 int UP; //大物 int PAS; //概率论与数理统计 } GRA; typedef struct student { //unsigned int studentClass; unsigned int studentID; char studentName[10]; //unsigned int studentTerm; GRA studentGrade; } STU; void Function0() { int i, k, classnum, studentnum; //unsigned int temp, temp1; char fileCode[N]; FILE *fp; printf("多少个班级?\n"); scanf("%d", &classnum); for (i = 0; i < classnum; i++) { /*printf("请输入班级编号:\n"); scanf("%u", &temp); printf("请输入学期编号:\n"); scanf("%u", &temp1);*/ printf("请输入第%d个班级的学生数:\n", i+1); scanf("%d", &studentnum); STU *pt = (STU*) calloc(studentnum, sizeof(STU)); STU *ppt = pt; //保存pt的值 printf("请依次输入各个同学的学号、姓名和各科成绩\n"); for (k = 0; k < studentnum; k++, pt++) { printf("第%d个学生\n", k+1); //printf("请依次输入各个同学的学号、姓名和各科成绩\n"); //printf("学号\t姓名\tC语言与程序设计\t大学英语\t高等数学\t大学物理\t概率论与数理统计\n"); //pt->studentClass = temp; printf("学号:"); scanf("%u", &pt->studentID); printf("%u\n", pt->studentID); printf("姓名:"); scanf("%s", pt->studentName); printf("%s\n", pt->studentName); //scanf("%u", &(pt->studentTerm)); printf("C语言与程序设计:"); scanf("%d", &pt->studentGrade.C); printf("%d\n", pt->studentGrade.C); printf("大学英语:"); scanf("%d", &pt->studentGrade.ENG); printf("%d\n", pt->studentGrade.ENG); printf("高等数学:"); scanf("%d", &pt->studentGrade.FM); printf("%d\n", pt->studentGrade.FM); printf("大学物理:"); scanf("%d", &pt->studentGrade.UP); printf("%d\n", pt->studentGrade.UP); printf("概率论与数理统计:"); scanf("%d", &pt->studentGrade.PAS); printf("%d\n", pt->studentGrade.PAS); } printf("请按格式输入文件名,文件名格式为:班级编号_学期编号,例如:04121517_201601\n"); getchar(); gets(fileCode); //将.bin连接在fileCode后面,组成文件名 strcat(fileCode, ".bin"); fp = NULL; if ((fp = fopen(fileCode, "wb")) == NULL) { printf("文件初始化错误!\n"); exit(1); } fwrite(pt, sizeof(STU), k, fp); fclose(fp); pt = ppt; free(pt); } } void Function1() { //char fileCode[N]; int flag = 0; int count = 0, i; unsigned int temp = 0; FILE *fp = NULL; printf("请输入希望修改信息的学生的班级编号_学期编号:\n"); fp = OpenProject(); //将文件内所有数据读入新开的结构体中进行数据修改,再放回原文件中 STU *pt = (STU *)calloc(MAX, sizeof(STU)); STU *ppt = pt; fread(pt, sizeof(STU), MAX, fp); //printf("%u\n", pt->studentID); //printf("%s\n", pt->studentName); printf("请输入希望修改信息的学生的学号:\n"); in3: scanf("%u", &temp); for (i = 0; i <= count-1; i++, pt++) { if (temp == pt->studentID) { flag = 1; break; } fseek(fp, sizeof(STU), SEEK_SET); } if (flag == 1) { printf("请重新输入该学生的各科成绩:\n"); scanf("%d", &pt->studentGrade.C); scanf("%d", &pt->studentGrade.ENG); scanf("%d", &pt->studentGrade.FM); scanf("%d", &pt->studentGrade.UP); scanf("%d", &pt->studentGrade.PAS); } else { printf("不存在此学号,请重新输入!"); goto in3; } fwrite(pt, sizeof(STU), count, fp); rewind(fp); pt = ppt; free(pt); fclose(fp); } 对文件进行读写用的函数是fread和fwrite。 在Function0中,我在把pt内的数据写到文件中前,特意把数据全部输出看数据是不是正确的,pt内的数据没有问题。然而数据写到文件中去就出问题了,写进去之后的数据是错误的,Funtion1()中读取的文件数据也就错了,求大神解答。
c语言如何读取文本文件中指定的字符串并保存到字符串数组中?
!(图片说明](https://img-ask.csdn.net/upload/201907/16/1563261125_779598.png) 如图片所示,一组数据包含多行,如何使用c语言读取该文件并将每组数据保存到字符串数组中?(总共181组数据)
如何用c语言读取excel文件
请问各路大神,如何用c语言读取excel文件中的内容,急、、、、、、
c语言如何删除文本文件的内容,和读取指定文件夹里的文件?
具体来说,逐行读取部分的文件,读取其中部分数据,判断后决定是否删除本行数据,文件每天都在更新,想达到放入指定文件夹就可以读取并且删除部分不合格数据的功能,我是个c萌新,求大家帮个忙,谢谢!
C语言大量文件依次读写
悬赏求助一个小问题。我有一个简单的C语言程序,可以实现计算一个输入文件同时输出结果文件。现在想要计算大量不同的该输入文件,同时一一输出结果。有会的求指导一下,加好友492385974,
C语言读取excel或txt文件数据
C语言如何读取Excel或txt文件中有float型和字符串型数据中的float型数据
C语言文件读写读取不了
![图片说明](https://img-ask.csdn.net/upload/201706/12/1497237375_183997.png) ![图片说明](https://img-ask.csdn.net/upload/201706/12/1497237387_363603.png) 明明文件位置也是对的,文件也存在,操作方法也是没有问题,怎么还是不对?
c语言 输入20个学生成绩
输入20个学生记录(每个学生记录包括学号,性名、性别、年龄、成绩),构成结构体数组,计算所有学生的平均分,找出最高分,找出所有不及格的学生,然后按成绩由高到低的排序结果写入文件中,最后读取文件,输出排序结果
C语言程序 学生成绩排序系统
1. 学生成绩排序系统简介 学生成绩排序系统可实现学生信息输入、学生信息输出、学生信息查询、学生成绩排序等功能。程序要求提供简单友好易于操作的界面。程序以C语言开发。 2.学生成绩管理系统基本要求: 假设有5名学生的成绩放在1个数组中。系统要求从键盘上输入的方法生成学生的成绩几有关数据。系统能按照要求根据不同条件对学生成绩进行管理。 3. 系统模块及操作要求: (1) 编写一个成绩生成函数。使用从键盘上输入的方法生成学生的各门课程的成绩(每门课程的成绩都是0-100之间的整数)并存入文件中,通过调用该函数生成全部学生的成绩再从文件中读出数据。 (2)先采用冒泡排序法,将学生成绩从高到低进行排序,再输入一个学生的成绩,将此成绩按照排 序规律插入已排好序的学生成绩数组。 (3)在函数中进行 全班学生成绩从高到低的顺序进行排名, 排名方式根据上方一排好的顺序。 (4)对学生的成绩进行优化。 若遇到成绩相同的同学,按照学号的大小进行重新排序。 (5)定义一个结构体数组,存放学生的学号,姓名,三 门课的成绩,输出单门课成绩最高的学生的学号、姓名,输出三门课程的平均分数以及最高的学生的学号、姓名及其平均分,再将学生按照平均分数从高到低进行排序并输出最后的结果。 (6)学生成绩文件管理。将学生的相关数据,存入文件中,再从文件中读出 按照平均分数从高到低进行排序,将结果输出到屏幕上,再从文件中读取学生的数据进行显示。 设计一个菜单,至少具有上述操作要求的基本功能,菜单设计请见图1。![图片说明](https://img-ask.csdn.net/upload/201605/31/1464710124_909761.png)
c语言中文件的读取问题。
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 1 int main() { struct call { char name[20]; char telephone[12]; char type[10]; }; struct call s1[N]; int i; FILE *fp; char filename[20]; fp=fopen(filename,"w"); printf("请输入打开路径:\n"); gets(filename); if(fp==NULL) { printf("此路径打不开文件\n"); exit (0); } for(i=0;i<=N;i++) { printf("请输入第%d个人的信息\n",i+1); printf("请输入联系人的姓名:\n"); gets(s1[i].name); printf("请输入联系人的电话:\n"); gets(s1[i].telephone); printf("请输入联系人的类别:\n"); gets(s1[i].type); fwrite(&s1[i],sizeof(struct call),1,fp); } fclose(fp); fp=fopen(filename,"rt"); printf("请输入打开路径:\n"); gets(filename); printf("通讯录的数据为:\n"); printf("姓名 电话号码 类别\n"); i=0; while(fread(&s1[i],sizeof(struct call),1,fp)!=NULL) { printf("%s %s %s\n",s1[i].name,s1[i].telephone,s1[i].type); i++; } fclose(fp); return 0; } 将数据写去文件时,终端可以显示,但顺着路径找,文件里面没有,刚开始学习文件,所以有点不知所措,望指导指导!
C语言 文件读写fscanf 不能读取文件第一行
我在做USACO的训练题 按照要求写了个读文件的程序,但是出了一点我不能理解的bug 希望老师指点指点 程序: ``` int main () { char comet[6]; char group[6]; FILE *input; input=fopen ("ride.in", "r"); fscanf (input, "%s\n%s", comet, group ); \\fscanf (input, "%s%s", comet, group ); 都试过结果是一样的 //test input puts ("\ntest input"); printf ("%s\n%s\n", comet, group ); printf ("%c\n%c\n", comet[0], group[0] ); return 0; } ``` ride.in 文件内容: ``` COMETQ HVNGAT ``` 编译后的输出却是: ``` HVNGAT H ```
c语言读取文件出现一串乱码
c语言读取文件数据时最后出现一串乱码怎么办![图片](https://img-ask.csdn.net/upload/201603/11/1457701905_263874.jpg)![图片](https://img-ask.csdn.net/upload/201603/11/1457701930_642613.jpg)
C语言从学生档案文件中读取平时分并按某种计算出平时成绩并创建一个新文件输出
平时成绩=基准分+小组奖惩分+个人全班奖惩分+个人小组奖惩分; 小组奖惩分=(小组得分-小组平均分)*d1 个人全班奖惩分=(个人分-个人全班平均分)*d2 个人小组奖惩分=(个人分-组内个人平均分)*d3 基准分为80d1=0.35,d2=0.25,d3=0.3 #include <stdio.h> #include <stdlib.h> struct STU_info { int group; char stunum[10]; char name [8]; int grade; }; struct NEWSTU_info { int group; char stunum[10]; char name [8]; int ngrade; }; void main () { FILE *fp1,*fp2; int i,j,total,tave,gave,pgave[9],gtotal[9],std=80; double group_grade[53],pggrade[53],ptgrade[53],fgrade[53]; double d1=0.35,d2=0.25,d3=0.3; fp1=fopen ("desktop:\\stu_score1.txt","r"); if (fp1==NULL) { printf ("the file : stu_score1.txt not found!"); exit (-1); } STU_info stu[53],nstu[53]; for (i=0;i<53;i++) fgets (stu[i],20,fp1); for (i=0,total=0;i<53;i++) total+=stu[i].grade; gave=total/9; tave=total/53; for (i=0,j=0;i<9;i++) { for (;j<6;j++) { gtotal[i]+=stu[j].grade; } j+=6; } for (i=0;i<9;i++) pgave[i]=gtotal[i]/6; for (i=0;i<53;i++) { group_grade[i]=(gtotal[i]-gave)*d1; ptgrade[i]=(stu[i].grade-tgave)*d2; pggrade[i]=(stu[i].grade-pgave)*d3; fgrade[i]=std+group_grade[i]+ptgrade[i]+pggrade[i]; } fclose(fp1); fp2=fopen ("desktop:\\stu_score2.txt","w"); for (i=0;i<53;i++) { nstu[i].group=stu[i].group; nstu[i].stunum=stu[i].stunum; nstu[i].name=stu[i].name; nstu[i].grade=fgrade[i]; } for (i=0;i<53;i++) fputs(nstu[i],fp2); }求解哪些地方错了
c语言实现txt文件读取
VC编译器下c语言没有办法打开TXT文件。代码如下:#include <stdio.h> #include<stdlib.h> void main() { FILE *fp; if((fp=fopen("C:\Users\Administrator\Desktop\ad.txt","r"))==NULL) { printf("cannot open the file!"); exit(0); } else printf("ok"); fclose(fp); }
Java语言如何读取txt学生成绩记录?txt文件放在作业05目录下,可能有好几个,读取哪一个
Java语言如何读取txt学生成绩记录?txt文件放在作业05目录下,可能有好几个,读取哪一个
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Android性能优化(4):UI渲染机制以及优化
文章目录1. 渲染机制分析1.1 渲染机制1.2 卡顿现象1.3 内存抖动2. 渲染优化方式2.1 过度绘制优化2.1.1 Show GPU overdraw2.1.2 Profile GPU Rendering2.2 卡顿优化2.2.1 SysTrace2.2.2 TraceView 在从Android 6.0源码的角度剖析View的绘制原理一文中,我们了解到View的绘制流程有三个步骤,即m...
微服务中的Kafka与Micronaut
今天,我们将通过Apache Kafka主题构建一些彼此异步通信的微服务。我们使用Micronaut框架,它为与Kafka集成提供专门的库。让我们简要介绍一下示例系统的体系结构。我们有四个微型服务:订单服务,行程服务,司机服务和乘客服务。这些应用程序的实现非常简单。它们都有内存存储,并连接到同一个Kafka实例。 我们系统的主要目标是为客户安排行程。订单服务应用程序还充当网关。它接收来自客户的请求...
致 Python 初学者们!
作者| 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
SpringBoot2.x系列教程(三十六)SpringBoot之Tomcat配置
Spring Boot默认内嵌的Tomcat为Servlet容器,关于Tomcat的所有属性都在ServerProperties配置类中。同时,也可以实现一些接口来自定义内嵌Servlet容器和内嵌Tomcat等的配置。 关于此配置,网络上有大量的资料,但都是基于SpringBoot1.5.x版本,并不适合当前最新版本。本文将带大家了解一下最新版本的使用。 ServerProperties的部分源...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
爬取薅羊毛网站百度云资源
这是疫情期间无聊做的爬虫, 去获取暂时用不上的教程 import threading import time import pandas as pd import requests import re from threading import Thread, Lock # import urllib.request as request # req=urllib.request.Requ...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
HTML5适合的情人节礼物有纪念日期功能
前言 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字段也可自行修改,还有代码下半部分的JS代码需要修改一下起始日期 注意月份为0~11月 也就是月份需要减一。 当然只有一部分HTML和JS代码不够运行的,文章最下面还附加了完整代码的下载地址 &lt;!...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问