第四五六全国ITAT教育工程就业技能大赛c语言复赛.docx
- 文档编号:14866731
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:53
- 大小:30.29KB
第四五六全国ITAT教育工程就业技能大赛c语言复赛.docx
《第四五六全国ITAT教育工程就业技能大赛c语言复赛.docx》由会员分享,可在线阅读,更多相关《第四五六全国ITAT教育工程就业技能大赛c语言复赛.docx(53页珍藏版)》请在冰点文库上搜索。
第四五六全国ITAT教育工程就业技能大赛c语言复赛
第四届全国ITAT教育工程就业技能大赛复赛试题
C语言程序设计〔A卷〕
1、编写一个程序,让它有以下功能:
从键盘上输入一个五位数,对此整数中的五个数值进行从大到小排序,形成一个新的五位数,输出这个整数。
〔15分〕
#include"stdio.h"
intfun〔intn〕
{
intnum=0,t;
inta[5],i,j;
for〔i=0;i<5;i++〕
{
a[i]=n%10;
n/=10;
}
for〔i=0;i<4;i++〕
for〔j=i+1;j<5;j++〕
if〔a[j]>a[i]〕
{
t=a[i];
a[j]=a[i];
a[i]=t;
}
for〔i=0;i<5;i++〕
num=a[i]+num*10;
returnnum;
}
voidmain〔〕
{
inta,b;
scanf〔"%d",&a〕;
b=fun〔a〕;
printf〔"%d\n",b〕;
}
2、输入年、月、日,输出该日期是该年的第几天。
〔25分〕
#include"stdio.h"
intchoice〔intyear〕
{
intflag=0;
if〔〔year%400==0〕||〔year%100!
=0&&year%4==0〕〕
flag=1;
returnflag;
}
intyue〔intmoonth,intflag〕
{
intyue;
switch〔moonth〕
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
yue=31;break;
case2:
switch〔flag〕
{
case0:
yue=28;break;
case1:
yue=29;break;
}
break;
case4:
case6:
case9:
case11:
yue=30;break;
}
returnyue;
}
voidmain〔〕
{
intnum=0,flag,i;
intyear,moonth,data;
printf〔"Pleaseinputadata:
like1991,6,6\n"〕;
scanf〔"%d,%d,%d",&year,&moonth,&data〕;
flag=choice〔year〕;
for〔i=1;i num+=yue〔i,flag〕; num+=data; printf〔"%d\n",num〕; } 3、利用数组实现数据的存储。 将学生的学号和成绩存储在数组中,利用循环计算出数组中存储学生的平均成绩,找出高于平均分的学生信息并输出。 〔20分〕 #include"stdio.h" voidmain〔〕 { intstdnum[100]; intstdgrade[100]; inti,num; intavg=0; printf〔"Pleaseinputtheclass'studentnumber\n"〕; scanf〔"%d",&num〕; printf〔"Pleaseinputstudent'snumberandgrade! \n"〕; for〔i=0;i { scanf〔"%d,%d",&stdnum[i],&stdgrade[i]〕; avg=stdgrade[i]+avg; } avg=avg/num; printf〔"%d\n",avg〕; for〔i=0;i if〔stdgrade[i]>avg〕 printf〔"%d,%d\n",stdnum[i],stdgrade[i]〕; } 4、输入五个国家的名字,按字母顺序〔即按ASCII码从小到大的顺序〕排列输出。 〔20分〕 /*Note: YourchoiceisCIDE*/ #include #include voidsort〔charname[5][20],intn〕 { chartemp[20]; inti,j; for〔i=0;i { for〔j=i+1;j if〔strcmp〔name[i],name[j]〕>0〕 { //temp=name[i]; //name[i]=name[j]; //name[j]=temp; strcpy〔temp,name[i]〕; strcpy〔name[i],name[j]〕; strcpy〔name[j],temp〕; } } } voidprint〔charname[5][20],intn〕 { inti; for〔i=0;i printf〔"%s\n",name[i]〕; } voidmain〔〕 { charp[5][20];//={"Followme","BASIC","GreatWall","FORTRAN","Computerdesign"}; inti,n=5; printf〔"Pleaseinputfivecountry'snames\n"〕; for〔i=0;i<5;i++〕 gets〔p[i]〕; //scanf〔"%s,%s,%s,%s,%s",p[0],p[1],p[2],p[3],p[4]〕; sort〔p,5〕; print〔p,5〕; } 5、用指针实现: 任意输入20个数,将它们按照从大到小的顺序输出。 〔20分〕 #include"stdio.h" voidmain〔〕 { int*p,a[20]; inti,j,temp; printf〔"Pleaseinput20internumber! \n"〕; for〔i=0;i<20;i++〕 scanf〔"%d,",&a[i]〕; p=a; for〔i=0;i<19;i++〕 for〔j=i+1;j<20;j++〕 if〔p[i] { temp=p[i]; p[i]=p[j]; p[j]=temp; } for〔i=0;i<20;i++〕 printf〔"%d\n",*〔p++〕〕; } 附加题 6、编写一个简单的通讯录管理系统。 通讯录包括: 姓名、通讯地址、、联系,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。 〔50分〕 〔提示: 可能用到以下库函数: malloc〔〕,功能: 分配size字节的存储区, 用法: 〔类型*〕malloc〔size*sizeof〔你要定义的类型〕〕;包含于 feof〔〕,功能: 检测文件是否结束 用法: intfeof〔fp〕 FILE*fp;包含于 〕 /*********************************************** 6、编写一个简单的通讯录管理系统。 通讯录包括: 姓名、通讯地址、、联系,现编写一个通 讯录管理系统,可以对通讯录进行输入、显示、查 找,通讯录保存到一个文件中。 〔50分〕 〔提示: 可能用到以下库函数: malloc〔〕,功能: 分配size字节的存储区, 用法: 〔类型*〕malloc〔size*sizeof〔 你要定义的类型〕〕;包含于 feof〔〕,功能: 检测文件是否结束 用法: intfeof〔fp〕 FILE*fp;包含于 〕 ************************************************/ /*Note: YourchoiceisCIDE*/ #include"stdio.h" #include #include typedefstruct { charname[20]; charadress[30]; charcode[10]; charphonenumber[15]; }STD; voidinit〔〕 { printf〔"欢送光临通讯录管理系统\n"〕; printf〔"输入请选择: 1\n"〕; printf〔"显示请选择: 2\n"〕; printf〔"查找请选择: 3\n"〕; printf〔"退出请选择: 0\n"〕; printf〔"请输入您的选择: "〕; } voidstop〔〕 { exit〔0〕; } voidinput〔〕 { STDtemp; FILE*fp; if〔〔fp=fopen〔"F: \\story\\from.txt","a"〕〕==NULL〕 { printf〔"翻开文件出现错误! \n"〕; return; } printf〔"请输入姓名: "〕; scanf〔"%s",temp.name〕; printf〔"请输入通讯地址: "〕; scanf〔"%s",temp.adress〕; printf〔"请输入: "〕; scanf〔"%s",temp.code〕; printf〔"请输入联系: "〕; scanf〔"%s",temp.phonenumber〕; printf〔"输入记录为: "〕; printf〔"%s%s%s%s\n",temp.name,temp.adress,temp.code,temp.phonenumber〕; fprintf〔fp,"%s%s%s%s\n",temp.name,temp.adress,temp.code,temp.phonenumber〕; fclose〔fp〕; } voiddisplay〔〕 { STDtemp; FILE*fp; //intc; if〔〔fp=fopen〔"F: \\story\\from.txt","r"〕〕==NULL〕 { printf〔"翻开文件出现错误! \n"〕; return; } printf〔"姓名通讯地址联系\n"〕; fscanf〔fp,"%s%s%s%s",temp.name,temp.adress,temp.code,temp.phonenumber〕; while〔! feof〔fp〕〕 { printf〔"%10s%10s%10s%20s\n",temp.name,temp.adress,temp.code,temp.phonenumber〕; fscanf〔fp,"%s%s%s%s",temp.name,temp.adress,temp.code,temp.phonenumber〕; } fclose〔fp〕; } voidfind〔〕 { charch[20]; STDtemp; FILE*fp; printf〔"请输入查找人的姓名: "〕; scanf〔"%s",ch〕; if〔〔fp=fopen〔"F: \\story\\from.txt","r"〕〕==NULL〕 { printf〔"翻开文件出现错误! \n"〕; return; } while〔1〕 { fscanf〔fp,"%s%s%s%s",temp.name,temp.adress,temp.code,temp.phonenumber〕; strlwr〔temp.name〕; strlwr〔ch〕; if〔strcmp〔temp.name,ch〕==0〕 { printf〔"您找的人的信息如下: \n"〕; printf〔"%s%s%s%s\n",temp.name,temp.adress,temp.code,temp.phonenumber〕; break; } if〔feof〔fp〕〕 { printf〔"对不起,没有找到您需要的资料! \n"〕; break; } } fclose〔fp〕; } voidmain〔〕 { intchoice; while〔1〕 { init〔〕; scanf〔"%d",&choice〕; //printf〔"%d\n",choice〕; switch〔choice〕 { case0: stop〔〕;break; case1: input〔〕;break; case2: display〔〕;break; case3: find〔〕;break; default: printf〔"输入错误,请您重新选择\n"〕;break; } } } 第五届全国ITAT教育工程就业技能大赛复赛试题 C语言程序设计〔A卷〕 1、编程解决如下数学问题: 有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升? 要求以如下格式打印出分水步骤。 〔20分〕 a12b8c5 1200 ***〔“*〞表示当前状态下每个容器的盛水量〕 ...... 066 #include"stdio.h" voidmain〔〕 { printf〔"a12b8c5\n"〕; printf〔"1200\n"〕; printf〔"480\n"〕; printf〔"435\n"〕; printf〔"930\n"〕; printf〔"903\n"〕; printf〔"183\n"〕; printf〔"165\n"〕; printf〔"660\n"〕; } 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〔〕 { doublea[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}}; inti,j; doubletemp; printf〔"变换前的矩阵: \n"〕; for〔i=0;i<3;i++〕 { for〔j=0;j<3;j++〕 printf〔"%2.1f",a[i][j]〕; printf〔"\n"〕; } printf〔"变换后的矩阵: \n"〕; for〔i=0;i<3;i++〕 { temp=a[i][i]; for〔j=0;j<3;j++〕 { a[i][j]/=temp; printf〔"%2.1f",a[i][j]〕; } printf〔"\n"〕; } } 3、编程: 设x取值为区间[1,20]的整数,求函数f〔x〕=x-sin〔x〕-cos〔x〕的最大值,要求使用自定义函数实现f〔x〕功能。 〔20分〕 #include"stdio.h" #include doublefun〔intx〕 { doubley; y=x-sin〔x〕-cos〔x〕; returny; } voidmain〔〕 { doubleb[20]; inti,k; doublemax; for〔i=0;i<20;i++〕 { b[i]=fun〔i+1〕; } max=b[0]; for〔i=1;i<20;i++〕 if〔b[i]>max〕 { max=b[i]; k=i; } printf〔"当x=%d;f〔x〕最大值为%f\n",k+1,max〕; } 4、编写函数fun,通过指针实现将一个字符串反向。 要求主函数输入字符串,通过调用函数fun实现输入字符串反向。 〔20分〕 #include"stdio.h" #include voidfun〔char*p,intn,char*q〕 { inti; for〔i=n-1;i>=0;i--〕 q[n-1-i]=p[i]; } voidmain〔〕 { char*p,a[20]; intstr; printf〔"请输入一个字符串: \n"〕; gets〔a〕; str=strlen〔a〕; fun〔a,str,p〕; printf〔"处理后的字符串\n"〕; puts〔p〕; } 5、学生三门课程根本信息如下。 请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。 〔20分〕 姓名数学英语计算机 Mary9310088 Jone829090 Peter917671 Rose1008092 #include"stdio.h" structstudent { charname[20]; intmaths; intEnglish; intcomputer; intaverage; }temp,stu[4]={{"Mary",93,100,88,0}, {"Jone",82,90,90,0}, {"Peter",91,76,71,0}, {"Rose",100,80,92,0}}; voidmain〔〕 { inti,j; printf〔"Beforetracking: \n"〕; printf〔"namemathsEnglishcomputer\n"〕; for〔i=0;i<4;i++〕 printf〔"%s%d%d%d\n",stu[i].name,stu[i].maths,stu[i].English,stu[i].computer〕; for〔i=0;i<4;i++〕 stu[i].average=〔stu[i].maths+stu[i].English+stu[i].computer〕/3; for〔i=0;i<3;i++〕 for〔j=i+1;j<4;j++〕 if〔stu[j].average>stu[i].average〕 { strcpy〔temp.name,stu[j].name〕; temp.maths=stu[j].maths; temp.English=stu[j].English; puter=stu[j].computer; temp.average=stu[j].average; strcpy〔stu[j].name,stu[i].name〕; stu[j].maths=stu[i].maths; stu[j].English=stu[i].English; stu[j].computer=stu[i].computer; stu[j].average=stu[i].average; strcpy〔stu[i].name,temp.name〕; stu[i].maths=temp.maths; stu[i].English=temp.English; stu[i].computer=puter; stu[i].average=temp.average; } printf〔"Aftertracking: \n"〕; printf〔"namemathsEnglishcomputeraverage\n"〕; for〔i=0;i<4;i++〕 printf〔"%s%d%d%d%d\n",stu[i].name,stu[i].maths,stu[i].English,stu[i].computer,stu[i].average〕; } 6、附加题: 编程实现输入一串英文,统计其中各单词出现的个数〔不区分大小写字母〕,以“000〞作为字符串输入结束标志,例如: Twinkletwinklelittlestar000〔回车〕 twinklelittlestar 211〔50分〕 #include"stdio.h" #include voidmain〔〕 { chartemp[20][20]={0},s[100]={0}; intb[20]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; unsignedinti,j=0,k=0,count=0; printf〔"Enterastring: "〕; for〔i=0;;i++〕 { scanf〔"%c",&s[i]〕; if〔s[i]=='0'〕 count++; else count=0; if〔count>=3〕 break; } //printf〔"读入的数据: \n"〕; //puts〔strlwr〔s〕〕; for〔i=0;i { if〔s[i]! =''〕 temp[j][k++]=s[i]; else { j++; k=0; } } //printf〔"处理后的单词: \n"〕; /*for〔i=0;i { puts〔temp[i]〕; }*/ for〔i=0;i { for〔k=i+1;k if〔strcmp〔temp[i],temp[k]〕==0〕 { b[i]++; memset〔temp[k],0,20〕; } } for〔i=0;i { if〔temp[i][0]==0〕 continue; printf〔"%s%d\n",temp[i],b[i]〕; } } 第六届全国信息技术应用水平大赛复赛试题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 全国 ITAT 教育 工程 就业 技能 大赛 语言 复赛