设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 认证考试 >> 软件水平考试 >> 1991年程序员考试试题
精品推荐
软件水平考试点击TOP10
·1993年程序员考试上午试题
·我的软考经验 希望能助你取得成功
·2004年数据库系统工程师考试大纲
·2005年4月等级考试二级VB真题(附答案)
·2004年网络工程师考试大纲
·“新软考”取消诸多门槛 大学生也可获高级职称
·2004年软件设计师级考试大纲
·报考条件放宽在校学生可被评为高级工程师
·软件水平考试备考要略
·2004年5月系统分析员考试大纲
认证考试点击TOP10
·个人简历表格
·小学教师述职报告
·个人简历样本
·大学毕业生个人简历
·学生个人简历
·个人简历范文
·求职面试自我介绍一分钟
·大学生暑期三下乡社会实践报告
·Adobe Photoshop 认证试题一
·个人简历模板-标准简历(简历模板)
精选专题

1991年程序员考试试题

作者: 来源:http://www.xgdown.com/ 时间:2005-11-8 0:27:14

1991年程序员考试试题(2) [程序说明]

已知某数的前二项为2和3,其后继项根据当前最后二项的乘积按下列规则生成

 (1)若乘积为一位数,则该乘积即为数列的后继项;

 (2)若乘积为二位数,则该乘积的十位数和个位数依次作为数列的两个后继项。

 本程序输出该数列的前n项以及它们的和。其中,函数sum(n,pa)返回

数列的前n项之和,并将生成的前n项存放于首指针为pa的数组中。程序中规定

输入的n值必须大于2并且不超过给定的常数值MAXNUM。

  列如:若输入n值为10,则程序输出如下内容:

  sum(10)=44

2 3 6 1 8 8 6 4 2 4

[程序]

#include <stdio.h>

#define MAXNUM 100

int sum(n,pa)

int n,*pa;

{ int count,total,temp;

*pa=2;

____________________ =3;

total=5; count=2;

while (count++<n)

{ temp=*(pa-1)**pa;

if (temp<10)

{ total+=temp;

*(++pa)=temp;

}

else

{

_______________ =temp/10;

total+=*pa;

if (count<n)

{ count++;pa++;

_______________________=temp%10;

total+=*pa;

}

}

}

___________________________;

}

main ()

{ int n,*p,*q,num[MAXNUM];

do {printf("Input N=? (2<N<%d):",MAXNUM+1);

scanf("%d",&n);

} while ( ___________________ );

printf("\nsum(%d)=%d\n",n,sum(n,num));

for (p=num,q= ________________ ;p<q;p++) printf("%4d",*p);

printf("\n");

}

  [程序说明]

  本程序对某电码文(原文)进行加密形成密码文.其加密算法如下:

假定原文为C1C2C3...Cn,加密后形成的密文为S1S2S3...Sn,首先读入

