第一题第二题
第一题1.已知穿线二叉树结点数据类型定义如本试卷第二大题第8.小题所示,若二叉
树已线索化,试编写算法函数,形参传入根结点地址root,函数值返回二叉
树的叶子结点数。(提示:叶子结点的判断条件是: ltag==0&&rtag==0
) (10分)
#include第二题typedef struct bt_node { char data; int ltag, rtag; struct btsnode *lchild, *rchild; } BTNode, *BT; int Leaf(BT root) { if (root == NULL) return 0; if (root->ltag == 0 && root->rtag == 0) return 1; return Leaf(root->lchild) + Leaf(root->rchild); }
2、有N个学生,每个学生有3门课的成绩,从键盘输入数据(包括学生学号,姓名,三门课成绩),求出每个学生的课程平均成绩,将原来的数据和课程平均成绩存放在D盘student目录下std文本文件中(D:student)(10分)。
(要求:定义结构体类型存储学生:学号、姓名、三门课成绩、平均成绩)
#include#define N 5 typedef struct { char number[20]; //学号 char name[20]; // 姓名 float score1, score2, socre3; //三门课成绩 float avg; // 平均成绩 } student; int main() { student arr[N]; for (int i = 0; i < N; i++) { scanf("%s%s%f%f%f", arr[i].number, arr[i].name, &arr[i].score1, &arr[i].score2, &arr[i].socre3); arr[i].avg = (arr[i].score1 + arr[i].score2 + arr[i].socre3) / 3; } FILE *fp = fopen("D:\student\std", "w"); if (fp == NULL) { puts("can't open"); return 0; } for (int i = 0; i < N; i++) { fprintf(fp, "number=%s name=%s score1=%f score2=%f score3=%f avg=%fn", arr[i].number, arr[i].name, arr[i].score1, arr[i].score2, arr[i].socre3, arr[i].avg); } fclose(fp); return 0; }



