收藏本站 
网站首页 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
[水平考试]初级程序员级试题二
[ 作者:佚名    转贴自:网络转载    阅读次数:124    更新时间:2006-4-7 11:38:00   录入:刘光勇 ]         
    

请按下述要求正确填写答卷,若不按下述要求解答,将不分数

1.在答卷的指定位置填写你所在的省、自治区、直辖市、计划单列市的名称。

2.在答卷的指定位置填写准考证编号、出生年月日和姓名。

3.答卷上除填写上述内容外只能写解答。

4.本试卷的4道试题都是必答题,请全部解答。

5.解答时字迹务必清楚,字迹不清时,将不评分。

6.仿照下面例题,将解答写在答卷的对应栏内。

例题

一九九九年度举行的计算机软件专业技术资格和水平考试的日期是2000年(1)月(2)日。

因为正确的答案是4月16日,故在答卷的对应栏内写上‘4’和‘16’。

试题一

阅读以下C代码,将应填入(n)处的字句写在答卷的对应栏内。

【程序1.1】

#include <stdio.h>

main()

{struct num{int x;int y;

}sa[] ={{2,32},{8,16},{4,48};

struct num *p =sa+1;

int x;

x =p->y /sa[0].x *++p->x;

printf(″x =%d p->x =%d\n″,x,p->x);

}

程序1.1的输出结果是(1)。

【程序1.2】

#include <stdio.h>

int p(int k,int a[])

{int m,i,c =0;

for(m =2;i <=m;i++)

for(i =2;i <=m;i++)

if (!(m %i))break;

if (i ==m)a[c++] =m;

}

return c;

}

#define MAXN 20

main()

{int i,m,s[MAXN];

m =p(13,s);

for(i =0;i <m;i++)

printf(″%4d\t″,s[i]);

printf(″\n″);

}

程序1.2的输出结果是(2);函数int p(int k,int a[])的功能是(3)。

【程序1.3】

#include <stdio.h>

void s(int a[],int n)

{int i,j,t;

for(i =0;i <n;i++){

for(t =a[i],j =i-1;j >=0&&t <a[j];j--)

a[j+1] =t;

}

}

main()

{int i,c[] ={15,3,8,9,6,2};

s(c,6);

for(i =0;i <6;i++)

printf(″%4d\t″,c[i]);

printf(″\n″);

}

程序1.3的输出结果是(4);函数s(int a[],int n)的功能是(5)。

试题二

阅读下列程序说明和C代码,将应填入(n)处的字句写在答卷的对应栏内。

【程序2.1说明】

程序2.1求以下级数和的近似值,约定求和的精度为0.000001。

x3x5x7

s(x)=x –+-+……

3*1!5*2!7*3!

【程序2.1】

#include <stdio.h>

#include <math.h>

#define Epsilon 0.000001

main()

{int i;double s,x,t;

printf(″Enter x.\n″);scanf(″%1f″,&x);

s =0.0;t =x;i =0;

while (fabs(t)>=Epsilon){

s =(1);i++;

t =-t *x *x *(2)/((2*i +1)*i);

}

printf(″s(%f)=%f\n″,x,s);

}

【程序2.2说明】

本程序中有函数rep(char *s,char *sl,char *s2),其形参字符串sl和s2有相同的字符个数,且sl中各字符互不相同。该函数实现将已知字符串s中所有在字符串sl中也出现的字符都用字符串s2 中的对应位置的字符代替。例如:设字符串s、sl和s2分别为:

s[ ] =″ABCABC″,sl[ ] =″AC″,s2[ ] =″ZX″

则s2中的字符Z和X分别对应sl中的字符A和C,函数调用rep(s,sl,s2)将字符串s的内容变为″ZBXZBX″。

【程序2.2】

#include <stdio.h>

void rep(char *s,char *sl,char *s2)

{char *p;

for(;s;s++){/*顺序考察s中的各个字符*/

for(;s;s++;p &&(3);p++);/*找*s是否在sl中出现*/

if ((4))s =*(s2+(5));/*找到,用s2中的对应字符替代*/

}

}

main()

{char s[] =″ABCABC″;

rep(s,″AC″,″ZX″);printf(″%s\n″,s);

}

试题三

阅读下列程序说明和C,将应填入(n)处的字句写在答卷的对应栏内。

【程序3说明】

本程序从键盘读入整数,并按从大到小的顺序输出输入整数中互不相等的那些整数。

程序一边读入整数,一边构造一个从大到小顺序链接的链表,直至不能从键盘读入整数,然后顺序输出链表上各表元的整数值。主函数每读入一个整数,就调用函数insert(),函数insert()将还未出现在链表上的整数按从大到小的顺序插入到链表中。

为了插入方便,链表在表首有一个辅助表元。

【程序3】

#include <stdio.h>

#include <malloc.h>

typedef struct node {int val;

struct node *next;

}NODE;

void insert(NODE *list,int x)

{NODE *u,*v,*p;

u =list;v =u->next;

while ((1)&&x <v->val)/*寻找插入位置*/

{u =v;v =v->next;}

if (v ==NULL ||(2)){/*判是否要插入新表元*/

p =(NODE *)malloc(sizeof(NODE));P->val =x;/*生成新表元*/

(3)=v;(4)=p;/*插入新表元*/

}

}

main()

{int x;

NODE *head,*p;

/*首先建立只有辅助表元的空链表*/

head =(NODE *)malloc(sizeof(NODE));

(5)=NULL;

printf(″Enter integers:\n″);

while (scanf(″%d″,&x)==1)/*反复读入整数插入链表*/

insert(head,x);

for(p =head->next;p !=NULL;p=p->next)

printf(″%d\t″,p->val);

printf(″\n\n″);

}

试题四

阅读下列程序说明和C代码,将应填入(n)处的字句写在答卷的对应栏内。

【程序4说明】

本程序对给定的n(n≤100),计算并输出k!(k =1,2,…,n)的全部有效数字,因k!的值可能很大,故采用一维数组存储计算结果。设数组的每个元素存储k!的一位数字,并约定从低位到高位依次存于数组的第一个位置、第二个位置、……。例如,5!=120,在数组a中的存储形式为:

a[2] a[1] a[0]

程序中,计算k!采用对已求得的(k-1)!的结果连续累加k-1次后求出。例如,4!=24,则计算5!对原来的24再累加4次24后得到120。为了控制累加的位数,另引入整型变量c用于记录当前(k-1)!的位数。

【程序4】

#include <stdio.h>

#define MAXN 1000

int a[MAXN],b[MAXN];

void pnext(int k,int *cp)/*已知a[ ]中的(k-1)!,求出k!存于a[ ].*/

{int c =*cp,i,m,r;

for(i =0;i <c;i++)b[i] =a[i];

a[c] =0;

for(m =1;m <k;m++)/*通过累加求k!*/

for(i =0;i <c;i++){

r =(1);a[i] =r %10;(2)+=r/10;

}

/*处理最高位进位*/

r =a[c];

while (r>0){a[ (3)] =r%10;r =r/10;}

(4)=c;

}

void write(int *a,int k,int c)

{int i;

printf(″%4d!=″,k);

for(i =(5);i >=0;i--)printf(″%d″,a[i]);

printf(″\n\n″);

}

main()

{int n,c,k ;

printf(″Enter the number n(<=100):″);scanf(″%d″,&n);

a[0] =1;c =1;write(a,l,c);

for(k =2;k <=n;k++){

pnext(k,&c);write(a,k,c);getchar();

}

}

上一篇:[水平考试]初级程序员级试题一  下一篇: 2004年上半年程序员考试题及答案  

网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号