教育部教育管理信息中心
第六届全国信息技术应用水平大赛复赛试题 请仔细阅读并严格遵守以下要求:
请创建以“准考证号_用户名”命名的文件夹(形式如: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;i
n1=i+1;}}
min2=a[n1+1]; n2=n1+1;
for(i=n1+1;i
n2=i+1;}}
min3=a[n2+1]; n3=n2+1;
for(i=n2+1;i
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 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;}}