if(i!
=n1&&i!
=n2&&i!
=n3&&i!
=n4)
printf("%d",a[i]);}
printf("\n");
printf("%d%d%d%d",max1,max2,max3,max4);
getch();
}
(提示:
整数n可以以字符数组的方式定义、赋值和处理)
3.附加题:
编程解决如下问题(50分)。
在小于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
#include"stdio.h"
#definen9
voidmain()
{
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;
for(i=0;i<9;i++){
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;i<=4;i++,x++)
m1[x]=a[i];
for(i=5,j=0;i<9;i++,j++)
m3[j]=a[i];}
else{
for(i=0,x=0;i<=3;i++,x++)
m1[x]=a[i];
for(i=4,j=0;i<9;i++,j++)
m3[j]=a[i];}
if(x!
=4)
if(m1[0]>m1[x/2]&&m1[x/2]!
=0)
for(i=0,x1=0;i<=x/2;i++,x1++)
m1[x1]=m1[i];
for(i=x/2+1,x2=0;i<5;i++,x2++)
m2[x2]=a[i];}
else{
for(i=x/2-1,x1=0;i<=3;i++,x1++)
m1[x1]=a[i];
for(i=x/2,x2=0;i<=4;i++,x2++)
m2[x2]=a[i];}
if(m3[0]>m3[j/2]&&m3[j/2+1]!
=0)
for(i=0,x3=0;im3[x3]=m3[i];
for(i=j/2,x4=0;im4[x4]=a[i];}
else{
for(i=j/2-1,x3=0;i<=j/2;i++,x3++)
m3[x3]=a[i];
for(i=j/2,x4=0;i<=4;i++,x4++)
m4[x4]=a[i];}
for(i=0;i<=x1;i++)
s1=s1*10+m1[i];
for(i=0;i<=x2;i++)
s2=s2*10+m2[i];
for(i=0;i<=x3;i++)
s3=s3*10+m3[i];
for(i=0;i<=x4;i++)
s4=s4*10+m4[i];
printf("%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个,两堆重量相等),要求打印输出均分的各种可能方案;
#include"stdio.h"
voidmain()
{
inti,j,k,l,m,n,a[12]={98,93,57,64,50,82,18,34,69,56,16,61};
longs;
for(i=0;i<12;i++)
for(j=i+1;j<12;j++)
for(k=j+1;k<12;k++)
for(l=k+1;l<12;l++)
for(m=l+1;m<12;m++)
for(n=m+1;n<12;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:
XXXXXX,XXXXXX
……
注:
均分的两堆如果只有摆放顺序不一样,算一种输出结果。
(30分)
(2)设计程序,实现对以上12个西瓜,拟实现“三堆均分”(每堆4个,三堆重量相等)。
考虑到上述西瓜总重量不能为3所整除,这里另有几个西瓜,重量分别为:
70,71,72,73,74,75可供挑选,从12个西瓜中替换掉其中一个,是否可以实现“三堆均分”?
如果可以,设计程序实现,要求打印输出均分的各种可能方案;
(a)输入:
数据输入由程序完成,执行程序后不需要任何数据输入;
(b)输出:
输出结果为以下格式,X分别代表一个西瓜重量的数字,A、B、C、D、E分别代表替换原来西瓜的新重量数字70、71、72、73、74、75,如下:
No1(AreplacesX):
XXXX,XXXX,XXXX
No2(BreplacesX):
XXXX,XXXX,XXXX
……注:
均分的三堆如果只有摆放顺序不一样,算一种输出结果。
(40分)
第四届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(A卷)
1、编写一个程序,让它有以下功能:
从键盘上输入一个五位数,对此整数中的五个数值进行从大到小排序,形成一个新的五位数,输出这个整数。
(15分)
#include"stdio.h"
voidmain()
{
inti,j,a[5],b[5],y=0;
longx,k=10000;
printf("请输入一个五位数:
");
scanf("%ld",&x);
for(i=0;i<5;i++){
a[i]=x/k;
x=x-a[i]*k;
if(x>10)
k=k/10;
else
a[++i]=x%10;
}
for(j=9;j>=0;j--){
for(i=0;i<5;i++)
if(j==a[i])
{
b[y++]=j;
}}
for(i=0;i<5;i++){
printf("%d",b[i]);}
getch();
}
2、输入年、月、日,输出该日期是该年的第几天。
(25分)
#include"stdio.h"
voidmain()
{
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;
printf("请输入年,月,日:
");
scanf("%d,%d,%d",&x,&y,&z);
if(x%400==0||x%4==0&&x%100!
=0)
a[2]=29;
else
a[2]=28;
for(i=0;iyue=yue+a[i];
tian=yue+z;
printf("%d年%d月%d日是该年的第%d天!
",x,y,z,tian);
getch();
}
3、利用数组实现数据的存储。
将学生的学号和成绩存储在数组中,利用循环计算出数组中存储学生的平均成绩,找出高于平均分的学生信息并输出。
(20分)
4、输入五个国家的名字,按字母顺序(即按ASCII码从小到大的顺序)排列输出。
(20分)
5、用指针实现:
任意输入20个数,将它们按照从大到小的顺序输出。
(20分)
附加题
6、编写一个简单的通讯录管理系统。
通讯录包括:
姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。
(50分)
(提示:
可能用到以下库函数:
malloc(),功能:
分配size字节的存储区,
用法:
(类型*)malloc(size*sizeof(你要定义的类型));包含于库中
feof(),功能:
检测文件是否结束
用法:
intfeof(fp)
FILE*fp;包含于库中。
)
第四届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(B卷)
1、编程完成数据加密。
数据是五位的整数,加密规则为:
每位数字都加上6,然后用和除以8的余数代替该数字,再将第一位和第五位交换,第二位和第四位交换。
(15分)
#include"stdio.h"
voidmain()
{
inti,t,a[5];
longn,k=10000;
printf("请输入一个五位数:
");
scanf("%ld",&n);
for(i=0;i<5;i++)
{
a[i]=n/k;
n=n-a[i]*k;
if(n>10)
k=k/10;
else
a[++i]=n%10;
}
for(i=0;i<5;i++)
printf("%d",a[i]);
printf("\n");
for(i=0;i<5;i++)
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;
for(i=0;i<5;i++)
printf("%d",a[i]);
getch();
}
2、请猜数字,该数字由系统随即产生。
要求:
用户最多有10次猜测的机会,如果在10次内猜对数字,则程序显示祝贺信息,如果连续10次都没有猜中数字,则游戏自动退出。
(25分)
(提示:
可能用到以下库函数:
randomize();用系统的时间作为随机种子;包含于stdlib.h库中
random(100):
随机产生0-99之间的一个随机数;包含于stdlib.h库中
toupper():
将字符c转换为大写英文字母,包含于ctype.h库中)
3、有一个3×4的矩阵,要求编写程序找出每一行中最大值并与第一列交换。
(20分)
#include"stdio.h"
voidmain()
{
inti,j,k,x,y,t,max,a[3][4]={39,25,52,44,31,43,15,23,66,44,22,11};
for(i=0;i<3;i++){
for(j=0;j<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;k<4;k++)
printf("%4d",a[i][k]);
printf("\n");
}
}
4、输入五个字符串,要求按照字母顺序(即按ASCII码从小到大的顺序)输出这五个字符串。
(20分)
5、用指针实现:
把一个整数插入到由小到大排列的数列中,插入后仍然保持由小到大的顺序。
(20分)
附加题
6、编写一个简单的通讯录管理系统。
通讯录包括:
姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找等,通讯录保存到一个文件中。
(50分)
(提示:
可能用到以下库函数:
malloc(),功能:
分配size字节的存储区,
用法:
(类型*)malloc(size*sizeof(你要定义的类型));包含于库中
feof(),功能:
检测文件是否结束
用法:
intfeof(fp)
FILE*fp;包含于库中。
)
第五届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(A卷)
1、编程解决如下数学问题:
有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?
要求以如下格式打印出分水步骤。
(20分)
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],...),按行输出新数组。
(20分)
#include"stdio.h"
voidmain()
{
inti,j;
floata[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}},b[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[i][j]=a[i][j]/a[i][i];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%10f",b[i][j]);}
printf("\n");}
}
3、编程:
设x取值为区间[1,20]的整数,求函数f(x)=x-sin(x)-co