首页 > 其他分享 >实验七

实验七

时间:2024-12-29 10:30:34浏览次数:4  
标签:fp int st STU 实验 printf include

任务四

源代码

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main(){
 4   FILE *fp;
 5   fp=fopen("d:\\data4.txt","r");
 6   if(fp==NULL){
 7       printf("fail to open file to write\n");
 8       return;
 9   }
10   int n=0,count=0;
11   char str[30];
12   while(!feof(fp)){
13       fgets(str,31,fp);
14       n++;
15       int i=0;
16       while(str[i]!=0){
17           if(str[i]!=' '&&str[i]!='\n')
18             count++;
19           i++;
20       }
21   }
22   fclose(fp);
23   printf("data4.txt统计结果:\n");
24   printf("行数:%-20d\n",n);
25   printf("字符数(不计空白符):%-20d\n",count);
26   return 0;
27 } 

截图

任务五

源代码





 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define N 10
 5 
 6 typedef struct {
 7     long id;            // 准考证号
 8     char name[20];      // 姓名
 9     float objective;    // 客观题得分
10     float subjective;   // 操作题得分
11     float sum;          // 总分
12     char result[10];    // 考试结果
13 } STU;
14 
15 // 函数声明
16 void read(STU st[], int n);
17 void write(STU st[], int n);
18 void output(STU st[], int n);
19 int process(STU st[], int n, STU st_pass[]);
20 
21 int main() {
22     STU stu[N], stu_pass[N];
23     int cnt;
24     double pass_rate;
25 
26     printf("从文件读入%d个考生信息...\n", N);
27     read(stu, N);
28 
29     printf("\n对考生成绩进行统计...\n");
30     cnt = process(stu, N, stu_pass);
31 
32     printf("\n通过考试的名单:\n");
33     output(stu, N);   // 输出所有考生完整信息到屏幕
34     write(stu, N);    // 输出考试通过的考生信息到文件
35 
36     pass_rate = 1.0 * cnt / N;
37     printf("\n本次等级考试通过率: %.2f%%\n", pass_rate*100);
38 
39     return 0;
40 }
41 
42 // 把所有考生完整信息输出到屏幕上
43 // 准考证号,姓名,客观题得分,操作题得分,总分,结果
44 void output(STU st[], int n) {
45     int i;
46     
47     printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t\t结果\n");
48     for (i = 0; i < n; i++)
49         printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", st[i].id, st[i].name, st[i].objective, st[i].subjective, st[i].sum, st[i].result);
50 }
51 
52 // 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
53 void read(STU st[], int n) {
54     int i;
55     FILE *fin;
56 
57     fin = fopen("d:\\examinee.txt", "r");
58     if (!fin) {
59         printf("fail to open file\n");
60         return;
61     }
62 
63     while (!feof(fin)) {
64         for (i = 0; i < n; i++)
65             fscanf(fin, "%ld %s %f %f", &st[i].id, st[i].name, &st[i].objective, &st[i].subjective);
66     }
67 
68     fclose(fin);
69 }
70 
71 // 把通过考试的考生完整信息写入文件list_pass.txt
72 // 准考证号,姓名,客观题得分,操作题得分,总分,结果
73 void write(STU s[], int n) {
74     int i;
75     FILE *fp;
76     fp=fopen("d:\\list_pass.txt","w");
77     for(i=0;i<n;i++){
78         if(s[i].sum>=60)
79         fprintf(fp,"%-20ld%-15s%-20.2f%-20.2f%-20.2f%-20s\n",s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].result);
80         
81     }
82     fclose(fp);
83 }
84 // 对考生信息进行处理:计算每位考生考试总分、结果;统计考试通过的人数
85 int process(STU st[], int n, STU st_pass[]) {
86     int i,j=0,count=0;
87     for(i=0;i<n;i++){
88         st[i].sum=st[i].objective+st[i].subjective;
89         if(st[i].sum>=60){
90             strcpy(st[i].result,"合格"); 
91             st_pass[j++]=st[i];
92             count++;
93         }
94         else
95            strcpy(st[i].result,"不合格");
96     }
97     return count; 
98 }

 



 

