实验七

test4

#include <stdio.h>

int main() {
const char *content = "0123456789-0123456789\nnuist2026\ncosmos galaxy";
int line_cnt = 0;
int char_cnt = 0;
int has_content = 0;
for (int i = 0; content[i] != '\0'; i++) {
char c = content[i];
if (c == '\n') {
line_cnt++;
has_content = 0;
} else {
if (c != ' ' && c != '\r' && c != '\t') {
char_cnt++;
has_content = 1;
}
}
}
if (has_content) {
line_cnt++;
}
printf("data4.txt统计结果:\n");
printf("行数:\t\t\t%d\n", line_cnt);
printf("字符数(不计空白符):\t%d\n", char_cnt);

return 0;
}

image

 test5

#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);
}
void read(STU st[], int n) {
st[0].id = 1001; strcpy(st[0].name, "桃乐丝"); st[0].objective = 36; st[0].subjective = 55;
st[1].id = 1002; strcpy(st[1].name, "稻草人"); st[1].objective = 28; st[1].subjective = 40;
st[2].id = 1003; strcpy(st[2].name, "千寻"); st[2].objective = 39; st[2].subjective = 55;
st[3].id = 1004; strcpy(st[3].name, "白龙"); st[3].objective = 35; st[3].subjective = 60;
st[4].id = 1005; strcpy(st[4].name, "汤婆婆"); st[4].objective = 20; st[4].subjective = 35;
st[5].id = 1006; strcpy(st[5].name, "无脸男"); st[5].objective = 33; st[5].subjective = 50;
st[6].id = 1007; strcpy(st[6].name, "希达"); st[6].objective = 40; st[6].subjective = 32;
st[7].id = 1008; strcpy(st[7].name, "巴鲁"); st[7].objective = 28; st[7].subjective = 30;
st[8].id = 1009; strcpy(st[8].name, "苏菲"); st[8].objective = 37; st[8].subjective = 60;
st[9].id = 1010; strcpy(st[9].name, "哈尔"); st[9].objective = 35; st[9].subjective = 57;
}
int process(STU st[], int n, STU st_pass[]) {
int i, pass_cnt = 0;
for (i = 0; i < n; i++) {
st[i].sum = st[i].objective + st[i].subjective;
if (st[i].sum >= 60) {
strcpy(st[i].result, "通过");
st_pass[pass_cnt] = st[i];
pass_cnt++;
} else {
strcpy(st[i].result, "未通过");
}
}
return pass_cnt;
}
void write(STU st[], int n) {
int i;
FILE *fout = fopen("list_pass.txt", "w");
if (!fout) {
printf("无法创建输出文件\n");
return;
}
fprintf(fout, "准考证号\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",
st[i].id, st[i].name,
st[i].objective, st[i].subjective,
st[i].sum, st[i].result);
}
fclose(fout);
}

image

test6

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define N 10
typedef struct {
char id[20];
char name[20];
char cls[30];
} Student;
int main() {
Student stu[N] = {
{"204942001", "抖森", "星际联盟2049(1)班"},
{"204942002", "卷福", "星际联盟2049(1)班"},
{"204942003", "毛怪", "星际联盟2049(1)班"},
{"204942004", "大眼仔", "星际联盟2049(1)班"},
{"204942005", "辛巴", "星际联盟2049(1)班"},
{"204942006", "裘花", "星际联盟2049(1)班"},
{"204942007", "小李子", "星际联盟2049(1)班"},
{"204942008", "甜茶", "星际联盟2049(1)班"},
{"204942009", "囧瑟夫", "星际联盟2049(1)班"},
{"204942010", "霉霉", "星际联盟2049(1)班"}
};
int idx[N];
char filename[50];
FILE *fp;
int i;
for (i = 0; i < N; i++) idx[i] = i;
srand((unsigned)time(NULL));

for (i = N - 1; i > 0; i--) {
int j = rand() % (i + 1);
int tmp = idx[i];
idx[i] = idx[j];
idx[j] = tmp;
}
printf("--------中奖名单--------\n");
for (i = 0; i < 5; i++) {
int k = idx[i];
printf("%s\t%s\t%s\n", stu[k].id, stu[k].name, stu[k].cls);
}
printf("------------------------\n");
printf("输入文件名:");
scanf("%s", filename);
fp = fopen(filename, "w");
if (fp == NULL) {
printf("文件创建失败\n");
return 1;
}
for (i = 0; i < 5; i++) {
int k = idx[i];
fprintf(fp, "%s\t%s\t%s\n", stu[k].id, stu[k].name, stu[k].cls);
}
fclose(fp);
printf("保存成功!\n");
return 0;
}

image

 

posted @ 2026-06-22 14:28  刘君瑞  阅读(0)  评论(0)    收藏  举报