30.关联文本

现有两个文本文件db1.txt和db2.txt。db1.txt中第一列为姓名,第二列为英语成绩;db2.txt中第一列为姓名,                          第二列为数学成绩。通过姓名字段将db1.txt关联到db2.txt文件生成db3.txt文件,使db3.txt文件的第一列为姓名,                      第二列为英语成绩,第三列为数学成绩,第四列为平均成绩。



#include<stdio.h>
#include<string.h>
struct grade
{
char name[30];
int math, English;
double p;
}list[1000];//建立结构体数组
int main()
{
int i = 0;
freopen("C:\\Users\\dyg\\Desktop\\实验作业\\第一题\\db1.txt", "r", stdin);//打开文件一
    freopen("C:\\Users\\dyg\\Desktop\\实验作业\\第一题\\db3.txt", "w", stdout);//请老师调整地址后再操作
while (scanf("%s", list[i].name) != EOF)
{
scanf("%d", &list[i++].math);

}
//录入姓名和数学成绩
char temp[30];
freopen("C:\\Users\\dyg\\Desktop\\实验作业\\第一题\\db2.txt", "r", stdin);//打开文件二
int j = 0;
while (scanf("%s", temp) != EOF)
{

for (j = 0; j < i; j++)
{
if (strcmp(temp, list[j].name) == 0)//匹配名字
{
scanf("%d", &list[j].English);//录入英语成绩
list[j].p = (list[j].math + list[j].English) / 2.0;//计算平均成绩
}
}
}
int k = 0;
for (k = 0; k < i; k++)
{
printf("%s  %d  %d  %.2lf\n", list[k].name, list[k].English, list[k].math, list[k].p);
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/lannister_awalys_pay/article/details/79770804