#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{int cnt=0;char c;FILE *fp;fp=fopen("data4.txt","r");while(!feof(fp)){c=fgetc(fp);if(c=='\n'||c==' '||c=='\t')continue;cnt++;}printf("文件中所含字符数(不含空白符)有:%d",--cnt);return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define N 10typedef struct {long int id;char name[20];float objective; // 客观题得分float subjective; // 操作题得分float sum; // 总分char ans[10]; // 考试结果
} STU;// 函数声明
void finput(STU st[], int n);
void foutput(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);finput(stu, N);printf("\n对考生成绩进行统计...\n");cnt = process(stu, N, stu_pass);printf("\n通过考试的名单:\n");output(stu_pass, cnt); // 输出到屏幕foutput(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].ans);
}// 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
void finput(STU st[], 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", &st[i].id, st[i].name, &st[i].objective, &st[i].subjective);}fclose(fin);
}// 把通过考试的考生完整信息写入文件list_pass.txt
// 准考证号,姓名,客观题得分,操作题得分,总分,结果
void foutput(STU s[], int n) {FILE *fout;int i;// 保存到文件 fout = fopen("list_pass.txt", "w");if (!fout) {printf("fail to open or create list_pass.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].ans);fclose(fout);
}// 对考生信息进行处理:计算每位考生考试总分、结果;统计考试通过的人数
int process(STU st[], int n, STU st_pass[]) {int i,j,cntt=0;for(i=0,j=0;i<n;i++){st[i].sum=st[i].subjective+st[i].objective;if(st[i].sum>=60){st_pass[j]=st[i];strcpy(st_pass[j].ans,"pass");cntt++;j++;}elsestrcpy(st_pass[i].ans,"fail");}return cntt;
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>#define N 80 typedef struct {long num;char name[20];char class[20];
}STU;int main(){STU stu[N];int x[5];int i,j;int k,t=0;FILE *fp;FILE *ptr;fp=fopen("list.txt","r");if(fp==NULL){printf("fail to open \n");return 1; }ptr=fopen("lucky.txt","w");if(ptr==NULL){printf("fail to open file\n");return 1; }while(!feof(fp)){for(i=0;i<N;++i)fscanf(fp,"%ld %s %s",&stu[i].num ,stu[i].name ,stu[i].class );}fclose(fp);srand(time(NULL));k = rand() % N;x[0]=k;printf("%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);fprintf(ptr, "%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);for (i = 1; i < 5; ++i) {k = rand() % N;x[i]=k;for (j = 0; j < i; ++j) {if (x[i] == x[j]) {t=1;}} if(t==0){printf("%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);fprintf(ptr, "%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);}if(t==1){i=i-1;}}fclose(ptr);return 0;
}