全國計算機軟件水平考試初級程序員精選模擬試題(二)

字號:

全國計算機軟件水平考試初級程序員精選模擬試題(二)

    1.假定a和b為int型變量,則執(zhí)行下述語句組后,b的值為( )。
    a=1;
    b=10;
    do
    {
    b-=a;
    a++;
    } while (b--<0);
    (1)9 (2)-2 (3)-1 (4)8
    2設有變量說明語句
    int a=1,b=0;
    則執(zhí)行以下程序段的輸出結果為( )。
    switch (a)
    {
    case 1:
    switch (b)
    {
    case 0:printf("**0**");break;
    case 1:printf("**1**");break;
    }
    case 2:printf("**2**");break;
    }
    printf("\n");
    (1)**0** (2)**0****2** (3)**0****1****2** (4)有語法錯誤
    3.以下合法的數(shù)組說明是( )。
    (1)char a[6]="string";
    (2)int a[5]={0,1,2,3,4,5};
    (3)char a="string";
    (4)INT a[]={0,12,3,4,5};
    4.下述程序代碼中有語法錯誤的行是( )。
    int i,ia[10],ib[10]; /*第一行*/
    for (i=0;i<=9;i++) /*第2行*/
    ia=0; /*第3行*/
    ib=ia; /第4行*/
    (1)第1行 (2)第2行 (3)第3行 (4)第4行
    5.若已定義
    int a[9],*p=a;
    并在以后的語句中未改變p的值,則不能表示a[1]地址的表達式是( )。
    (1)p+1 (2)a+1 (3)a++ (4)++p
    答案:
    1.(4) 2.(2) 3.(4) 4.(4) 5.(3)
    所謂水仙花數(shù)是指一個三位正整數(shù),其各位數(shù)字的立方之和等于該正整數(shù)。例如編寫程序,求得并輸出全部水仙花數(shù)的個數(shù)。請?zhí)羁胀晟瞥绦颉?BR>    #include
    main()
    {
    int hun,ten,one; /*百位數(shù)、十位數(shù)、個位數(shù)*/
    int num,count=0;
    for (num=100;_____(1)_____;num++)
    {
    hum=________(2)_________;
    ten=________(3)_________;
    one=________(4)_________;
    if (____________________)
    {
    printf("]",num);
    count++;
    }
    }
    printf("\n");
    printf("No.=%d\n",count);
    }
    (1) num<1000(或num<=999)
    (2) num/100
    (3) (num-hun*100)/10
    (4) num
    (5) num==hun*hun*hun+ten*ten*ten+one*one*one
    (或hun*100+ten*10+one== hun*hun*hun+ten*ten*ten+one*one*one)
    請寫出執(zhí)行下述程序的輸出結果。
    #include
    main()
    {
    int i=100,j=34,k=-63,m=4;
    int u=-15,v=71,w=27;
    i+=j;
    j-=k;
    k*=-m;
    m/=3*j-1;
    u%=v-2*w;
    printf("i=%d,j=%d,k=%d,m=%d,u=%d",i,j,k,m,u);
    答案:i=134,j=97,k=252,m=0,u=-15
    閱讀下述程序,寫出運行結果。
    #include
    main()
    {
    int a,y;
    a=10;
    y=0;
    do
    {
    a+=2;
    y+=a;
    printf("a=%d,y=%d\n",a,y);
    if (y>20)
    break;
    } while (a=14);
    printf("a=%d\n",a);
    }
    答案:
    a=12 y=12
    a=16 y=28
    a=16
    提示:首先第一次的結果不用說了?需要的話,請先把C的書再讀一遍先!
    a=12 y=12
    接著大家要看仔細,if(y>20) break;難點在此,意思是當上面的Y>20時結束這一段,再去判斷While的條件,所以這里會接著加,a=12+2=14 y=14+12=26 ok!26>20,我們?nèi)ヅ袛鄔hile的條件吧,a=14,此時a就正好=14,再次循環(huán)·a=14+2=16 y=12+16=28,然后28>20跳出,a不等于14再次跳出,執(zhí)行最后一句輸出,a=16.
    #include
    main()
    {
    static int a[5][5]={
    {1,2,3,4,0},
    {2,3,4,0,6},
    {3,0,1,7,5},
    {0,0,2,4,1},
    {8,4,3,2,7}
    };
    int i,j;
    for (i=0;i<5;i++)
    {
    for (j=0;j<5;j++)
    {
    if (a[j]==0)
    break;
    printf("M",a[j]);
    }
    printf("\n");
    }
    答案:
    1 2 3 4
    2 3 4
    3
    8 4 3 2 7
    個人解析下:
    首先我們從for (j=0;j<5;j++)看起,往下是
    {
    if (a[j]==0)
    break;
    printf("M",a[j]);
    }
    提示: 把a[5][5]二維數(shù)組中的每列中從左至右第一個為零的數(shù)之前的數(shù)輸出!
    for (i=0;i<5;i++) 就是5行
    #include
    #include
    fun(char *w,int n)
    {
    char t,*sl,*s2;
    s1=w;
    s2=w+n-1;
    while (s1  {
    t=*s1++
    *s1=*s2--
    *s2=t;
    }
    }
    main()
    {
    char *p;
    p="1234567";
    fun (p,strlen(p));
    puts(p);
    }
    答案:1711717
    提示: 主要是認清楚S1=? S2=? 首先 S1=W,這S1存的是字符串W的首地址,而S2=W+N-1=P+7-1 OK,也就是W中最后一個字符的地址·
    閱讀下列函數(shù)說明和C函數(shù),將應填入__(n)__處的字句寫在答題紙的對應欄內(nèi)。
    [函數(shù)1.1說明]
    函數(shù)palindrome(chars[])的功能是:判斷字符串s是否為回文字符串,若是,則返回0,否則返回-1。若一個字符串順讀和倒讀都一樣時,稱該字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
    [函數(shù)1.1]
    int palindrome(char S[])
    { char *pi,*pj;
    pi=S;pj=s+strlen(S)-1:
    while ( pi  pi++; pj--;
    }
    if(__ (2)__)return-1;
    else return 0;
    }
    [函數(shù)1.2說明]
    函數(shù)f(char *str,char del)的功能是;將非空字符串str分割成若干個子字符串并輸出,del表示分割時的標志字符。
    例如若str的值為“33123333435”,del的值為‘3’,調(diào)用此函數(shù)后,將輸出三個子字符串,分別為“12”、“4”和“5”。
    [函數(shù)1.2]
    void f(char*str,char del)
    { int i,j,len;
    len = strlen(str);
    i = 0;
    while (i  while (__(3)__) i++;    /*忽略連續(xù)的標志字符*/
    /*尋找從str開始直到標志字符出現(xiàn)的一個子字符串*/
    j = i + 1;
    while (str[j] !=del && str[j] !=’\0’) j++;
    __ (4)__="\0";         /*給找到的字符序列置字符串結束標志*/
    printf(" %s\t",&str): ’
    __ (5)__;
    }
    }
    答案:
    (1)*pi == *pj
    (2)pi  (3)str== del
    (4)str[j]
    (5) i = j+1
    提示: 首先看第一題 條件:pi=S;pj=s+strlen(S)-1:pi就是首地址啦,pj就是末地址啦,我們需要把第一個和最后一個比較,第二和倒二比···....OK,那while ( pi  第二題,有注釋哦·不懂就提出來·不過偶想大家都會滴·