实验5

#include<stdio.h>
#define N 5
#define M 80
typedef struct{
	char name[M];
	char author[M];
	
}Book;
int main()
{
	Book x[N]={
	{"一九八四","乔治·奥威尔" }, 
	{"美丽新世界","赫胥黎"},
	{"昨日的世界","斯蒂芬·茨威格"}, 
	{"万历十五年","黄仁宇"}, 
	{"一只特立独行的猪","王小波"} 
	};
	int i;
	FILE *fp;
	fp=fopen("data1.txt","w");
	if(fp==NULL)
	{
		printf("fail to open file\n");
		return 1;
	 } 
	 for(i=0;i<N;++i)
	 {
	 	fprintf(fp,"%-20s %-20s\n");
	 	printf( "%-20s  %-20s\n",x[i].name,x[i].author);
	 }
	 fclose(fp);
	 return 0;
} 

  

1.因为数组的表现形式本身就代表其起始地址

#include<stdio.h>
#define N 5
#define M 80
typedef struct{
	char name[M];
	char author[M];
	
}Book;
int main()
{
	Book x[N]={
	{"一九八四","乔治·奥威尔" }, 
	{"美丽新世界","赫胥黎"},
	{"昨日的世界","斯蒂芬·茨威格"}, 
	{"万历十五年","黄仁宇"}, 
	{"一只特立独行的猪","王小波"} 
	};
	int i;
	FILE *fp;
	fp=fopen("data2.dat","wb");
	if(fp==NULL)
	{
		printf("fail to open file\n");
		return 1;
	 } 
	 fwrite(x,sizeof(Book),N,fp);
	 fclose(fp);
	 return 0;
} 

  

#include<stdio.h>
#define N 5
#define M 80
typedef struct{
	char name[M];
	char author[M];
	
}Book;
int main()
{
	Book x[N]={
	{"一九八四","乔治·奥威尔" }, 
	{"美丽新世界","赫胥黎"},
	{"昨日的世界","斯蒂芬·茨威格"}, 
	{"万历十五年","黄仁宇"}, 
	{"一只特立独行的猪","王小波"} 
	};
	int i;
	FILE *fp;
	fp=fopen("data2.dat","rb");
	if(fp==NULL)
	{
		printf("fail to open file\n");
		return 1;
	 } 
	fread(x,sizeof(Book),N,fp);
	 for(i=0;i<N;i++)
	 printf("%-20s%-20s\n",x[i].name,x[i].author);
	 fclose(fp);
	 return 0;
} 

  

 1.成功生成

2.直观可见

#include<stdio.h>
int main()
{
int i;
FILE *fp;
fp=fopen("data3_2.txt","r");

fseek(fp,0L,SEEK_END);
i=ftell(fp);
printf("lengh of file is%d",i);
}

  

 

#include<stdio.h>
#define N 5

typedef struct
{
	long no;
	char name[20];
	int score;
}STU;

int findMinlist(STU s[],int n,STU t[]);

int main()
{
	STU stu[N],minlist[N];
	int count,i;
	FILE *fin,*fout;
	
	fin=fopen("data4_1.txt","r");
	if(fin==NULL)
	{
		printf("fail to open file\n");
		return 1;
	}
	
	for(i=0;i<N;++i)
	{
		fscanf(fin,"%ld %s %d",&stu[i].no,stu[i].name,&stu[i].score);
		printf("%ld %s %d\n",stu[i].no,stu[i].name,stu[i].score);
	}
	fclose(fin);
	
	count=findMinlist(stu,N,minlist);
	
	printf("\n一共有%d个最低分,信息如下:\n",count);
	for(i=0;i<count;++i)
	{
		printf("%ld %s %d\n",minlist[i].no,minlist[i].name,minlist[i].score);
	}
	
	fout=fopen("data4_2.txt","w");
	if(fout==NULL)
	{
		printf("fail to open file\n");
		return 1;
	}
	
	for(i=0;i<count;++i)
	{
		fprintf(fout,"%ld %s %d\n",minlist[i].no,minlist[i].name,minlist[i].score);
	}
	fclose(fout);
	
	return 0;
}

int findMinlist(STU  s[],int n,STU t[])
{
	int i,k,min_score;
	
	min_score=s[0].score;
	
	for(i=1;i<n;++i)
	{
		if(s[i].score<min_score)
	        min_score=s[i].score;
	}
	
	k=0;
	for(i=0;i<n;++i)
	{
		if(s[i].score==min_score)
		{
			t[k]=s[i];
			++k;
		}
	}
	return k;
}

  

 

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

#define N 10

