2013計算機二級C語言上機題庫及答案解析(5)

字號:

為大家收集整理了《2013計算機二級C語言上機題庫及答案解析(5)》供大家參考,希望對大家有所幫助?。?!
    填空題
    給定程序中,函數(shù)fun的功能是建立一個N×N的矩陣。 矩陣元素的構成規(guī)律是:最外層元素的值全部為1;從外向內第2層元素的值全部為2;第3層元素的值
    全部為3,…依次類推。例如,若N=5,生成的矩陣為:
    1 1 1 1 1
    1 2 2 2 1
    1 2 3 2 1
    1 2 2 2 1
    1 1 1 1 1
    請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結果。
    注意:源程序存放在考生文件夾下的BLANK1.C中。
    不得增行或刪行,也不得更改程序的結構!
    給定源程序:
    #include
    #define N 7
    void fun(int (*a) __1__)
    { int i,j,k,m;
    if(N%2==0) m=N/2 ;
    else m=N/2+1;
    for(i=0; i
    for(j= __2__ ; j
    a[i][j]=a[N-i-1][j]=i+1;
    for(k=i+1; k
    a[k][i]=a[k][N-i-1]= __3__;
    }
    }
    main()
    { int x[N][N]={0},i,j;
    fun(x);
    printf("\nThe result is:\n");
    for(i=0; i
    { for(j=0; j
    printf("\n");
    }
    }
    解題思路:
    第一處:建立一個N×N的矩陣,所以應填:[N]。
    第二處:j的起始變量值應i。
    第三處:也應該填寫i+1。
    改錯題
    給定程序MODI1.C中函數(shù) fun 的功能是: 將十進制正整數(shù)m轉換成k(2≤k≤9) 進制數(shù), 并按高位到低位順序輸出。
    例如,若輸入8和2,則應輸出1000(即十進制數(shù)8轉換成二進制表示是1000)。
    請改正 fun 函數(shù)中的錯誤,使它能得出正確的結果。
    注意:不要改動 main 函數(shù)。不得增行或刪行,也不得更改程序的結構!
    給定源程序:
    #include
    #include
    void fun( int m, int k )
    {
    int aa[20], i;
    for( i = 0; m; i++ )
    {
    aa[i] = m/k;
    m /= k;
    }  
    for( ; i; i-- )
    printf( "%d", aa[ i ] );
    }
    main()
    {
    int b, n;
    printf( "\nPlease enter a number and a base:\n" );
    scanf( "%d %d", &n, &b );
    fun( n, b );
    printf("\n");
    }
    解題思路:
    第一處:應該取模而不是整除,所以應為:aa[i]=m%k;。
    第二處:輸出aa的位置不正確,所以應為:printf("%d",aa[i-1]);。
    編程題
    編寫一個函數(shù),從num個字符串中找出最長的一個字符串,并通過形參指針max傳回該串地址。(注意: 主函數(shù)中用****作為結束輸入的標志,函數(shù)fun中給出的語句僅供參考。)
    注意:部分源程序在文件PROG1.C中。
    請勿改動主函數(shù)main和其它函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
    給定源程序:
    #include
    #include
    fun(char(*a)[81],int num,char **max)
    {
    int i,k=0,len, maxlen; /* k為a數(shù)組中最長串所在元素的下標,初始為0,maxlen為其串
    長 */  
    maxlen=strlen(a[k]);
    for(i=1;i
    {
    /* 以下完成查找最長串 */
    }
    *max=a[k];
    }
    main()
    {
    char ss[10][81],*ps;
    int n,i=0;
    printf("輸入若干個字符串:");
    gets(ss[i]);
    puts(ss[i]);
    while(!strcmp(ss[i],"****")==0)
    {
    i++;
    gets(ss[i]);
    puts(ss[i]);
    }
    n=i;
    fun(ss,n,&ps);
    printf("\nmax=%s\n",ps);
    NONO();
    }
    解題思路:
    本題是考察考生怎樣從已輸入的字符串中找出長度的字符串。求字符串的長度可以使用strlen函數(shù)。
    參考答案:
    fun(char(*a)[81],int num,char **max)
    {
    int i,k=0,maxlen; /* k為a數(shù)組中最長串所在元素的下標,初始為0,maxlen為其串長 */
    maxlen=strlen(a[k]);
    for(i=1;i
    {
    /* 以下完成查找最長串 */
    if(strlen(a[i]) > maxlen) {
    maxlen = strlen(a[i]) ;
    k = i ;
    }
    }
    *max=a[k];
    }