全国大学生信息技术应用水平大赛C语言复赛试题及答案1Word文档格式.docx
《全国大学生信息技术应用水平大赛C语言复赛试题及答案1Word文档格式.docx》由会员分享,可在线阅读,更多相关《全国大学生信息技术应用水平大赛C语言复赛试题及答案1Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
min2=a[n1+1];
n2=n1+1;
for(i=n1+1;
N-3;
if(min2>
min2=a[i+1];
n2=i+1;
min3=a[n2+1];
n3=n2+1;
for(i=n2+1;
N-2;
if(min3>
min3=a[i+1];
n3=i+1;
min4=a[n3+1];
n4=n3+1;
for(i=n3+1;
N-1;
if(min4>
min4=a[i+1];
n4=i+1;
N;
if(i!
=n1&
&
i!
=n2&
=n3&
=n4)
printf("
%d"
a[i]);
}
printf("
\n"
);
%d%d%d%d"
min1,min2,min3,min4);
getch();
3.附加题:
编程解决如下问题(50分)。
(1)已知平面上三个点:
(7,1)、(4,6)、(5,8),判断这三点组成的三角形是何种三角形(锐角,直角,钝角)(10分);
math.h"
intx[3]={7,4,5},y[3]={1,6,8},i,k;
doubleA=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]){
max=s[2];
k=2;
3;
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){
错误!
"
getch();
if(cos==0){
直角!
else
if(cos>
0){
printf("
锐角!
else{
钝角!
(2)对
(1)问中的三角形,给出它的外接圆半径(20分);
#include<
stdio.h>
#include<
math.h>
inta[3][2]={{7,1},{4,6},{5,8}};
floatl[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);
n=sqrt(1-m);
r=l[0]/(2*n);
%f\n"
r);
(3)已知平面上6个点的坐标为:
(7,1)、(4,6)、(5,8)、(6,2)、(3,9)、(2,7),试求覆盖这6个点的覆盖圆最小半径(20分)。
(要求:
点坐标数据在程序初始化中赋值完成,程序运行后直接输出结果,不进行数据输入;
点坐标数据和题目要求完全一致,否则导致的结果不正确视为程序编写错误。
)
第六届全国信息技术应用水平大赛复赛试题C语言程序设计(B卷)
ABCD*E=DCBA,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
请在整数n=92081346718538中删除10个数字,使得余下的数字按原次序组成的新数最大。
要求如下:
(1)整数n和删除数字的个数“10”在源程序中完成赋值,程序直接输出运行结果;
(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最大数。
#defineN14
inti,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];
if(max1<
max1=a[i+1];
max2=a[n1+1];
if(max2<
max2=a[i+1];
max3=a[n2+1];
if(max3<
max3=a[i+1];
max4=a[n3+1];
if(max4<
max4=a[i+1];
max1,max2,max3,max4);
在小于10的素数中有3、5、7组成的等差数列,在小于30的素数中有11、17、23、29组成的等差数列。
试找出区间[100,1000]内的素数构成的最大等差数列(即等差数列包含的素数个数最多)并打印输出。
第六届全国信息技术应用水平大赛决赛试题C语言程序设计
1.求某正整数插入乘号后乘积的最大值。
(50分)
(1)描述:
编程实现在一个9位数的正整数n中插入4个乘号,使分得的5个整数的乘积最大;
(2)输入:
正整数n;
(3)输出:
被分得的5个整数、得到的最大乘积值。
例如:
Pleaseinputn:
734019862(回车)
屏幕输出:
73*401*9*8*62=130674672
#definen9
inti,k,x,j,s1,s2,s3,s4,x1,x2,x3,x4;
intm1[3],m2[3],m3[3],m4[3],a[n];
longn=734019862,k=100000000;
9;
a[i]=n/k;
n=n-k*a[i];
k=k/10;
if(a[0]>
a[4]&
a[5]!
=0){
for(i=0,x=0;
=4;
i++,x++)
m1[x]=a[i];
for(i=5,j=0;
i++,j++)
m3[j]=a[i];
=3;
for(i=4,j=0;
if(x!
=4)
if(m1[0]>
m1[x/2]&
m1[x/2]!
=0)
for(i=0,x1=0;
=x/2;
i++,x1++)
m1[x1]=m1[i];
for(i=x/2+1,x2=0;
5;
i++,x2++)
m2[x2]=a[i];
for(i=x/2-1,x1=0;
m1[x1]=a[i];
for(i=x/2,x2=0;
if(m3[0]>
m3[j/2]&
m3[j/2+1]!
for(i=0,x3=0;
j/2;
i++,x3++)
m3[x3]=m3[i];
for(i=j/2,x4=0;
j;
i++,x4++)
m4[x4]=a[i];
for(i=j/2-1,x3=0;
=j/2;
m3[x3]=a[i];
=x1;
s1=s1*10+m1[i];
=x2;
s2=s2*10+m2[i];
=x3;
s3=s3*10+m3[i];
=x4;
s4=s4*10+m4[i];
%d*%d*%d*%d*%d%=ld%"
s1,s2,s3,s4,s1*s2*s3*s4);
2.求西瓜均分问题。
(70分)
描述:
地面上有12个西瓜,它们的重量(单位为“两”,为计算方便已全部转化为整数,如98即为9斤8两)如下:
98,93,57,64,50,82,18,34,69,56,16,61
(1)设计程序:
实现对以上12个瓜“二堆均分”(每堆6个,两堆重量相等),要求打印输出均分的各种可能方案;
inti,j,k,l,m,n,a[12]={98,93,57,64,50,82,18,34,69,56,16,61};
longs;
12;
for(j=i+1;
j<
j++)
for(k=j+1;
k<
k++)
for(l=k+1;
l<
l++)
for(m=l+1;
m<
m++)
for(n=m+1;
n<
n++)
{
s=a[i]+a[j]+a[k]+a[l]+a[m]+a[n];
if(s==349)
printf("
%d%d%d%d%d%d\n"
a[i],a[j],a[k],a[l],a[m],a[n]);
}
(a)输入:
数据输入由程序完成,执行程序后不需要任何数据输入;
(b)输出:
程序执行后输出以下格式,X分别代表一个西瓜重量的数字,如下:
No1:
XXXXXX,XXXXXX
No2:
……
注:
均分的两堆如果只有摆放顺序不一样,算一种输出结果。
(30分)
(2)设计程序,实现对以上12个西瓜,拟实现“三堆均分”(每堆4个,三堆重量相等)。
考虑到上述西瓜总重量不能为3所整除,这里另有几个西瓜,重量分别为:
70,71,72,73,74,75可供挑选,从12个西瓜中替换掉其中一个,是否可以实现“三堆均分”?
如果可以,设计程序实现,要求打印输出均分的各种可能方案;
输出结果为以下格式,X分别代表一个西瓜重量的数字,A、B、C、D、E分别代表替换原来西瓜的新重量数字70、71、72、73、74、75,如下:
No1(AreplacesX):
XXXX,XXXX,XXXX
No2(BreplacesX):
……注:
均分的三堆如果只有摆放顺序不一样,算一种输出结果。
(40分)
第四届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(A卷)
1、编写一个程序,让它有以下功能:
从键盘上输入一个五位数,对此整数中的五个数值进行从大到小排序,形成一个新的五位数,输出这个整数。
(15分)
inti,j,a[5],b[5],y=0;
longx,k=10000;
请输入一个五位数:
scanf("
%ld"
&
x);
a[i]=x/k;
x=x-a[i]*k;
if(x>
10)
k=k/10;
a[++i]=x%10;
}
for(j=9;
j>
=0;
j--){
for(i=0;
if(j==a[i])
{
b[y++]=j;
}}
printf("
b[i]);
2、输入年、月、日,输出该日期是该年的第几天。
(25分)
inti,tian,x,y,z,yue=0,a[13];
a[0]=0;
a[1]=a[3]=a[5]=a[7]=a[8]=a[10]=a[12]=31;
a[4]=a[6]=a[9]=a[11]=30;
请输入年,月,日:
%d,%d,%d"
x,&
y,&
z);
if(x%400==0||x%4==0&
x%100!
a[2]=29;
else
a[2]=28;
y;
yue=yue+a[i];
tian=yue+z;
%d年%d月%d日是该年的第%d天!
x,y,z,tian);
3、利用数组实现数据的存储。
将学生的学号和成绩存储在数组中,利用循环计算出数组中存储学生的平均成绩,找出高于平均分的学生信息并输出。
(20分)
4、输入五个国家的名字,按字母顺序(即按ASCII码从小到大的顺序)排列输出。
5、用指针实现:
任意输入20个数,将它们按照从大到小的顺序输出。
附加题
6、编写一个简单的通讯录管理系统。
通讯录包括:
姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。
可能用到以下库函数:
malloc(),功能:
分配size字节的存储区,
用法:
(类型*)malloc(size*sizeof(你要定义的类型));
包含于<
stdlib.h>
库中
feof(),功能:
检测文件是否结束
intfeof(fp)
FILE*fp;
库中。
第四届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(B卷)
1、编程完成数据加密。
数据是五位的整数,加密规则为:
每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。
inti,t,a[5];
longn,k=10000;
n);
{
n=n-a[i]*k;
if(n>
a[++i]=n%10;
a[i]=(a[i]+6)%8;
t=a[0];
a[0]=a[4];
a[4]=t;
t=a[1];
a[1]=a[3];
a[3]=t;
2、请猜数字,该数字由系统随即产生。
要求:
用户最多有10次猜测的机会,如果在10次内猜对数字,则程序显示祝贺信息,如果连续10次都没有猜中数字,则游戏自动退出。
randomize();
用系统的时间作为随机种子;
包含于stdlib.h库中
random(100):
随机产生0-99之间的一个随机数;
toupper():
将字符c转换为大写英文字母,包含于ctype.h库中)
3、有一个3×
4的矩阵,要求编写程序找出每一行中最大值并与第一列交换。
inti,j,k,x,y,t,max,a[3][4]={39,25,52,44,31,43,15,23,66,44,22,11};
for(j=0;
4;
j++){
if(max<
=a[i][j]){
max=a[i][j];
x=i;
y=j;
}
a[x][y]=a[i][0];
t=a[i][0];
a[i][0]=max;
max=t;
for(k=0;
%4d"
a[i][k]);
4、输入五个字符串,要求按照字母顺序(即按ASCII码从小到大的顺序)输出这五个字符串。
把一个整数插入到由小到大排列的数列中,插入后仍然保持由小到大的顺序。
姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找等,通讯录保存到一个文件中。
第五届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(A卷)
1、编程解决如下数学问题:
有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?
要求以如下格式打印出分水步骤。
a12b8c5
1200
***(“*”表示当前状态下每个容器的盛水量)
......
066
2、编程实现:
有二维数组a[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}},将数组a的每一行元素均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),按行输出新数组。
inti,j;
floata[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}},b[3][3];
b[i][j]=a[i][j]/a[i][i];
{
for(j=0;
%10f"
b[i][j]);
3、编程:
设x取值为区间[1,20]的整数,求函数f(x)=x-sin(x)-co