正整数Key(Key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,

如下图所示:

┏━Sn━━S1━┓

Sn-1 S2

┃ ┃

┃ S3

┃ ┃

┗....━━S4━┛

加密时从S1位置起顺时针计数,当数到第Key个字符位置时,将原文中的字符放入

该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起

继续计数,当再次数到第Key个字符位置时,将原文中字符C2放入其中,并从环中

除去该字符位置;依次类推,直至n个原文字符全部放入密文环中.由此产生的S1S2

...Sn即为原文的密文.

例如,当Key=3时,原文: THIS IS AN DECODING SYSTEM 的密文为:

AOTGNHEDI YS D IMIETSNC SS

当Key=4时,该原文的密文为:

SSDTYD HTEGIASISCNM E ION

本程序将电码的原文存放在字符数组old中,加密钥匙存放在整数Key中.函数decode

用于将原文old加密并返回密文字符数组的首指针.其中函数采用一个双向循环链表

CODE来表示密文环.函数strlen用于计算一个字符串中的字符个数(不包括字符串结

尾符'\0').为了简单起见,程序中假设内存容量足以满足动态存贮单元分配的要求.

[程序]

#include <stdio.h>

#include <alloc.h>

#define CR 13

typedef struct node

{ char ch;

struct node *forward; /* Link to next node. */

struct node *backward;/* Link to previous node.*/

} CODE;

main()

{ char _________ ,old[256];

int strlen(),key,num=0;

printf("\nPlease input the telegraph: \n")l

while (num<255&&(old[num++]=getch())!=CR);

old[ ______ ]='\0';

do { printf("\nPlease input Key=?(Key>1):");

scanf("%d",&key);

} while (key<=1);

printf("\nThe decode of telegraph:'%s' is:\n'%s'\n",

old,decode(old,key));

}

char *decode(old,key)

char *old; int key;

{ char *new; int length,count,i;

CODE *loop,*p;

length=strlen(old);

loop=( _______ ) malloc(length*sizeof(CODE));

for (i=1;i<length-1;i++)

{ loop[i].forward=&loop[i+1];

loop[i].backward=&loop[i-1];

}

loop[0].backward=&loop[length-1];

loop[0].forward=&loop[1];

loop[length-1].forward=loop;

loop[length-1].backward=&loop[length-2];

for (p=loop,i=0;i<length;i++)

{ for (count=1;count<key;count++)

p= _____ ;

p->ch=*old++;

p->backward->forward= _________ ;

p->forward->backward= _________ ;

p=p->forward;

}

new=(char *)malloc((length+1)*sizeof(char));

for (i=0;i<length;i++) new[i]=loop[i].ch;

new[length]='\0';

return (new);

}

int strlen(s)

char *s;

{ int len=0;

while ( ________ !='\0') len++;

return( len);

}

[程序说明]

本程序将一个给定汉字的点阵逆时针旋转90度,并输出旋转前后的点阵数据及字形.

附图是汉字"转"字的16*16点阵字形,用数字'0'表示空白位置,用数字'1'表示非空

白位置,"转"字的第一行机即可表示成如下的{0,1}序列:

0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0

如果把它看作一个字的16个BIT,"转"字的第一行可以用16进制数的1040来表示.同

理,"转"字的第二行可以表示为1040,第三行可以表示为1048,...等等.依次类推,用

16个双字节整型数即可存放一个汉字点阵字形."转"字的点阵数据及字形如附图的

左半部分所示.将一个汉字逆时针旋转90度,就是把该汉字点阵的最右列作为旋转后

点阵的第一行,次右列作为旋转后点阵的第二行,...,来形成一个旋转后的点阵字形.

附图的右半部分就是将"转"字旋转90度后的点阵数据和字形.

程序中,数组old中存放着"转"字的点阵数据.函数turnleft将该点阵数据逆时针旋

转90度,旋转后的点阵数据存放在数组new中.函数display将旋转前后的点阵数据加

以编辑,用字符'.'表示值为0的Bit,用字符'X'表示值为1的Bit,从而将旋转前后的点

阵按行输出其16进制数据及字形,如同附图所表示的那样.

[附图]

1040 ...X.....X...... 0000 ................

1040 ...X.....X...... 0200 ......X.........

1048 ...X.....X..X... 1640 ...X.XX..X......

FDFC XXXXXX.XXXXXXX.. 32E0 ..XX..X.XXX.....

2040 ..X......X...... 1259 ...X..X..X.XX..X

2844 ..X.X....X...X.. 1246 ...X..X..X...XX.

4BFE .X..X.XXXXXXXXX. FE44 XXXXXXX..X...X..

7C80 .XXXXX..X....... 13C8 ...X..XXXX..X...

0888 ....X...X...X... 1240 ...X..X..X......

09FC ....X..XXXXXXX.. 0200 ......X.........

1C08 ...XXX......X... 1120 ...X...X..X.....

E810 XX.X.......X.... 17FF ...X.XXXXXXXXXXX

4890 .X..X...X..X.... F120 XXXX...X..X.....

0860 ....X....XX..... 1D10 ...XXX.X...X....

0820 ....X.....X..... 1318 ...X..XX...XX...

0810 ....X......X.... 1010 ...X.......X....

[程序]

#define <stdio.h>

#define EMPTY '.'

#define NONEMPTY 'X'

#define LEFT 0

#define RIGHT 1

main ()

{ static unsigned old[16]=

{0x1040,0x1040,0x1048,0xFDFC,0x2040,0x2844,

0x4BFE,0x7C80,0x0888,0x09FC,0x1C08,0xE810,

0x4890,0x0860,0x0820,0x0810

};

unsigned new[16];

trunleft(old,new);

display(old,new);

}

turnleft(old,new)

unsigned old[],new[];

{ int row,k;

for (row=0;row<16;row++)

for (k=0,______ ;k<16;k++)

new[row]=((old[k]>> _______ ) &1) << _______ ;

}

display(old,new)

unsigned *old,*new;

{

char out[2][17],letter[2];

int row,col;

letter[0]=EMPTY;

letter[1]=NONEMPTY;

out[LEFT][16]=out[RIGHT][16]=______;

for (row=0;row<16;row++,old++,new++)

{ for (col=0;col<16;++col)

{ out[LEFT][col]=letter[ ( __________) &1];

out[RIGHT][col]=letter[ (__________) &1];

}

printf("\n %4x %s ",*old,&out[LEFT][0]);

printf(" %4x %s",*new,&out[RIGHT][0]);

}

}

new[16]=______;

for (row=0;row<16;row++,old++,new++)

{

for (col=0;col<16;++col)

{ out[LEFT][col]=letter[ ( __________) &1];

out[RIGHT][col]=letter[ (__________) &1];

}

printf("\n %4x %s ",*old,&out[LEFT][0]);

printf(" %4x %s",*new,&out[RIGHT][0]);

}

}

 

共3页 9 7 [1] [2] [38 :>

1991年程序员考试试题 相关文章:
1991年程序员考试试题 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com