• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    1991程序員水平考試試題——下午試題

    發布: 2007-5-26 13:59 | 作者: 未知 | 來源: 互聯網 | 查看: 34次 | 進入軟件測試論壇討論

    領測軟件測試網 [程序說明]

    已知某數的前二項為2和3,其后繼項根據當前最后二項的乘積按下列規則生成

    。ǎ保┤舫朔e為一位數,則該乘積即為數列的后繼項;

    。ǎ玻┤舫朔e為二位數,則該乘積的十位數和個位數依次作為數列的兩個后繼項。

     本程序輸出該數列的前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.forward=&loop[i+1];

    loop.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=loop.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]);

    }

    }

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>