六届全国ITAT教育工程就业技能大赛c语言复赛试题.doc_第1页
六届全国ITAT教育工程就业技能大赛c语言复赛试题.doc_第2页
六届全国ITAT教育工程就业技能大赛c语言复赛试题.doc_第3页
六届全国ITAT教育工程就业技能大赛c语言复赛试题.doc_第4页
六届全国ITAT教育工程就业技能大赛c语言复赛试题.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(A卷) 1、编写一个程序,让它有以下功能:从键盘上输入一个五位数,对此整数中的五个数值进行从大到小排序,形成一个新的五位数,输出这个整数。(15分)#include stdio.hint fun(int n)int num=0,t;int a5,i,j;for(i=0;i5;i+) ai=n%10; n/=10; for(i=0;i4;i+) for(j=i+1;jai) t=ai; aj=ai; ai=t; for(i=0;i5;i+) num=ai+num*10; return num;void main() int a,b; scanf(%d,&a) ; b=fun(a); printf(%dn,b);2、输入年、月、日,输出该日期是该年的第几天。(25分)#include stdio.hint choice(int year)int flag=0;if(year%400=0)|(year%100!=0&year%4=0) flag=1;return flag;int yue(int moonth,int flag)int yue;switch(moonth)case 1: case 3: case 5:case 7: case 8: case 10: case 12: yue=31; break;case 2: switch(flag)case 0: yue=28; break;case 1: yue=29; break;break;case 4: case 6: case 9:case 11: yue=30; break;return yue;void main()int num=0,flag,i;int year,moonth,data;printf(Please input a data: like 1991,6,6n);scanf(%d,%d,%d,&year,&moonth,&data);flag=choice(year);for(i=1;imoonth;i+) num+=yue(i,flag); num+=data;printf(%dn,num);3、利用数组实现数据的存储。将学生的学号和成绩存储在数组中,利用循环计算出数组中存储学生的平均成绩,找出高于平均分的学生信息并输出。(20分)#include stdio.hvoid main() int stdnum100; int stdgrade100; int i,num; int avg=0; printf(Please input the class student numbern); scanf(%d,&num); printf(Please input students number and grade!n); for(i=0;inum;i+) scanf(%d,%d,&stdnumi,&stdgradei); avg=stdgradei+avg; avg=avg/num; printf(%dn,avg); for(i=0;iavg) printf(%d,%dn,stdnumi,stdgradei); 4、输入五个国家的名字,按字母顺序(即按ASCII码从小到大的顺序)排列输出。(20分)/* Note:Your choice is C IDE */#include#includevoid sort(char name520,int n)char temp20;int i,j;for(i=0;in-1;i+)for(j=i+1;j0) /temp=namei; /namei=namej; /namej=temp; strcpy(temp,namei); strcpy(namei,namej); strcpy(namej,temp); void print(char name520,int n)int i;for(i=0;in;i+) printf(%sn,namei);void main()char p520;/=Follow me,BASIC,Great Wall,FORTRAN,Computer design;int i, n=5;printf(Please input five countrys namesn);for(i=0;i5;i+)gets(pi);/scanf(%s,%s,%s,%s,%s,p0,p1,p2,p3,p4);sort(p,5);print(p,5);5、 用指针实现:任意输入20个数,将它们按照从大到小的顺序输出。(20分)#include stdio.hvoid main() int *p,a20; int i,j,temp; printf(Please input 20 inter number!n); for(i=0;i20;i+) scanf(%d,&ai); p=a; for(i=0;i19;i+) for(j=i+1;j20;j+) if(pipj) temp=pi; pi=pj; pj=temp; for(i=0;i20;i+) printf(%dn,*(p+);附加题6、编写一个简单的通讯录管理系统。通讯录包括:姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。(50分)(提示:可能用到以下库函数:malloc(),功能:分配size字节的存储区,用法:(类型 *)malloc(size *sizeof(你要定义的类型);包含于库中feof(),功能:检测文件是否结束用法: int feof(fp) FILE *fp;包含于库中。)/*6、编写一个简单的通讯录管理系统。通讯录包括:姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。(50分)(提示:可能用到以下库函数:malloc(),功能:分配size字节的存储区,用法:(类型 *)malloc(size *sizeof(你要定义的类型);包含于库中feof(),功能:检测文件是否结束用法: int feof(fp) FILE *fp;包含于库中。)*/* Note:Your choice is C IDE */#include stdio.h#include#includetypedef struct char name20;char adress30;char code10;char phonenumber15;STD;void init()printf( 欢迎光临通讯录管理系统n);printf(输入请选择:1n);printf(显示请选择:2n);printf(查找请选择:3n);printf(退出请选择:0n);printf(请输入您的选择: );void stop()exit(0);void input()STD temp;FILE *fp;if(fp=fopen(F:storyfrom.txt,a)=NULL)printf(打开文件出现错误!n);return;printf(请输入姓名:);scanf(%s,);printf(请输入通讯地址:);scanf(%s,temp.adress);printf(请输入邮编:);scanf(%s,temp.code);printf(请输入联系电话:);scanf(%s,temp.phonenumber);printf(输入记录为:);printf(%s %s %s %s n,,temp.adress,temp.code,temp.phonenumber);fprintf(fp,%s %s %s %s n,,temp.adress,temp.code,temp.phonenumber);fclose(fp);void display()STD temp;FILE *fp;/int c;if(fp=fopen(F:storyfrom.txt,r)=NULL)printf(打开文件出现错误!n);return;printf( 姓名 通讯地址 邮编 联系电话n);fscanf(fp,%s%s%s%s,,temp.adress,temp.code,temp.phonenumber);while(!feof(fp)printf(%10s%10s%10s%20s n,,temp.adress,temp.code,temp.phonenumber);fscanf(fp,%s%s%s%s,,temp.adress,temp.code,temp.phonenumber);fclose(fp);void find()char ch20;STD temp;FILE *fp;printf(请输入查找人的姓名:);scanf(%s,ch);if(fp=fopen(F:storyfrom.txt,r)=NULL)printf(打开文件出现错误!n);return;while(1)fscanf(fp,%s%s%s%s,,temp.adress,temp.code,temp.phonenumber);strlwr();strlwr(ch);if(strcmp(,ch)=0)printf(您找的人的信息如下: n);printf(%s %s %s %sn,,temp.adress,temp.code,temp.phonenumber);break;if(feof(fp)printf(对不起,没有找到您需要的资料!n);break;fclose(fp);void main()int choice;while(1)init();scanf(%d,&choice);/printf(%dn,choice);switch(choice)case 0: stop(); break;case 1: input(); break;case 2: display(); break;case 3: find(); break;default: printf(输入错误,请您重新选择n); break;第五届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(A卷) 1、 编程解决如下数学问题:有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?要求以如下格式打印出分水步骤。(20分) a12 b8 c5 12 0 0 * * * ( “*”表示当前状态下每个容器的盛水量) 0 6 6#include stdio.hvoid main() printf(a12 b8 c5n); printf(12 0 0n); printf(4 8 0n); printf(4 3 5n); printf(9 3 0n); printf(9 0 3n); printf(1 8 3n); printf(1 6 5n); printf(6 6 0n);2、 编程实现:有二维数组a33=5.4,3.2,8,6,4,3.3,7,3,1.3,将数组a的每一行元素均除以该行上的主对角元素(第1行同除以a00,第2行同除以a11,.),按行输出新数组。(20分)#include stdio.hvoid main() double a33=5.4,3.2,8,6,4,3.3,7,3,1.3; int i,j; double temp; printf(变换前的矩阵:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%2.1f ,aij); printf(n); printf(变换后的矩阵:n); for(i=0;i3;i+) temp=aii; for(j=0;j3;j+) aij/=temp; printf(%2.1f ,aij); printf(n); 3、 编程:设x取值为区间1,20的整数,求函数f(x)=x-sin(x)- cos(x)的最大值,要求使用自定义函数实现f(x)功能。(20分)#include stdio.h#includedouble fun(int x)double y;y=x-sin(x)-cos(x);return y;void main() double b20; int i,k; double max; for(i=0;i20;i+) bi=fun(i+1); max=b0; for(i=1;imax) max=bi; k=i; printf(当x=%d;f(x)最大值为%fn,k+1,max);4、 编写函数fun,通过指针实现将一个字符串反向。要求主函数输入字符串,通过调用函数fun实现输入字符串反向。(20分)#include stdio.h#includevoid fun(char *p,int n,char *q)int i;for(i=n-1;i=0;i-) qn-1-i=pi;void main()char *p,a20;int str;printf(请输入一个字符串:n);gets(a);str=strlen(a);fun(a,str,p);printf(处理后的字符串n);puts(p);5、 已知学生三门课程基本信息如下。请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。(20分) 姓名 数学 英语 计算机 Mary 93 100 88 Jone 82 90 90 Peter 91 76 71 Rose 100 80 92#include stdio.hstruct studentchar name20;int maths;int English;int computer;int average; temp,stu4=Mary,93,100,88,0,Jone,82,90,90,0,Peter,91,76,71,0,Rose,100,80,92,0;void main() int i,j; printf(Before tracking:n); printf(name maths English computern); for(i=0;i4;i+) printf(%s %d %d %dn,,stui.maths,stui.English,puter); for(i=0;i4;i+) stui.average=(stui.maths+stui.English+puter)/3; for(i=0;i3;i+) for(j=i+1;jstui.average) strcpy(,); temp.maths=stuj.maths; temp.English=stuj.English; puter=puter; temp.average=stuj.average; strcpy(,); stuj.maths=stui.maths; stuj.English=stui.English; puter=puter; stuj.average=stui.average; strcpy(,); stui.maths=temp.maths; stui.English=temp.English; puter=puter; stui.average=temp.average; printf(After tracking:n); printf(name maths English computer averagen); for(i=0;i4;i+) printf(%s %d %d %d %dn,,stui.maths,stui.English,puter,stui.average);6、 附加题:编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母),以“000”作为字符串输入结束标志,例如: Twinkle twinkle little star 000(回车) twinkle little star 2 1 1 (50分) #include stdio.h#include void main()char temp2020=0,s100=0;int b20=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;unsigned int i,j=0,k=0,count=0;printf(Enter a string: );for(i=0;i+)scanf(%c,&si);if(si=0)count+;else count=0;if(count=3)break;/printf(读入的数据:n);/puts(strlwr(s);for(i=0;istrlen(s)-4;i+)if(si!= )tempjk+=si;elsej+;k=0;/printf(处理后的单词:n);/*for(i=0;ij+1;i+)puts(tempi);*/for(i=0;ij;i+)for(k=i+1;kj+1;k+)if(strcmp(tempi,tempk)=0)bi+;memset(tempk,0,20);for(i=0;ij+1;i+)if(tempi0=0)continue;printf(%s %dn,tempi,bi);第六届全国信息技术应用水平大赛复赛试题C语言程序设计(A卷) 1. 编程解决如下问题(50分)。有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。#include stdio.hint fun(int shi,int ge)int num;num=shi*10+ge;return num;void main() int i,j,k,l; for(i=1;i10;i+) for(j=1;j10;j+) for(k=1;k10;k+) for(l=1;l10;l+) if(fun(i,j)*fun(k,l)=fun(j,i)*fun(l,k) printf(%d*%d=%d*%dn,fun(i,j),fun(k,l),fun(j,i),fun(l,k);2. 编程解决如下问题(50分)。请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。要求如下:(1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果;(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。(提示:整数n可以以字符数组的方式定义、赋值和处理)#include#includevoid main()char *a=742683613984;char temp8,temp18,temp28;char min,str;int j,k=0,num=0;str=strlen(a);min=a0;for(j=1;jstr-3;j+) if(ajmin) min=aj; k=j; strcpy(temp,a+k+1); printf(第%d次删去的数:n,1); for(j=0;jk;j+) printf(%c,aj); printf(n); /a=temp; num=min-48+num*10; /puts(temp); str=strlen(temp);min=temp0;k=0;for(j=1;jstr-2;j+) if(ajmin) min=tempj; k=j; / printf(%dn,str); strcpy(temp1,temp+k+1); / puts(temp1); / printf(第%d次删去的数:n,2); for(j=0;jk;j+) printf(%c,tempj); printf(n); /a=temp; num=min-48+num*10; str=strlen(temp1);min=temp10;k=0;for(j=1;jstr-1;j+) if(temp1jmin) min=temp1j; k=j; strcpy(temp2,temp1+k+1); printf(第%d次删去的数:n,2); for(j=0;jk;j+) printf(%c,temp1j); printf(n); /a=temp; num=min-48+num*10; str=strlen(temp2);min=temp20;k=0;for(j=1;jstr;j+) if(temp2jmin) min=temp2j; k=j; / strcpy(temp3,temp2+k+1); /printf(第%d次删去的数:n,4); for(j=0;jk;j+) printf(%c,temp2j); printf(n); /a=temp; num=min-48+num*10;printf(结果为:%dn,num);3. 附加题:编程解决如下问题(50分)。(1)已知平面上三个点:(7,1)、(4,6)、(5,8),判断这三点组成的三角形是何种三角形(锐角,直角,钝角)(10分);#include#includeint fun(int cx,int cy)int num;num=cx*cx+cy*cy;return num;void main()int ax=7,ay=1;int bx=4,by=6;int cx=5,cy=8;int i,j;int ab3,temp;double num;ab0=fun(ax-bx,ay-by);ab1=fun(ax-cx,ay-cy);ab2=fun(bx-cx,by-cy);for(i=0;i2;i+) for(j=i+1;j3;j+) if(abiab0) printf(这个三角形是锐角三角形!n);if(ab1+ab2=ab0) printf(这个三角形是直角三角形!n);if(ab1+ab2ab0) printf(这个三角形是钝角三角形!n);num=sqrt(ab1*ab0/ab3);printf(%8.4fn,num); (2) 对(1)问中的三角形,给出它的外接圆半径(20分);(3) 已知平面上6个点的坐标为:(7,1)、(4,6)、(5,8)、(6,2)、(3,9)、(2,7),试求覆盖这6个点的覆盖圆最小半径(20分)。(要求:点坐标数据在程序初始化中赋值完成,程序运行后直接输出结果,不进行数据输入;点坐标数据和题目要求完全一致,否则导致的结果不正确视为程序编写错误。)第六届全国信息技术应用水平大赛复赛试题C语言程序设计(B卷) 编程解决如下问题(50分)。有一个数学等式:ABCD*E= DCBA,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。#include stdio.hint fun(int a,int b,int c,int d)/千 百 十 个int num;num=a*1000+b*100+c*10+d;return num;void main() int i,j,k,l,m; int shu; for(i=1;i10;i+) for(j=0;j10;j+) for(k=0;k10;k+) for(l=1;l10;l+) for(m=1;m10;m+) if(fun(i,j,k,l)*m=fun(l,k,j,i) printf(%d*%d=%dn,fun(i,j,k,l),m,fun(l,k,j,i);2. 编程解决如下问题(50分)。请在整数n=92081346718538中删除10个数字,使得余下的数字按原次序组成的新数最大。要求如下:(1)整数n和删除数字的个数“10”在源程序中完成赋值,程序直接输出运行结果;(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最大数。(提示:整数n可以以字符数组的方式定义、赋值和处理)#include#includevoid main()char *a=92081346718538;char temp014,temp114,temp214,temp314;char max;int num=0,i,str,k;str=strlen(a);max=a0;k=0;for(i=1;imax)max=ai;k=i;strcpy(temp0,a+k+1);/puts(temp0);/printf(%dn,k);printf(删去的数字:);for(i=0;ik;i+) printf(%c,ai);num=max-48+num*10;str=strlen(temp0);max=temp00;k=0;for(i=1;imax)max=temp0i;k=i;strcpy(temp1,temp0+k+1);/puts(temp1);/printf(%dn,k);for(i=0;ik;i+) printf(%c,temp0i);num=max-48+num*10;str=strlen(temp1);max=temp10;k=0;for(i=1;imax)max=temp1i;k=i;strcpy(temp2,temp1+k+1);/puts(temp2);/printf(%dn,k);for(i=0;ik;i+) printf(%c,temp1i);num=max-48+num*10;str=strlen(temp2);max=temp20;k=0;for(i=1;imax)max=temp2i;k=i;strcpy(temp3,temp2+k+1);/puts(temp3);/printf(%dn,k);for(i=0;ik;i+) printf(%c,temp2i);num=max-48+num*10;printf(n最大的数为:%d,num);3. 附加题:编程解决如下问题(50分)。在小于10的素数中有3、5、7组成的等差数列,在小于30的素数中有11、17、23、29组成的等差数列。试找出区间100,1000内的素数构成的最大等差数列(即等差数列包含的素数个数最多)并打印输出。#include#includevoid main()int i,j,k=0,flag=1;int count=0;int a150;for(i=100;i1001;i+)for(j=2;ji/2+1;j+)if(i%j=0)flag=0;if(flag=1)printf(%dn,i);ak+=i;count+;flag=1;printf(%dn,count);第五届全国ITAT教育工程就业技能大赛复赛试题C语言程序设计(B卷) 1、 编程解决如下问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡, 问鸡翁,鸡母,鸡雏各几何?(20分)#include stdio.h/#includevoid main()int i,j,k;/i 小鸡 j 母鸡 k 公鸡int num=0;for(i=3;i=99;)for(j=0;j=100-i;j+)k=100-i-j;if(k*5+3*j+i/3=100) printf(第%d情况:n,+num); printf(小鸡:%dn,i); printf(母鸡:%dn,j); printf(公鸡:%dn,k); i=i+3;2、 编程实现:有二维数组a33=1.3,2.7,3.6,2,3,4.7,3,4,1.27,将数组a的每一行元素均除以该行上绝对值最大的元素,按行输出新数组。(20分)#include stdio.h#include /#includevoid main()double a33=1.3,2.7,3.6,2,3,4.7,3,4,1.27;int i,j;double max3;printf(处理前的矩阵:n); for(i=0;i3;i+) for(j=0;j3;j+) /aij/=maxi; printf(%3.2f ,aij); printf(n); for(i=0;i3;i+) maxi=fabs(ai0); for(j=1;jmaxi) maxi=fabs(aij); printf(处理后的矩阵:n); for(i=0;i3;i+) for(j=0;j3;j+) aij/=maxi; printf(%3.2f ,aij); printf(n); 3、 编程:设x、y取值为区间1,10的整数, f(x,y)=(3x-2y)/(x+y),求使f(x,y)取最小值的x1、y1,要求使用自定义函数实现f(x,y)功能。(20分)#include stdio.h#include /#includedouble fun(int x,int y)double z;z=1.0*(3*x-2*y)/(x+y);return z;void main() int i,j,x,y; double min; double f1010; for(i=0;i10;i+) for(j=0;j10;j+) fi-1j-1=fun(i+1,j+1); min=f00; for(i=0;i10;i+) for(j=0;j10;j+) if(fijmin) min=fij; x=i+1; y=j+1; printf(%dn%dn%fn,i,j,min);4、 编写函数fun,其功能是:在字符串中所有数字字符前加一个“*”字符,要求通过指针实现。(20分)#include stdio.h#includevoid fun(char *a,char *p)int i,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论