实验7

  1. #include<stdio.h>
    int main(){
          FILE *data4;
          int ch,lines=0,chars=0;
          data4=fopen("data4.txt","r");
          if(!data4)
          {
                printf("Open file failed(data4.txt)");
                return 1;
          }
          while((ch=fgetc(data4))!=EOF){
                switch(ch){
                case' ':
                case'\r':
                case'\t':
                      break;
                case'\n':
                      lines++;
                      break;
                default:
                      chars++;
                      break;
                }
          }
          lines++;
          fclose(data4);
          printf("data4.txt统计结果:\n行数:%d\n字符数(不计空白符):%d",lines,chars);
          return 0;
    }

    image

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    
    #define MAX_STU 80
    
    #define DRAW_NUM 5
    
    
    typedef struct {
        char id[20];
        char name[20];
        char cls[30];
    } Student;
    
    int main()
    {
        FILE *fpIn, *fpOut;
        Student stu[MAX_STU];
        int flag[MAX_STU] = {0};
        int total = 0, i, j, randIdx, count = 0;
    
    
        fpIn = fopen("list.txt", "r");
        if(fpIn == NULL){
            printf("打开名单文件失败!\n");
            return 1;
        }
        while(fscanf(fpIn, "%s %s %s", stu[total].id, stu[total].name, stu[total].cls) != EOF){
            total++;
        }
        fclose(fpIn);
    
    
        srand((unsigned)time(NULL));
        printf("----------------中奖名单----------------\n");
        while(count < DRAW_NUM){
            randIdx = rand() % total;
            if(flag[randIdx] == 0){
                flag[randIdx] = 1;
                printf("%s %s %s\n", stu[randIdx].id, stu[randIdx].name, stu[randIdx].cls);
                count++;
            }
        }
    
    
        fpOut = fopen("20260615.txt", "w");
        for(i = 0; i < total; i++){
            if(flag[i] == 1){
                fprintf(fpOut, "%s %s %s\n", stu[i].id, stu[i].name, stu[i].cls);
            }
        }
        fclose(fpOut);
        printf("-----------------------------------------\n");
        printf("保存到文件\n");
        printf("保存文件名:20260615.txt\n");
    
        return 0;
    }

    image

     

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    #include <windows.h>
    
    #define MAX_STUDENT 80
    #define WIN_COUNT 5
    
    typedef struct {
        long id;
        char name[20];
        char className[40];
    } Student;
    
    int main(void)
    {
        SetConsoleOutputCP(936);
        Student stuArr[MAX_STUDENT];
        int total = 0;
        int selected[MAX_STUDENT] = {0};
        Student winner[WIN_COUNT];
        char saveFileName[50];
        FILE *fpRead, *fpWrite;
    
        fpRead = fopen("list.txt", "r");
        if (fpRead == NULL)
        {
            printf("Error: Cannot open list.txt\n");
            system("pause");
            return 1;
        }
    
        while (total < MAX_STUDENT && fscanf(fpRead, "%ld %s ", &stuArr[total].id, stuArr[total].name) == 2)
        {
            fgets(stuArr[total].className, sizeof(stuArr[total].className), fpRead);
            stuArr[total].className[strcspn(stuArr[total].className, "\n")] = '\0';
            total++;
        }
        fclose(fpRead);
    
        if(total < WIN_COUNT)
        {
            printf("Insufficient number of students\n");
            system("pause");
            return 1;
        }
    
        srand((unsigned)time(NULL));
        for(int i = 0; i < WIN_COUNT; )
        {
            int idx = rand() % total;
            if(!selected[idx])
            {
                selected[idx] = 1;
                winner[i++] = stuArr[idx];
            }
        }
    
        printf("===== Winner List =====\n");
        printf("ID\t\tName\t\tClass\n");
        for(int i = 0; i < WIN_COUNT; i++)
        {
            printf("%ld\t%s\t%s\n",winner[i].id,winner[i].name,winner[i].className);
        }
    
        printf("\nEnter output filename:");
        scanf("%s", saveFileName);
    
        fpWrite = fopen(saveFileName, "w");
        fprintf(fpWrite, "Winner List\n");
        fprintf(fpWrite, "ID\tName\tClass\n");
        for(int i = 0; i < WIN_COUNT; i++)
        {
            fprintf(fpWrite, "%ld\t%s\t%s\n",winner[i].id,winner[i].name,winner[i].className);
        }
        fclose(fpWrite);
        printf("Data saved to %s successfully\n", saveFileName);
    
        system("pause");
        return 0;
    }
    

      

    image

     

     

posted @ 2026-06-23 20:37  李想1111111  阅读(6)  评论(0)    收藏  举报