【计算机类职业资格】初级程序员下午试题-107及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-107及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-107及答案解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-107 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)流程图说明下列流程图用泰勒(Taylor)展开式sinx=x-x3/3!+x5/5!-x7/7!+(-1)n*x2n+1/(2n+1)!+计算并打印 sinx的近似值。其中用 (0)表示误差要求。流程图(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_二、试题二(总题数:1,分数:15.00)说明函数 void convert(char *a,int n)是用递归方法将一个正整数 n按逆序存放到一个字符数组 a中,例如 n=123,在
2、 a中的存放为3、2、1。函数 2.1void convert(char *a,int n)int i;if(i=n/10)! =0) convert( (1) ,i);*a= (2) ;函数 2.2说明函数 int index(char *s,char *t)检查字符串 s中是否包含字符串 t,若包含,则返回 t在 s中的开始位置(下标值),否则返回-1。函数 2.2int index(char *s, char *t)int i,j=0;k=0;for(i=0; si!=/0;i+)for ( (3) ;(tk!=/0)(sj!=/0) ( (4) );j+,k+);if( (5) ) r
3、eturn (i);return (-1);(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_三、试题三(总题数:1,分数:15.00)函数说明 3.1假设以带头结点的单循环链表作非递减有序线性表的存储结构。函数 deleteklist(LinkList head)的功能是删除表中所有数值相同的多余元素,并释放结点空间。函数 3.1Void deleteklist (LinkList head)LinkNode *p,*q;p=head-next;while (p!=head)q=p-next;while( (1) )(2) ;free(q);q=p-n
4、ext; p=p-next;函数说明 3.2已知一棵完全二叉树存放于一个一维数组 Tn中,Tn中存放的是各结点的值。下面的程序的功能是:从 T0开始顺序读出各结点的值,建立该二叉树的二叉链表表示。函数 3.2#includeistream.htypedef struct node int data;stuct node leftChild,rightchild;BintreeNode; typedef BintreeNode *BinaryTree;void ConstrucTree(int T , int n, int i, BintreeNode *ptr)if(i=n) (3) ; /*
5、置根指针为空*/elseptr=(BTNode*) malloc(sizeof(BTNode)ptr-data=Ti; ConstrucTree (T,n, 2*i+1, (4) );ConstrucTree (T,n, (5) ,ptr-rightchild);main(void)/*根据顺序存储结构建立二叉链表*/Binarytree bitree; int n;printf(“please enter the number of node: /n%s“; n);int *A=(int*)malloc (n*sizeof (int) ;for (int i=0; in; i+) scanf
6、(“%d“ ,A+i); /*从键盘输入结点值*/for (int i=0; in; i+) printf(“%d“,Ai);ConstructTree (A,n, 0,bitree);(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_四、试题四(总题数:1,分数:15.00)说明从文件 in.dat中读取一篇英文文章存入到字符串数组 xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 xx中,最后把结果 xx输出到文件 OUT6.DAT中。原始数据文件存放的格式是:每行的宽度
7、均小于 80个字符,含标点符号和空格。函数#includestring.h#includeconio .h#includectype.h#includestdio.hchar xx5080;int maxline = 0 ; /*文章的总行数*/int ReadDat (void) ;void WriteDat (void) ;void StrOL(void)char *p1,*p2,t 80;int i;for (i=0; imaxline; i+)p1=xxi;t0=0;while (*p1) p1+;while (p1=xx i)while (! isalpha (*p1) p1 ! =
8、xx i) p1-;p2 =p1;while( (1) )p1-;if (p1=xx i)if (isalpha (*p1) p1-;else if (! isalpha (* (p1+1;) break;p2+;(2) ;strcat (t,p1+1) ;strcat (t, “ “) ;strcpy (xx i ,t) ;void mainif( (3) )printf (“数据文件 in.dat不能打开! /n/007“) ;return;StrOL ();writeDat ();getch;int ReadDat (void)FILE *fp;int i=0;char *p;if (f
9、p=fopen (“e:/a/in.dat “ , “r“) =NULL) return 1;while (fgets (xx i , 80, fp) ! =NULL) p=strchr (xx i , /n) ;if(p)*p=0i+ ;maxline= (4) ;fclose (fp);return 0; void WriteDat (void)FILE *fp;int i; fp=fopen(“e: /a/out6 .dat“ ,“w“);for (i=0; i( (5) ) ; i+)printf(“%s/n“ ,xx i);fprintf (fp, “%s/n“, xxi);fclo
10、se(fp); (分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_五、试题五(总题数:1,分数:15.00)说明设计一个日期类 Date,包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。在 Date类中设计如下重载运算符函数。Date operator+(int days):返回某日期加上天数得到的日期。Date operator-(int days):返回某日期减去天数得到的日期。int operator-(Date b):返回两日期相差的天数。C+程序#includeiostream. hi
11、nt day_tab212=31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,31, 29, 31,30, 31, 30, 31, 31,30,31,30,31;/day_tab二维数组存放各月天数,第一行对应非闰年,第二行对应闰年class Dateint year,month,day;/年,月,日int leap (int); /判断是否为闰年int dton (Date); Date ntod (int);Public:Date()Date(int y,int mint d)year=y;month=m;day=d;void setday (i
12、ntd) day=d;void setmonth (int m)month=m;void setyear(int y)year=y;int getday()return day;int getmonth()return month;int getyear() return year;Date operator+(int days) /+运算符重载函数static Date date;int number= (1) ;date=ntod (number); return date;Date operator-(int days) /-运算符重载函数statis Date date;int num
13、ber= (2) ; number-=days;date=ntod (number);return date;int operator-(Date b) /-运算符重载函数int days= (3) ;return days;void disp()coutyear“.“month“,“dayendl; int Date:leap (int year)if( (4) ) /是闰年return 1; /不是闰年elsereturn 0;int Date:dton (Date d) /求从公元 0年 0月 0日到 d日期的天数int y,m,days=0;for (y=1;y=d.year;y+)i
14、f( (5) )days+=366; /闰年时加 366天else days+=365; /非闰年时加 365天for (m=0;md.mont.h-1;m+)if (leap (d.year)days+=day_tab 1 m;elsedays+=day_tab 0m;days+=d.day;return days;Date Date:ntod (int n) /将从公元 0年 0月 0日的天数转换成日期int y=1,m=1,d,rest=n,1p;while (1)if (leap (y)if (rest-366)break;else rest-=366;else /非闰年if (res
15、t=365)break;else rest-=365;y+; y-;1p=leap (y); while (1)if (1p) /闰年if (restday_tab 1m-1)rest-=day_tab 1 m-1; else break;else /非闰年if(restday_tab0 m-1)rest-=day_tab0m-1;else break;m+:d=rest;return Date (y; m, d); void main()Date now(2003, 10,1),then (2005,6,5);cout“now:“; now. disp();cout“then:“; then
16、 .disp();cout“相差天数:“(then-now)endl;Date d1=now+1000,d2=now-1000;cout“now+1000:“; d1. disp();cout“now-1000:“; d2. disp();(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_六、试题六(总题数:1,分数:15.00)说明下面程序是为汽车市场编制的一个程序的一部分。其中 automobile是基类。Java程序class MainJavapublic static void main (String agrcar sedan=new car;
17、 sedan.initialize (24, 20.0, 4);System.out.println(“The sedan can travel“+ (1) +“miles./n“); System.out .println(“The sedan has“+ (2) +“doors./n“); class automobileprotected int miles_per_gallon; /汽车每加仑行驶公里数(3) double fuel_capacity; /油箱容积public void initialize (int in_mpg, int in_fuel)miles_per_gall
18、on=in_mpg;fuel_capacity=in_fuel;public int get_mpg() /提供一辆特定汽车每加仑公里数return miles_per_gallon;public double get_fuel() /提供油箱容积return fuel_capacity;public double travel_distance() /计算满油箱情况下的可行驶总公里数return (4) ; class car (5) private int Total_doors;public void initialize(int in_mpg, double in_fuel, int
19、doors)Total_doors=doors;miles_per_gallon=in_mpg;fuel_capacity=in_fuel;public int doors()return Total_doors;(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_初级程序员下午试题-107 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)流程图说明下列流程图用泰勒(Taylor)展开式sinx=x-x3/3!+x5/5!-x7/7!+(-1)n*x2n+1/(2n+1)!+计算并打印 sinx的近似值。其中用
20、(0)表示误差要求。流程图(分数:15.00)填空项 1:_ (正确答案:x*x)解析:填空项 1:_ (正确答案:x-t)解析:填空项 1:_ (正确答案:|t|:)解析:填空项 1:_ (正确答案:s+2s)解析:填空项 1:_ (正确答案:(-1)*t*x2/(s*(s-1))解析:解析 本题的关键是搞清楚几个变量的含义。很显然变量 t是用来保存多项各项的值的,变量 s和变量 x2的作用是什么呢?从流程图的功能上看,需要计算 1!、3!、5!,又从变量 s的初值置为 1可知,变量 s主要用来计算这些数的阶乘,但没有其他变量用于整数自增的,这样就可以判断 s是用来存储这些奇数的,即 s值依
21、次为 1、3、5,。但 X2的功能还不明确,现在可以不用管它。空(2)的作用是给 t赋初值,即给它多项式的第一项,因此应填写“xt”。空(3)处需填写循环条件,显然当 t的绝对值小于 (0)时就表示已经达到误差要求,因此空(3)应填入“|t|;”。由变量 s的功能可知,空(4)应当实现变量 s的增加,因此空(4)应填入“s+2s”。空(5)应当是求多项式下一项的值,根据多项式连续两项的关系可知,当前一项为 t时,后一项的值为(-1)*t*x*x/(s*(s-1)。但这样的话,每次循环都需要计算一次 x*x,计算效率受到影响,联想到变量 x2还没用,这时就可以判断 x2就是用来存储 x*x的值,
22、使得每次循环者少进行一次乘法运算。因此空(1)处应填入“x*x”,空(5)处应填入“(-1)*t*x2/(s*(s-1)”。二、试题二(总题数:1,分数:15.00)说明函数 void convert(char *a,int n)是用递归方法将一个正整数 n按逆序存放到一个字符数组 a中,例如 n=123,在 a中的存放为3、2、1。函数 2.1void convert(char *a,int n)int i;if(i=n/10)! =0) convert( (1) ,i);*a= (2) ;函数 2.2说明函数 int index(char *s,char *t)检查字符串 s中是否包含字符
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 107 答案 解析 DOC