截图

 

 

 

任务六

源代码



 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 #define N 80
 5 typedef struct{
 6     int id;
 7     char a[10];
 8     char b[20];
 9     int flag=1;
10 }STU;
11 void write(STU s[],int n);
12 
13 int main(){
14     FILE *fp;
15     fp=fopen("d:\\list.txt","r");
16     if(fp==NULL){
17         printf("fail to open file");
18         return 0;
19     }
20     STU stu[N],r[N];
21     int i;
22     for(i=0;i<N;i++){
23             fscanf(fp,"%d %s %s",&stu[i].id,stu[i].a,stu[i].b);
24     }
25     srand(time(0));
26     printf("-------------随机抽点名单-------------\n");
27     for(i=0;i<5;i++){
28             int random=rand()%80;
29             if(stu[random].flag==1){
30                 stu[random].flag=-1;
31            printf("%-20d%-10s%-20s\n",stu[random].id,stu[random].a,stu[random].b);
32             }
33     }
34     write(stu,N);
35     fclose(fp);
36 
37 } 
38 void write(STU s[],int n){
39     int i;
40     FILE *fin;
41     char c[N];
42     printf("-------------保存到文件-------------\n");
43     printf("输入文件名:");
44     scanf("%s",c);
45     fin=fopen(c,"w");
46     
47     if(fin==NULL){
48         printf("fail to open file\n");
49         return;
50     }
51     else{
52         for(i=0;i<n;i++){
53             if(s[i].flag==-1)
54               fprintf(fin,"%-20d%-10s%-20s\n",s[i].id,s[i].a,s[i].b);
55         }
56         printf("保存成功!\n");
57     }
58      fclose(fin); 
59 }

 



截图

选做部分

源代码

 

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <time.h>
  4 #define N 80
  5 typedef struct{
  6     int id;
  7     char a[10];
  8     char b[20];
  9     int flag=1;
 10 }STU;
 11 void write(STU s[],int n,char *filename);
 12 void sort(STU r[],int n);
 13 int main(){
 14     FILE *fp;
 15     fp=fopen("d:\\list.txt","r");
 16     if(fp==NULL){
 17         printf("fail to open file");
 18         return 0;
 19     }
 20     STU stu[N],r[N];
 21     int i,j=0;
 22     for(i=0;i<N;i++){
 23             fscanf(fp,"%d %s %s",&stu[i].id,stu[i].a,stu[i].b);
 24     }
 25     srand(time(0));
 26     for(i=0;i<5;i++){
 27             int random=rand()%80;
 28             if(stu[random].flag==1){
 29                 stu[random].flag=-1;
 30                 r[j++]=stu[random];
 31            
 32             }
 33     }
 34     sort(r,5);
 35     time_t now;             // 存储当前时间的time_t变量
 36     struct tm *local_time;  // 存储本地时间的tm结构体指针
 37     char date_time_str[64]; // 存储日期时间字符串的字符数组
 38     char filename[128];     // 存储文件名的字符数组
 39     // 获取当前时间
 40     now = time(NULL);
 41 
 42     // 将time_t转换为本地时间的tm结构体
 43     local_time = localtime(&now);
 44 
 45     // 检查local_time是否成功获取
 46     if (local_time == NULL) {
 47         printf("无法获取本地时间。\n");
 48         return 0;
 49     }
 50 
 51     // 使用strftime将tm结构体转换为字符串
 52     if (strftime(date_time_str, sizeof(date_time_str), "%Y%m%d", local_time) == 0) {
 53         printf("strftime failed\n");
 54         return 0;
 55     }
 56 
 57     // 打印日期时间字符串
 58     printf("-------------%s抽点名单-------------\n", date_time_str);
 59 
 60     // 构造文件名
 61     snprintf(filename, sizeof(filename), "data_%s.txt", date_time_str);
 62 
 63     for(i=0;i<5;i++)
 64       printf("%-20d%-10s%-20s\n",r[i].id,r[i].a,r[i].b);
 65     write(r,5,filename);
 66     fclose(fp);
 67 
 68 } 
 69 void write(STU s[],int n,char *filename){
 70     int i;
 71     FILE *fin;
 72     fin=fopen(filename,"w");
 73     
 74     if(fin==NULL){
 75         printf("fail to open file\n");
 76         return;
 77     }
 78     else{
 79         for(i=0;i<5;i++){
 80               fprintf(fin,"%-20d%-10s%-20s\n",s[i].id,s[i].a,s[i].b);
 81         }
 82         printf("保存成功!\n");
 83     }
 84      fclose(fin); 
 85 }
 86 void sort(STU r[],int n){
 87     int i,j;
 88     STU t;
 89     for(i=0;i<n-1;i++){
 90         for(j=0;j<n-1-i;j++){
 91             if(r[j].id>r[j+1].id){
 92                 t=r[j];
 93                 r[j]=r[j+1];
 94                 r[j+1]=t;
 95             }
 96         }
 97     }
 98     
 99     
100     
101 }