typedef struct
{
    long int id;
    char name[20];
    float objective;  /*客观题得分*/
    float subjective; /*操作题得分*/
    float sum;
    char level[10];
} STU;

// 函数声明
void input(STU s[], int n);
void output(STU s[], int n);
void process(STU s[], int n);

int main()
{
    STU stu[N];

    printf("从文件读入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N);
    input(stu, N);

    printf("\n对考生信息进行处理: 计算总分,确定等级\n");
    process(stu, N);

    printf("\n打印考生完整信息, 并保存到文件中");
    output(stu, N);

    return 0;
}

// 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
void input(STU s[], int n)
{
    int i;
    FILE* fin;

    fin = fopen("examinee.txt", "r");
    if (fin == NULL)
    {
        printf("fail to open file\n");
        exit(0);
    }

    while (!feof(fin))
    {
        for (i = 0; i < n; i++)
            fscanf(fin, "%ld %s %f %f", &s[i].id, s[i].name, &s[i].objective, &s[i].subjective);
    }

    fclose(fin);
}

//输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级
// 不仅输出到屏幕上,还写到文本文件result.txt中
void output(STU s[], int n)
{
    FILE* fout;
    int i;

    // 输出到屏幕
    printf("\n");
    printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t\t等级\n");
    for (i = 0; i < n; i++)
        printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);

    // 保存到文件 
    fout = fopen("result.txt", "w");
    if (!fout)
    {
        printf("fail to open or create result.txt\n");
        exit(0);
    }

    fprintf(fout, "准考证号\t\t姓名\t客观题得分\t操作题得分\t总分\t\t等级\n");

    for (i = 0; i < n; i++)
        fprintf(fout, "%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level);

    fclose(fout);
}

// 对考生信息进行处理:计算总分,排序,确定等级
void process(STU s[], int n)
{
    STU temp; int i, j;

    for (i = 0; i < n; i++)
    {
        s[i].sum = s[i].objective + s[i].subjective;
    }

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (s[i].sum > s[j].sum)
            {
                temp.id = s[i].id;
                s[i].id = s[j].id;
                s[j].id = temp.id;

                strcpy(temp.name, s[j].name);
                strcpy(s[j].name, s[i].name);
                strcpy(s[i].name, temp.name);

                temp.objective = s[i].objective;
                s[i].objective = s[j].objective;
                s[j].objective = temp.objective;

                temp.subjective = s[i].subjective;
                s[i].subjective = s[j].subjective;
                s[j].subjective = temp.subjective;

                temp.sum = s[i].sum;
                s[i].sum = s[j].sum;
                s[j].sum = temp.sum;
            }
        }
    }

    for (i = 0; i < n; i++)
    {
        if (i + 1 <= n * 0.1)
        {
            strcpy(s[i].level, "优秀");
        }
        else if (i <= n * 0.5)
        {
            strcpy(s[i].level, "合格");
        }
        else
        {
            strcpy(s[i].level, "不合格");
        }
    }
}

  

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<string.h>
#include<math.h>
#include<cstdlib>
#include<ctime>
#define N 5

typedef struct
{
    long int id;
    char name[10];
    char clname[30];
}STU;

void pick(STU s[], int n);
int input(STU s[], int n);
int output(STU* s, int n);

int main()
{
    int i, k;
    STU stu[80], lucky[N];

    input(stu, 80);

    srand(time(0));
    k = rand() % (80) + 1;

    for (i = 0; i < N; i++)
    {
        lucky[i] = stu[k];
        k = rand() % (80) + 1;
    }

    output(lucky, N);



}

int input(STU s[], int n)
{
    int i;
    FILE* fin;

    fin = fopen("list.txt", "r");
    if (fin == NULL)
    {
        printf("fail to open list.txt\n");
        return 1;
    }

    for (i = 0; i < n; i++)
        fscanf(fin, "%ld %s %s", &s[i].id, s[i].name, s[i].clname);

    fclose(fin);
}

int output(STU s[], int n)
{
    int i;
    FILE* fout;

    fout = fopen("lucky.txt", "w");

    for (i = 0; i < n; i++)
        printf("%ld\t%s\t%s\n", s[i].id, s[i].name, s[i].clname);

    if (fout == NULL)
    {
        printf("fail to create lucky.txt\n");
        return 1;
    }

    for (i = 0; i < n; i++)
        fprintf(fout, "%ld\t%s\t%s\n", s[i].id, s[i].name, s[i].clname);


    fclose(fout);
}

  

 

posted @ 2022-06-06 17:24  xcy1234  阅读(28)  评论(1编辑  收藏  举报