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

字號:

為大家收集整理了《2013計算機二級C語言上機題庫及答案解析(13)》供大家參考,希望對大家有所幫助?。?!
    填空題
    給定程序中,函數(shù)fun的功能是:找出N×N矩陣中每列元素中的值,并按順序依次存放于形參b所指的一維數(shù)組中。
    請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結果。
    注意:源程序存放在考生文件夾下的BLANK1.C中。
    不得增行或刪行,也不得更改程序的結構!
    給定源程序:
    #include
    #define N 4
    void fun(int (*a)[N], int *b)
    { int i,j;
    for(i=0; i
    /
    b[i]= __1__;
    for(j=1; j
    if(b[i] __2__ a[j][i]) b[i]=a[j][i];
    }
    }
    main()
    { int x[N][N]={ {12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3} },y[N],i,j;
    printf("\nThe matrix :\n");
    for(i=0;i
    { for(j=0;j
    printf("\n");
    }
    fun(__3__);
    printf("\nThe result is:");
    for(i=0; i
    printf("\n");
    }
    解題思路:
    第一處:把每列的第1值賦值給b[i],所以應填:a[0][i]。
    第二處:如果b[i]值小于a[j][i]的值,則把a[j][i]重新賦值給b[i]中,保存的值, 所以應填:<。
    第三處:在主函數(shù)中,x是存放矩陣數(shù)據(jù),y是存放每列的值,所以應填:x,y。
    改錯題
    給定程序MODI1.C中函數(shù)fun的功能是: 交換主函數(shù)中兩個變量的值。例如: 若變量a中的值原為8,b中的值為3。程序運行后a中的值為3, b中的值為8。
    請改正程序中的錯誤, 使它能計算出正確的結果。
    注意: 不要改動 main 函數(shù), 不得增行或刪行, 也不得更改程序的結構!
    給定源程序:
    #include
    int fun(int x,int y)
    {
    int t;
    t=x;x=y;y=t;
    }
    main()
    {
    int a,b;
    a=8;b=3;
    fun(&a,&b);
    printf("%d, %d\n",a,b);
    }
    解題思路:
    第一處:函數(shù)形參定義不正確,在定義第2個形參時,也應加上int。由于通過該函數(shù)實現(xiàn)兩數(shù)交換,在C語言中,必須交換地址中的值,所以應定義為int *x,int *y。
    第二處:要交換地址中的值,不能交換地址,必須指定地址中的值,因此應改為
    t=*x;*x=*y;*y=t;。
    編程題
    編寫函數(shù)fun, 函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中, 函數(shù)返回所求出的素數(shù)的個數(shù)。函數(shù)fun中給出的語句僅供參考。
    注意:部分源程序在文件PROG1.C中。
    請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
    給定源程序:
    #include
    #define MAX 100
    int fun(int lim, int aa[MAX])
    {  http://ks.exam8.com
    int i,j,k=0;
    /* 其中變量k用于統(tǒng)計素數(shù)個數(shù) */
    for(i=2;i<=lim;i++)
    {
    /* 以下完成判斷aa數(shù)組中小于或等于lim的素數(shù)并統(tǒng)計個數(shù) */
    }
    return k;
    }
    main()
    {
    int limit, i, sum;
    int aa[MAX] ;
    printf("輸入一個整數(shù)");
    scanf("%d", &limit);
    sum=fun(limit, aa);
    for(i=0 ; i < sum ; i++) {
    if(i % 10 == 0 && i != 0) printf("\n") ;
    printf("%5d", aa[i]) ;
    }
    NONO();
    }
    解題思路:
    本題是考察考生如何判斷一個數(shù)是素數(shù),再求出所有小于lim數(shù)的素數(shù)并存入數(shù)組aa中保存,最后由形參aa返回,素數(shù)的個數(shù)由函數(shù)值返回。
    參考答案:
    int fun(int lim, int aa[MAX])
    {
    int i,j,k=0;
    /* 其中變量k用于統(tǒng)計素數(shù)個數(shù) */
    for(i=2;i<=lim;i++)
    {
    /* 以下完成判斷aa數(shù)組中小于或等于lim的素數(shù)并統(tǒng)計個數(shù) */
    for(j = 2 ; j <= (i/2) ; j++)
    if(i % j == 0) break;
    if(j > (i/2)) aa[k++] = i;
    }
    return k;
    }