截图

 

标签:fp,int,st,STU,实验,printf,include
From: https://www.cnblogs.com/qwh061206/p/18622797

相关文章

  • 实验7
    实验任务4:1#include<stdio.h>2#include<stdlib.h>3intis_word(charx);4intmain(){5FILE*fp;6charch;7inti,line=1,count=0;89fp=fopen("d:\\data4.txt","r");10if(!fp)11......
  • 实验7_文件应用编程
    任务4#include<stdio.h>#include<stdlib.h>#include<stdbool.h>//判断字符是否为空白字符(空格、回车、tab)boolis_blank(charc){returnc==''||c=='\t'||c=='\n';}intmain(){charfilename[100];......
  • 实验7
    1.实验任务4程序task4.c源码1#include<stdio.h>2#defineN103#defineM100456intmain(){7charx[N][M];8inti,j,cnt=0,count=0;9FILE*fp;1011fp=fopen("data4.txt","r");12if(!fp){13......
  • 正在测试和完善的CH552(CH549)USB下载之单按键带入电路实验
    一、设计理由CH552或CH549进入USB下载,通常需要两个按键,一个控制电源的通断,一个通过串联电阻(一头接VCC或V33)冷启动时抬高UDP电平。时序上是这样的:断电--按下接UDP的轻触开关--通电--松开接UDP的轻触开关。这样操作上一般需要双手并用,比较麻烦。二、电子电路本人设计的电路是想通......
  • 实验七
    task4源代码:#include<stdio.h>#defineN10#defineM80voidcount_line(int*ptr1);voidcount_num(int*ptr2);intmain(){inta,b;count_line(&a);count_num(&b);printf("行数为:%d\n",a);printf("字符数......
  • 实验7
    #include<stdio.h>voidx(constchar*filePath){FILE*file=fopen(filePath,"r");inta=0;intb=0;if(file==NULL){printf("无法打开文件\n");return;}charline[300];while(......
  • py期末 实验1-6
    选择判断特别是对于范围在-5到256之间的整数。对于这些整数,Python会使用缓存机制,即它们在程序的生命周期内是单例的,所有引用该值的地方都会指向同一个内存地址。while和for可以有elseforiinrange(5):print(i)ifi==3:breakelse:print("循......
  • ssm实验室排课系统+jsp(10796)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • 实验7
    任务4源代码#include<stdio.h>#defineN80#defineM100inta=0;intn=0;voidread(){charch;FILE*fp=fopen("C:\\Users\\HL158\\Desktop\\data4.txt","r");if(fp==NULL){perror("Una......
  • 实验7
    任务4源代码1#include<stdio.h>2#include<stdlib.h>34intmain(){5FILE*fp;6charfname[]="data4.txt";7charch;8intlines=0;9intcharacters=0;101112fp=fopen(fname,"......