全国大学生信息技术应用水平大赛C语言复赛试题及答案1

2018-12-08 18:16

教育部教育管理信息中心

第六届全国信息技术应用水平大赛复赛试题 请仔细阅读并严格遵守以下要求:

请创建以“准考证号_用户名”命名的文件夹(形式如:433034683_xxxx),将考试结果严格按试题上的要求进行命名并直接保存在该文件夹下。

注意:文件夹的保存路径请听从监考老师的安排。请不要在该文件夹下创建任何子文件夹,所有考试结果直接保存即可。

答卷完毕后,请将该文件夹用Winrar压缩工具打包,再通过《复赛考试结果上传系统》将压缩包上传到指定服务器,并在原机器上保留备份。

注意:压缩打包时,请务必选中文件夹(如前面创建的“433034683_xxxx”文件夹)进行压缩,而不是选中文件夹下的考试结果进行压缩。

请务必按照试卷要求提交指定的文件,不得包含非题目要求的过程文件和临时文件,不得包含本试题文件和试题素材。

注意:凡违反上述规定的考生,其成绩一律按零分处理。

题目命名要求:请将编写好的源程序以题号命名,例如第1题的源程序保存为“1.C”。 重要提示:由于时间有限,请考生首先保证编写的程序在Wintc环境下可以编译通过并执行,在此基础上完成考题要求的全部功能,以免因编译不通过影响考生的考试。

--------------------------------------------------------------------------------------------

1. 编程解决如下问题(50分)。

有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。

2. 编程解决如下问题(50分)。

请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。要求如下: (1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果; (2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。

1

教育部教育管理信息中心

(提示:整数n可以以字符数组的方式定义、赋值和处理) #include\#define N 12 void main() {

int i,n1,n2,n3,n4,min1,min2,min3,min4,a[12]={7,4,2,6,8,3,6,1,3,9,8,4}; min1=a[0]; n1=0;

for(i=0;ia[i+1]){ min1=a[i+1];

n1=i+1;}}

min2=a[n1+1]; n2=n1+1;

for(i=n1+1;ia[i+1]){ min2=a[i+1];

n2=i+1;}}

min3=a[n2+1]; n3=n2+1;

for(i=n2+1;ia[i+1]){ min3=a[i+1];

n3=i+1;}}

min4=a[n3+1]; n4=n3+1;

for(i=n3+1;i

2

教育部教育管理信息中心

if(min4>a[i+1]){

min4=a[i+1]; n4=i+1;}}

for(i=0;i

if(i!=n1&&i!=n2&&i!=n3&&i!=n4)

printf(\

printf(\

printf(\ getch(); }

3. 附加题:编程解决如下问题(50分)。

(1)已知平面上三个点:(7,1)、(4,6)、(5,8),判断这三点组成的三角形是何种三角形(锐角,直角,钝角)(10分);

#include\#include\void main() {

int x[3]={7,4,5},y[3]={1,6,8},i,k; double A=0,q=0,s[3],max,w=1,cos;

s[0]=sqrt((x[0]-x[1])*(x[0]-x[1])+(y[0]-y[1])*(y[0]-y[1])); s[1]=sqrt((x[1]-x[2])*(x[1]-x[2])+(y[1]-y[2])*(y[1]-y[2])); s[2]=sqrt((x[0]-x[2])*(x[0]-x[2])+(y[0]-y[2])*(y[0]-y[2])); if(s[0]<=s[1]){

max=s[1]; k=1;}

else{

max=s[0]; k=0;}

if(max<=s[2]){

3

教育部教育管理信息中心

max=s[2];

k=2;}

for(i=0;i<3;i++) if(i!=k){ A=A+s[i]*s[i]; q=q+s[i];

w=2*w*s[i];}

cos=(A-max*max)/w; if(q<=max){

printf(\错误!\

if(cos==0){

printf(\直角!\

else if(cos>0){

printf(\锐角!\

else{

printf(\钝角!\

}

(2)对(1)问中的三角形,给出它的外接圆半径(20分); #include #include void main() {

int a[3][2]={{7,1},{4,6},{5,8}}; float l[3],r,m,n;

l[0]=sqrt(pow((a[0][0]-a[1][0]),2)+pow((a[0][1]-a[1][1]),2)) ; l[1]=sqrt(pow((a[1][0]-a[2][0]),2)+pow((a[1][1]-a[2][1]),2)) ; l[2]=sqrt(pow((a[0][0]-a[2][0]),2)+pow((a[0][1]-a[2][1]),2)) ; m=pow((pow(l[0],2)-pow(l[1],2)-pow(l[2],2))/(2*l[1]*l[2]),2);

4

教育部教育管理信息中心

n=sqrt(1-m); r=l[0]/(2*n); printf(\ getch(); }

(3)已知平面上6个点的坐标为:(7,1)、(4,6)、(5,8)、(6,2)、(3,9)、(2,7),试求覆盖这6个点的覆盖圆最小半径(20分)。

(要求:点坐标数据在程序初始化中赋值完成,程序运行后直接输出结果,不进行数据输入;点坐标数据和题目要求完全一致,否则导致的结果不正确视为程序编写错误。)

第六届全国信息技术应用水平大赛复赛试题C语言程序设计(B卷) 1. 编程解决如下问题(50分)。

有一个数学等式:ABCD*E= DCBA,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。

2. 编程解决如下问题(50分)。

请在整数n=92081346718538中删除10个数字,使得余下的数字按原次序组成的新数最大。要求如下:

(1)整数n和删除数字的个数“10”在源程序中完成赋值,程序直接输出运行结果; (2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最大数。 #include\#define N 14 void main() {

int i,n1,n2,n3,n4,max1,max2,max3,max4,a[14]={9,2,0,8,1,3,4,6,7,1,8,5,3,8}; max1=a[0]; n1=0;

for(i=0;i

5

if(max1

max1=a[i+1]; n1=i+1;}}


全国大学生信息技术应用水平大赛C语言复赛试题及答案1.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福师2016秋《计算机应用基础》在线作业一

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: