《C程序设计(第五版)》谭浩强编著—习题—第十章

3.

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

int main()
{
    char ch[100],sss[100];
    FILE *fp;
    printf("请输入一串字符!\n");
    gets(ch);
    int i=0;
    if((fp=fopen("test.txt","w"))==NULL)
    {
        printf("打开文件出错");
        exit(0);
    }
    while(ch[i]!='\0')
    {
        if(ch[i]>='a'&&ch[i]<='z')
            ch[i]-=32;
        fputc(ch[i],fp);
        i++;
    }
    fclose(fp);
    if((fp=fopen("test.txt","r"))==NULL)
    {
        printf("打开文件出错");
        exit(0);
    }
    fgets(sss,strlen(ch)+1,fp);
    printf("%s\n",sss);
    fclose(fp);
    return 0;
}

在这里插入图片描述
在这里插入图片描述

4.

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

int main()
{
    FILE *fp;
    if((fp=fopen("A.txt","r"))==NULL)
    {
        printf("不能打开A文件");
        exit(0);
    }
    char ch,str[100],temp;
    int i,j,n;
    printf("文件A的内容为:\n");
    for(i=0;(ch=fgetc(fp))!=EOF;i++)
    {
        str[i]=ch;
        printf("%c",ch);
    }
    fclose(fp);
    if((fp=fopen("B.txt","r"))==NULL)
    {
        printf("不能打开B文件");
        exit(0);
    }
    printf("\n文件B的内容为:\n");
    for(;(ch=fgetc(fp))!=EOF;i++)
    {
        str[i]=ch;
        printf("%c",ch);
    }
    fclose(fp);
    n=i;
    for(i=0;i<n;i++)
        for(j=i+1;j<n;j++)
            if(str[i]>str[j])
            {
                temp=str[i];
                str[i]=str[j];
                str[j]=temp;
            }
    if((fp=fopen("C.txt","w"))==NULL)
    {
        printf("不能打开C文件");
        exit(0);
    }
    printf("\n文件C的内容为:\n");
    for(i=0;i<n;i++)
    {
        putc(str[i],fp);
        printf("%c",str[i]);
    }
    fclose(fp);

    return 0;
}

在这里插入图片描述在这里插入图片描述

5,6,7,8

头文件及主函数
#include <stdio.h>
#include <stdlib.h>
#define N 5
struct Stud
{
    int id;
    char name[20];
    int score[3];
};

int main()
{
    //第五题
    void perserve_stu(struct Stud student[]);
    //第六题
    void sort_stu(struct Stud student[]);
    //第八题
    void insert_stu_in();
    //第七题
    void insert_stu_new();
    struct Stud student[N];
    int i;
    printf("请输入学生数据\n");
    for(i=0;i<N;i++)
    {
        scanf("%d %s %d %d %d",&student[i].id,student[i].name,&student[i].score[0],&student[i].score[1],&student[i].score[2]);
    }
    perserve_stu(student);
    sort_stu(student);
    insert_stu_new();
    insert_stu_in();

    return 0;
}

第五题函数

void perserve_stu(struct Stud student[])
{
    FILE *fp;
    if((fp=fopen("stud.dat","w"))==NULL)
    {
        printf("不能打开文件");
        return;
    }
    int i;
    for(i=0;i<N;i++)
    {
        if(fwrite(&student[i],sizeof(struct Stud),1,fp)!=1)
            printf("写入出错");
    }
    fclose(fp);
    printf("写入结果为:");
    fp=fopen("stud.dat","r");
    for(i=0;i<N;i++)
    {
        fread(&student[i],sizeof(struct Stud),1,fp);
        printf("%d %s %d %d %d\n",student[i].id,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2]);
    }
}

在这里插入图片描述

第六题函数
void sort_stu(struct Stud student[])
{
    int ave[N],i,j;
    struct Stud temp;
    for(i=0;i<N;i++)
    {
        ave[i]=0;
    }
    for(i=0;i<N;i++)
    {
        ave[i]=ave[i]+student[i].score[0]+student[i].score[1]+student[i].score[2];
        ave[i]/=3;
    }
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)
            if(ave[i]<ave[j])
            {
                temp=student[i];
                student[i]=student[j];
                student[j]=temp;
            }
    FILE *fp;
    if((fp=fopen("stud_sort.dat","wb"))==NULL)
    {
        printf("不能打开文件");
        return;
    }
    for(i=0;i<N;i++)
    {
        if(fwrite(&student[i],sizeof(struct Stud),1,fp)!=1)
            printf("写入出错");
    }
    fclose(fp);
    printf("排序后写入结果为:\n");
    fp=fopen("stud_sort.dat","rb");
    for(i=0;i<N;i++)
    {
        fread(&student[i],sizeof(struct Stud),1,fp);
        printf("%d %s %d %d %d\n",student[i].id,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2]);
    }
}

