中国石油大学华东C语言在线测评答案第12章结构体和共用体2013级亲测正确.doc
12.1 修改学生的各科成绩给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意只需提交补充完整的fun函数和main函数预设代码/found/ void fun_1_ *ss,float a int i; fori0; i3; i/found/ ss-_2_ *a;int main STU std 1,Zhanghua,76.5,78.0,82.0 ; float a; scanff,/found/ fun_3_,a; showstd; return 0;/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */include stdio.hinclude string.hinclude stdio.htypedef struct int num; char name9; float score3;STU;void showSTU tt int i; printfd s ,tt.num,tt.name; fori0; i3; i printf5.1f,tt.scorei; printfn;/* PRESET CODE END - NEVER TOUCH CODE ABOVE *found/ void funSTU *ss,float a int i; fori0; i3; i/found/ ss-scorei *a;int main STU std 1,Zhanghua,76.5,78.0,82.0 ; float a; scanff,/found/ fun showstd; return 0;12.2 修改学生信息程序通过定义学生结构体变量,存储了学生的学号、姓名和 3 门课的成绩。函数 fun 的功能是对形参 b 所指结构体变量中的数据进行修改 , 最后在主函数中输出修改后的数据。例如 b 所指变量 t 中的学号、姓名、和三门课的成绩依次是 10002 、 ZhangQi 、 93 、 85 、 87 ,修改后输出 t 中的数据应为 10004 、 LiJie 、 93 、 85 、 87 。请在程序的下划线处填入正确的内容并把下划线删除 , 使程序得出正确的结果。不得增行或删行,也不得更改程序的结构注意只需提交补充完整的fun函数和main主函数预设代码void fun struct student *b/found/ b1 10004;/found/ strcpyb2, LiJie;int main struct student t10002,ZhangQi, 93, 85, 87; int i;/found/ fun3; printfNo ld Name snScores,t.sno, t.name; for i0; i3; i printf6.2f, t.scorei; printfn; return 0;/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */include stdio.hinclude string.hstruct student long sno; char name10; float score3/* PRESET CODE END - NEVER TOUCH CODE ABOVE */void fun struct student *b/found/ b-sno 10004;/found/ strcpyb-name, LiJie;int main struct student t10002,ZhangQi, 93, 85, 87; int i;/found/ fun printfNo ld Name snScores,t.sno, t.name; for i0; i3; i printf6.2f, t.scorei; printfn; return 0;12.3 学生信息的排序程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和 3 门课的成绩。函数 fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。请在程序的下划线处填入正确的内容并把下划线删除 , 使程序得出正确的结果。注意只需提交补充完整的fun函数。预设代码void funstruct student a, int n/found/1 t; int i, j;/found/ for i0; i2; i for ji1; jn; j/found/ if strcmp3 0 t ai; ai aj; aj t; /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */include stdio.hinclude string.hstruct student long sno; char name10; float score3/* PRESET CODE END - NEVER TOUCH CODE ABOVE */void funstruct student a, int n/found/ struct student t; int i, j;/found/ for i0; in-1; i for ji1; jn; j/found/ if strcmpai.name,aj.name 0 t ai; ai aj; aj t; 12.4 找出指定分数范围内的学生学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中, 请编写函数fun,它的功能是把指定分数范围内的学生数据放在h所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60 69, 则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。 注意只需提交fun函数STREC sNGA005,85,GA003,76,GA002,69,GA004,85,GA001,96,GA007,72,GA008,64,GA006,87,GA015,85,GA013,94,GA012,64,GA014,91,GA011,90,GA017,64,GA018,64,GA016,72;12.5找出分数最低的学生学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中, 请编写函数fun,它的功能是把分数最低的学生数据放在b所指的数组中,注意分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 注意 只需提交fun函数/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */include stdio.hdefine N 16typedef struct char num10; int s;STREC;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */int funSTREC s,STREC hint j,min,count0;mins0.s;forj1;jN;jifsj.sminminsj.s;forj0;jN;jifsj.sminhcountsj;count;return count;/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */int main STREC sNGA05,85,GA03,76,GA02,69,GA04,85,GA01,91,GA07,72,GA08,64,GA06,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,91,GA017,64,GA018,64,GA016,72; STREC hN; int i,n; nfuns,h; fori0;in; i printfs 4dn,hi.num,hi.s; return 0;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */12.6求平面上两点距离编写程序,计算二维平面上两点p1和p2间的直线距离。输入两点的坐标值 输出两点的距离 注意只需提交fun函数/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */include stdio.hinclude math.htypedef struct double x,y;POINT2D;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */double funPOINT2D p1,POINT2D p2double m0;mp2.x-p1.x*p2.x-p1.x;mp2.y-p1.y*p2.y-p1.y;mdoublesqrtm;return m;/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */int main POINT2D p1,p2; double e; scanflflf, scanflflf, efunp1,p2; printflfn,e; return 0;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */12.7加密编写程序,按下表所示的码表将明文中指定的明码转换为暗码(其他字符不变),形成密文并输出。输入明文 输出与输入相对应的密文 注意只需提交fun函数/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */include stdio.hdefine N 80typedef struct char real; /*明码*/ char code; /*密码*/ENCODE;/* PRESET CODE END - NEVER TOUCH CODE ABOVE */void funchar s,char t,ENCODE tabint i0,j,find;whilesi0find0;forj0;j4;jifsitabj.realtitabj.code;find1;break;iffind0 tisi;i;ti0;/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */int main char sN,tN; ENCODE taba,d,b,z,z,a,d,b,0; /*定义码表,供转换时查阅*/ getss; funs,t,tab; printfsn,t; return 0; /* PRESET CODE END - NEVER TOUCH CODE ABOVE */12