考试卷答案卷模板-c语言
- 格式:doc
- 大小:56.00 KB
- 文档页数:17
浙江科技学院考试科目 程序设计基础(C 语言) 考试方式闭 完成时限 2小时 拟题人 审核人 批准人 年 月 日 信息学院 院 09 年级 计算机科学与技术 专业参考答案及评分标准以下编程题目采用如下统一标准评分评分标准:程序结构正确4分操作处理部分正确3分输出正确3分一键盘输入三角形的三个边长,利用如下公式计算并输出三角形的面积。
)(21c b a s ++=,)()()(c s b s a s s area -⨯-⨯-⨯= 要求:输出共占7列,小数点后保留两位。
#include <stdio.h>#include<math.h>int main(){double s;double a,b,c;double area;printf("Please enter the lengthes of the edges of the triangle\n");scanf("%lf%lf%lf",&a,&b,&c);s=(a+b+c)/2;area=s*(s-a)*(s-b)*(s-c);area=sqrt(area);printf("%7.2lf\n",area); return 0;二、情况:方程的根,要求分如下计算并输出输入方程的三个系数,02=++c bx ax (1)当所输入系数a=0且b=0时,不构成方程,输出相关信息(2)当所输入系数构成一元一次方程,输出x=-c/b(3) 当所输入系数构成有两个实根的一元二次方程,输出实根x1和x2; (4 当所输入系数构成有两个虚根的一元二次方程,输出相关虚根。
#include <stdio.h>#include<math.h>int main(){double a,b,c;double x1,x2;double real,imag;printf("Please enter the coefficient of the equation!\n");scanf("%lf%lf%lf",&a,&b,&c);if(fabs(a)<0.00001&&fabs(b)<0.00001)printf("It cannot form an equation\n");else if(fabs(a)<0.00001 && fabs(b)>0.00001){x1=(-1*c)/b;printf("x = %0.2lf\n",x1);}else if(fabs(b*b-4*a*c)<0.00001){x1=(-1*b)/(2*a);printf("x = %0.2lf\n",x1);}else if(b*b-4*a*c > 0){imag=sqrt(b*b-4*a*c);x1=((-1)*b+imag)/(2*a);x2=((-1)*b-imag)/(2*a);printf("x1 = %0.2lf, x2 = %0.2lf\n",x1,x2);}else if( b*b-4*a*c < 0){imag=sqrt(4*a*c-b*b);real=(-1*b)/(2*a);x1=(imag)/(2*a);x2=-1*x1;if(x1 > 0){printf("x1 = %0.2lf+%0.2lfi, x2 = %0.2lf-%0.2lfi\n",real,x1,real,x1);}else{printf("x1 = %0.2lf+%0.2lfi, x2 = %0.2lf-%0.2lfi\n",real,x2,real,x2);}}return 0;}三、从键盘输入n1,计算并输出下列式子的结果。
#include<stdio.h>!2)1(112i in ii+ -∑={int n;int i;long fact,result;printf("Please enter the number n :\n");scanf("%d",&n);fact=1;result=0;for(i=1;i<=n;i++){fact*=i;if( i%2 == 1 )result += (-2)*i*i+fact;elseresult += 2*i*i+fact;}printf("%ld\n",result);return 0;}四、有20个选手参加跳水比赛,每个选手都有7名评委对其打分。
任意一个选手的得分是这样计算的:在7名评委的打分中,去掉一个最高分,去掉一个最低分,剩下5名评委打分的平均值为该选手最后得分。
要求输入7名评委对20个选手的打分,输出每位选手的成绩。
(可采用数组或者结构体,数组定义:float score[20][7],结构体数据类型定义:struct score{ float mark[7] }player[20];)#include <stdio.h>int main(){int i,j;float maxs,mins;float sum;float score[20][7];float average[20];printf("Please enter all the player's score!\n");for( i=0;i<20;i++ ){maxs=0;mins=10000;sum=0;for(j=0;j<7;j++){scanf("%f",&score[i][j]);sum+=score[i][j];if(score[i][j]>maxs)maxs=score[i][j];if(score[i][j]<mins)mins=score[i][j];}average[i]=(sum-maxs-mins)/5;}for(i=0;i<20;i++){printf("Student %d : %0.2f\n",i+1,average[i]);}return 0 ;}// 结构体#include <stdio.h>struct score{float mark[7];}player[20];int main(){int i,j;float maxs,mins;float sum;float average[20];printf("Please enter all the player's score!\n");for( i=0;i<20;i++ ){maxs=0;mins=10000;sum=0;for(j=0;j<7;j++){scanf("%f",&player[i].mark[j]);sum+=player[i].mark[j];if(player[i].mark[j]>maxs)maxs=player[i].mark[j];if(player[i].mark[j]<mins)mins=player[i].mark[j];}average[i]=(sum-maxs-mins)/5;}for(i=0;i<20;i++){printf("Student %d : %0.2f\n",i+1,average[i]); }return 0 ;}五、有10个队伍参加游戏大赛,输入这10个队伍的队名(一个大写字母),过关总数和耗时总数,输出他们的排名,排名按如下规则:(1)过关数越多,名次越靠前;(2)过关数目相等时,总耗时越少,名次越靠前;(3)过关数相等、总耗时也相等的情况下,按照各个队伍队名在字母表中的顺序进行排名。
(队伍信息可定义为如下形式:char name[10],int pass[10],int time_con[10]或者定义成结构体struct array{char name,int pass,int time}team[10];可采用冒泡或者选择方案排序。
)#include<stdio.h>#include<string.h>#include<stdlib.h>struct array{char name,int pass,int time;}team[10];void exchange(struct array *a, struct array *b){struct array c;=a->name, c.pass=a->pass, c.time=a->time;a->name=b->name, a->pass=b->pass, a->time=b->time;b->name=, b->pass=c.pass, b->time=c.time;}void main(){int i, j;for(i=0; i<10; i++) //ÊäÈë{scanf("%c%d%d",&team[i].name, &team[i].pass, &team[i].time);getchar();}for(i=0; i<10; i++) //ÅÅÐò{for(j=0; j<9-i; j++) //»òj<9{if(team[j].pass<team[j+1].pass)exchange(&team[j], &team[j+1]);else if(team[j].pass<team[j+1].pass &&team[j].time>team[j+1].time)exchange(&team[j], &team[j+1]);else if(team[j].pass<team[j+1].pass &&team[j].time>team[j+1].time &&team[j].name>team[j+1].name)exchange(&team[j], &team[j+1]);}}//Êä³öfor(i=0; i<10; i++)printf("%c %d %d\n",team[i].name, team[i].pass, team[i].time);}六、输入一个4*5实型矩阵,给其增加一行及一列,变成5*6矩阵,最后一行及最后一列用来统计每行及每列元素之和。