实验7
task.4
点击查看代码
#include<stdio.h>
void statistics();
int main(){
statistics();
return 0;
}
void statistics(){
char ch;
int line_count=1,char_count=0;
FILE *fp=fopen("C:\\Users\\27166\\Desktop\\c语言\\实验七\\实验7数据文件及部分代码_gbk\\实验7数据文件及部分代码_gbk\\data4.txt","r");
if(fp==NULL){
printf("文件打开不成功\n");
return;
}
while((ch=fgetc(fp))!=EOF){
if(ch=='\n'){
line_count++;
}
if(ch!='\t'&&ch!=' '&&ch!='\n'){
char_count++;
}
}
printf("data4.txt统计结果\n");
printf("行数:\t\t\t%d\n",line_count);
printf("字符数(不包含空白):\t%d\n",char_count);
}

task.5
点击查看代码
#include <stdio.h>
#include <string.h>
#define N 10
typedef struct {
long id; // 准考证号
char name[20]; // 姓名
float objective; // 客观题得分
float subjective; // 操作题得分
float sum; // 总分
char result[10]; // 考试结果
} STU;
// 函数声明
void read(STU st[], int n);
void write(STU st[], int n);
void output(STU st[], int n);
int process(STU st[], int n, STU st_pass[]);
int main() {
STU stu[N], stu_pass[N];
int cnt;
double pass_rate;
printf("从文件读入%d个考生信息: 已完成\n", N);
read(stu, N);
printf("\n对考生成绩进行统计: 已完成\n");
cnt = process(stu, N, stu_pass);
printf("\n所有考生完整信息:\n");
output(stu, N);
printf("\n通过考试的名单写入文件: 已完成!\n");
write(stu_pass, cnt);
pass_rate = 1.0 * cnt / N;
printf("\n本次等级考试通过率: %.2f%%\n", pass_rate*100);
return 0;
}
// 把所有考生完整信息输出到屏幕上
// 准考证号,姓名,客观题得分,操作题得分,总分,结果
void output(STU st[], int n) {
int i;
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", st[i].id, st[i].name, st[i].objective, st[i].subjective, st[i].sum, st[i].result);
}
// 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
void read(STU st[], int n) {
int i;
FILE *fin;
fin = fopen("C:\\Users\\27166\\Desktop\\c语言\\实验七\\实验7数据文件及部分代码_gbk\\实验7数据文件及部分代码_gbk\\examinee.txt", "r");
if (!fin) {
printf("fail to open file\n");
return;
}
for (i = 0; i < n; i++)
fscanf(fin, "%ld %s %f %f", &st[i].id, st[i].name, &st[i].objective, &st[i].subjective);
fclose(fin);
}
// 对考生信息进行处理:计算每位考生考试总分、结果;统计并返回通过考试的人数
int process(STU st[], int n, STU st_pass[]) {
int count=0;
int i,j=0;
for(i=0;i<n;i++){
st[i].sum=st[i].objective+st[i].subjective;
strcpy(st[i].result,"未通过");
if(st[i].sum>=60){
st_pass[j++]=st[i];
strcpy(st[i].result,"通过");
count++;
}
}
return count;
}
// 把通过考试的考生完整信息写入文件list_pass.txt
// 准考证号,姓名,客观题得分,操作题得分,总分,结果
void write(STU st[], int n) {
int i;
FILE *fp=fopen("C:\\Users\\27166\\Desktop\\c语言\\实验七\\实验7数据文件及部分代码_gbk\\实验7数据文件及部分代码_gbk\\list_pass.txt","w");
if(fp==NULL){
printf("文件打开失败\n");
return;
}
for(i=0;i<n;i++){
fprintf(fp,"%ld %s %.2f %.2f %.2f %s\n",st[i].id, st[i].name, st[i].objective, st[i].subjective, st[i].sum, st[i].result);
}
}


task.6
点击查看代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 5
#define M 80
typedef struct {
long id;
char name[20];
char cls[20];
} STU;
STU stu[M], stuprice[N];
int main() {
srand((unsigned int)time(NULL));
int i, j, count;
int flag[M] = {0};
FILE *fp = fopen("C:\\Users\\27166\\Desktop\\c语言\\实验七\\实验7数据文件及部分代码_gbk\\实验7数据文件及部分代码_gbk\\list.txt", "r");
if (fp == NULL) {
printf("文件打开失败\n");
exit(1);
}
for (i = 0; i < M; i++)
fscanf(fp, "%ld %s %s", &stu[i].id, stu[i].name, stu[i].cls);
for (j = 0; j < N;) {
count = rand() % M;
if (flag[count] == 0) {
stuprice[j++] = stu[count];
flag[count] = 1;
}
}
printf("---------------中奖名单----------------\n");
for (i = 0; i < N; i++)
printf("%ld\t\t%s\t\t%s\n", stuprice[i].id, stuprice[i].name, stuprice[i].cls);
// 获取当前日期作为文件名
char filename[30];
time_t now;
struct tm *tm_info;
time(&now);
tm_info = localtime(&now);
if (tm_info == NULL) {
perror("localtime");
return 1;
}
snprintf(filename, sizeof(filename), "%04d%02d%02d.txt",
tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday);
FILE *fp1 = fopen(filename, "w");
if (fp1 == NULL) {
printf("文件打开失败\n");
exit(1);
}
for (i = 0; i < N; i++)
fprintf(fp1, "%ld\t\t %s \t\t%s\n", stuprice[i].id, stuprice[i].name, stuprice[i].cls);
printf("文件保存成功");
fclose(fp1);
fclose(fp);
return 0;
}

浙公网安备 33010602011771号