第五届全国ITAT教育工程就业技能大赛复赛试题及答案.docx
- 文档编号:5936263
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:14
- 大小:26.56KB
第五届全国ITAT教育工程就业技能大赛复赛试题及答案.docx
《第五届全国ITAT教育工程就业技能大赛复赛试题及答案.docx》由会员分享,可在线阅读,更多相关《第五届全国ITAT教育工程就业技能大赛复赛试题及答案.docx(14页珍藏版)》请在冰豆网上搜索。
第五届全国ITAT教育工程就业技能大赛复赛试题及答案
第五届全国ITAT教育工程就业技能大赛复赛试题
C语言程序设计(A卷)
请考生仔细阅读并严格遵守题目中关于文件保存和命名的要求。
请务必按照试卷要求为文件命名。
考生答题完毕后,首先创建以“准考证号”命名的文件夹(形式如:
433034683),并将考试结果严格按题目上的命名要求进行命名并直接保存在该文件夹下。
注意:
考生不得在该文件夹下创建任何子文件夹,所有考试结果均直接保存在该文件夹根目录下。
然后选中整个文件夹,用Winrar压缩工具打包后存放在本考场指定的考试结果存放地址,经监考老师确认上传无误后方可离开考场。
注意:
在提交答案时,请务必选中上述存放作品的文件夹(如前面创建的433034683文件夹,而不是文件夹下的全部文件)进行压缩,在完成答案提交后,请确保上述压缩包仍保存在本地计算机中。
请务必按照试卷要求提交指定的文件,不得包含非题目要求的过程文件和临时文件,不得包含本试题文件和试题素材。
注意:
凡违反上述规定的考生,其成绩一律按零分处理。
题目命名要求:
请将编写好的源程序以题号命名,例如第1题的源程序保存为“1.C”。
重要提示:
由于时间有限,请考生首先保证编写的程序在Wintc环境下可以编译通过并执行,并在此基础上完成考题要求的全部功能,以免因编译不通过影响考生的考试成绩。
1、编程解决如下数学问题:
有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?
要求以如下格式打印出分水步骤。
(20分)
a12b8c5
1200
***(“*”表示当前状态下每个容器的盛水量)
......
066
#include"stdio.h"
voidMove(int*a,int*b,intaMax,intbMax)
{
if(aMax>bMax)
{
if((*a+*b)>bMax)
{*a=*a-(bMax-*b);
*b=*b+bMax-*b;
}
else
{
*b=*a+*b;
*a=*a-*a;
}
}
else
{
*b=*b+*a;
*a=0;
}
}
intcheck(intaMax,intbMax,intcMax)
{
if(aMax>bMax&bMax>cMax)
return0;
else
return1;
}
intmain()
{
inta;
intb;
intc;
intaMax,bMax,cMax;
//aMax=40;bMax=14;cMax=8;
label3:
printf("待分配水量杯A:
");
scanf("%d",&aMax);
printf("量杯B容量:
");
scanf("%d",&bMax);
printf("量杯C容量:
");
scanf("%d",&cMax);
if(check(aMax,bMax,cMax))
{
printf("容量输入有误!
请重新输入.\n");
gotolabel3;
}
a=aMax;
b=0;
c=0;
intm=0;
while(m<100){
Move(&a,&b,aMax,bMax);
printf("A->B:
%d%d%d\n",a,b,c);
m++;
if(b==aMax/2&a==aMax/2)gotolabel2;
Move(&b,&c,bMax,cMax);
printf("B->C:
%d%d%d\n",a,b,c);
m++;
if(b==aMax/2&a==aMax/2)gotolabel2;
label1:
Move(&c,&a,cMax,aMax);
printf("C->A:
%d%d%d\n",a,b,c);
m++;
if(b==aMax/2&a==aMax/2)gotolabel2;
Move(&b,&c,bMax,cMax);
printf("B->C:
%d%d%d\n",a,b,c);
m++;
if(b==aMax/2&a==aMax/2)gotolabel2;
if(c==cMax)gotolabel1;
}
label2:
printf("共需%d步\n",m);
printf("%d%d%d\n",a,b,c);
return0;
}
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
#include
voidmain()
{
floata[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}};
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=a[i][j]/a[i][i];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%f\t",a[i][j]);
printf("\n");
}
}
3、编程:
设x取值为区间[1,20]的整数,求函数f(x)=x-sin(x)-cos(x)的最大值,要求使用自定义函数实现f(x)功能。
(20分)
#include
#include
doublefun(doublex)
{
doublef;
f=x-sin(x)-cos(x);
returnf;
}
doubleMax(doublex1,doublex2)
{
if(x1>x2)returnx1;
else
returnx2;
}
voidmain()
{
inti,j;
doublet;
for(i=1;i<21;i++)
{
t=Max(fun(0),fun(i));
}
printf("result:
%.2f",t);
}
或者
#include
#include
intf()
{
intx,max;
doubley,y1;
for(x=1;x<=20;x++)
{
y=x-sin(x)-cos(x);
if(y>=y1)
{
y1=y;
max=x;
}
}
returnmax;
}
main()
{
printf("x=%d\n",f());
}
4、编写函数fun,通过指针实现将一个字符串反向。
要求主函数输入字符串,通过调用函数fun实现输入字符串反向。
(20分)
#include
#include
#include
voidfun(char*str)
{
char*begin=str;
char*end=str+strlen(str);
char*front,*back,tmp;
for(front=begin,back=(end-1);front { tmp=*front; *front=*back; *back=tmp; } } voidmain() { charstr[200]; printf("请输入字串: "); gets(str); fun(str); printf("反转后: %s\n",str); } 5、已知学生三门课程基本信息如下。 请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。 (20分) 姓名数学英语计算机 Mary9310088 Jone829090 Peter917671 Rose1008092 Mary9310088 Jone829090 Peter917671 Rose1008092 #include typedefstructst { charname[10]; intmath; intenglish; intpc; intaver; }st; voidinput(sts[],intn); voidcompute(sts[],intn); voidPrint(sts[],intn); voidmain() { ststudent[4]; input(student,4); compute(student,4); Print(student,4); getchar(); } voidinput(sts[],intn) { inti; for(i=0;i { scanf("%s%d%d%d",s[i].name,&s[i].math,&s[i].english,&s[i].pc); } } voidcompute(sts[],intn) { inti; for(i=0;i s[i].aver=(s[i].math+s[i].english+s[i].pc)/3; } voidPrint(sts[],intn) { inti,j; printf("姓名\t数学\t英语\t计算机\t平均分\n"); for(i=0;i printf("%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n", s[i].name,s[i].math,s[i].english,s[i].pc,s[i].aver); } 6、附加题: 编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母),以“000”作为字符串输入结束标志,例如: Twinkletwinklelittlestar000(回车) twinklelittlestar 211(50分)(答案中的字符自己参考) #include #include voidfun(char*s); main() { chara[50]; scanf("%s",a); fun(a); } voidfun(char*s) { charb[10][10]; intc=0,d=0; inti,j; intm=0; intn; n=strlen(s); for(i=0;i if('A'<=s[i]&&s[i]>='Z')s[i]+=32; if(s[i]=='')m++; for(i=0;i { while(*s! =''&&*s! ='\0') { b[c][d++]=*s; s++; } b[c][d]='\0'; d=0; c=c+1; } m=0; for(j=1;j<=c;j++) { if(strcmp(b[0],b[j])==0)m++; } printf("%s,%d",b[0],m); } 第五届全国ITAT教育工程就业技能大赛复赛试题 C语言程序设计(B卷) 请考生仔细阅读并严格遵守题目中关于文件保存和命名的要求。 请务必按照试卷要求为文件命名。 考生答题完毕后,首先创建以“准考证号”命名的文件夹(形式如: 433034683),并将考试结果严格按题目上的命名要求进行命名并直接保存在该文件夹下。 注意: 考生不得在该文件夹下创建任何子文件夹,所有考试结果均直接保存在该文件夹根目录下。 然后选中整个文件夹,用Winrar压缩工具打包后存放在本考场指定的考试结果存放地址,经监考老师确认上传无误后方可离开考场。 注意: 在提交答案时,请务必选中上述存放作品的文件夹(如前面创建的433034683文件夹,而不是文件夹下的全部文件)进行压缩,在完成答案提交后,请确保上述压缩包仍保存在本地计算机中。 请务必按照试卷要求提交指定的文件,不得包含非题目要求的过程文件和临时文件,不得包含本试题文件和试题素材。 注意: 凡违反上述规定的考生,其成绩一律按零分处理。 题目命名要求: 请将编写好的源程序以题号命名,例如第1题的源程序保存为“1.C” )。 重要提示: 由于时间有限,请考生首先保证编写的程序在Wintc环境下可以编译通过并执行,并在此基础上保证完成考题要求的全部功能,以免因编译不通过影响考生的考试成绩。 1、 编程解决如下问题: 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。 百钱买百鸡, 问鸡翁,鸡母,鸡雏各几何? (20分) for(inta=1;a<100;a++){ for(intb=1;b<100;b++){ for(intc=1;c<100;c++){ if(a+b+c==100&&5*a+3*b+c==100) printf("%d\t%d\t%d\n",a,b,c); } c=1; } b=1; } 2、 编程实现: 有二维数组a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}},将数组a的每一行元素均除以该行上绝对值最大的元素,按行输出新数组。 (20分) 3、 编程: 设x、y取值为区间[1,10]的整数, f(x,y)=(3x-2y)/(x+y),求使f(x,y)取最小值的x1、y1,要求使用自定义函数实现f(x,y)功能。 #include #include voidInverseByWord(char*sentence) { strrev(sentence); } intmain() { charstr[100]; gets(str); InverseByWord(str); printf("%s\n",str); return0; (20分)这个不保证仅作参考 4、 编写函数fun,其功能是: 在字符串中所有数字字符前加一个“*”字符,要求通过指针实现。 (20分) #include #include #defineN225 voidmain() { voidfun(char*p,intn); intn; charch[N]; gets(ch); n=strlen(ch); fun(ch,n); puts(ch); } voidfun(char*p,intn) { inti=0,j; while(*p! ='\0') { if(*p>='0'&&*p<='9') { for(j=n;j>=i;j--) p[j+1]=p[j]; p[i]='*'; n++,i++,p++; p[n]='\0'; } p++,i++; } } 5、 编程: 已知学生记录由学号和学习成绩构成,N名学生的记录已存入结构体数组中,找出成绩最低的学生,并输出这个学生的信息,已知学生信息如下。 (20分) A01,81;A02,89;A03,66;A04,87;A05,77 A06,90;A07,79;A08,61;A09,80;A10,71 6、 附加题: 编写一个函数InverseByWord(char*sentence),实现一个英文句子按单词逆序存放的功能,并给出测试程序。 (50分) 如: Thisisaninterestingprogramme. 逆序后变为: .programmeinterestinganisThis #include"Stdio.h" voidmain() { voidInverseByWord(char*); chars[200]; gets(s); InverseByWord(s); getch(); } voidInverseByWord(char*sentence) { inti=0,j=0; chars[10][20],*p=*sentence; while(i<10) { if(*p>='A'&&*p<='Z'||*p>='a'&&*p<='z') { for(j;j<20;j++) { s[i][j]=*p; p++; if(*p<'A'||*p>'Z'&&*p<'a'||*p>'z') break; } } else i++; } for(i=9;i>=0;i--) printf("%s",s[i]); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 全国 ITAT 教育 工程 就业 技能 大赛 复赛 试题 答案