在这里插入图片描述

第七题
void insert_stu_new()
{
    struct Stud student[N],new_stu[N+1],temp;
    int i,j,ave[N],tempAve;
    FILE *fp;
    printf("插入前的顺序为:\n");
    fp=fopen("stud_sort.dat","rb");
    for(i=0;i<N;i++)
    {
        fread(&student[i],sizeof(struct Stud),1,fp);
        printf("%d %s %d %d %d\n",student[i].id,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2]);
    }
    for(i=0;i<N;i++)
    {
        new_stu[i]=student[i];
    }
    for(i=0;i<N;i++)
    {
        ave[i]=0;
    }
    for(i=0;i<N;i++)
    {
        ave[i]=ave[i]+student[i].score[0]+student[i].score[1]+student[i].score[2];
        ave[i]/=3;
    }
    printf("请输入插入学生的数据:\n");
    scanf("%d %s %d %d %d",&temp.id,temp.name,&temp.score[0],&temp.score[1],&temp.score[2]);
    //printf("%d %s %d %d %d\n",temp.id,temp.name,temp.score[0],temp.score[1],temp.score[2]);
    tempAve=(temp.score[0]+temp.score[1]+temp.score[2])/3;
    for(i=N-1;i>=0;i--)
    {
        if(ave[i]>tempAve)
        {
            for(j=N-1;j>i;j--)
            {
                new_stu[j+1]=new_stu[j];
            }
            new_stu[j+1]=temp;
            break;
        }
    }
    printf("插入后的顺序为\n");
   
    fclose(fp);
    if((fp=fopen("stud_new.dat","wb"))==NULL)
    {
        printf("不能打开文件");
        return;
    }
    for(i=0;i<N+1;i++)
    {
        if(fwrite(&new_stu[i],sizeof(struct Stud),1,fp)!=1)
            printf("写入出错");
    }
    fclose(fp);
    printf("排序后写入新文件结果为:\n");
    fp=fopen("stud_new.dat","rb");
    for(i=0;i<N+1;i++)
    {
        fread(&new_stu[i],sizeof(struct Stud),1,fp);
        printf("%d %s %d %d %d\n",new_stu[i].id,new_stu[i].name,new_stu[i].score[0],new_stu[i].score[1],new_stu[i].score[2]);
    }

}

在这里插入图片描述

第八题函数
void insert_stu_in()
{
    struct Stud student[N],new_stu[N+1],temp;
    int i,j,ave[N],tempAve;
    FILE *fp;
    printf("插入前的顺序为:\n");
    fp=fopen("stud_sort.dat","rb");
    for(i=0;i<N;i++)
    {
        fread(&student[i],sizeof(struct Stud),1,fp);
        printf("%d %s %d %d %d\n",student[i].id,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2]);
    }
    for(i=0;i<N;i++)
    {
        new_stu[i]=student[i];
    }
    for(i=0;i<N;i++)
    {
        ave[i]=0;
    }
    for(i=0;i<N;i++)
    {
        ave[i]=ave[i]+student[i].score[0]+student[i].score[1]+student[i].score[2];
        ave[i]/=3;
    }
    printf("请输入插入学生的数据:\n");
    scanf("%d %s %d %d %d",&temp.id,temp.name,&temp.score[0],&temp.score[1],&temp.score[2]);
    tempAve=(temp.score[0]+temp.score[1]+temp.score[2])/3;
    for(i=N-1;i>=0;i--)
    {
        if(ave[i]>tempAve)
        {
            for(j=N-1;j>i;j--)
            {
                new_stu[j+1]=new_stu[j];
            }
            new_stu[j+1]=temp;
            break;
        }
    }
    printf("插入后的顺序为\n");
    fclose(fp);
    if((fp=fopen("stud_sort.dat","wb"))==NULL)
    {
        printf("不能打开文件");
        return;
    }
    for(i=0;i<N+1;i++)
    {
        if(fwrite(&new_stu[i],sizeof(struct Stud),1,fp)!=1)
            printf("写入出错");
    }
    fclose(fp);
    printf("排序后写入结果为:\n");
    fp=fopen("stud_sort.dat","rb");
    for(i=0;i<N+1;i++)
    {
        fread(&new_stu[i],sizeof(struct Stud),1,fp);
        printf("%d %s %d %d %d\n",new_stu[i].id,new_stu[i].name,new_stu[i].score[0],new_stu[i].score[1],new_stu[i].score[2]);
    }

}

在这里插入图片描述

文件结构

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值