2013計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)及答案解析(15)

字號(hào):

為大家收集整理了《2013計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)及答案解析(15)》供大家參考,希望對(duì)大家有所幫助?。?!
    第一題:填空題
    請(qǐng)補(bǔ)充fun函數(shù),該函數(shù)的功能是:尋找兩個(gè)整數(shù)之間的所有素?cái)?shù)(包括這兩個(gè)整數(shù)),
    把結(jié)果保存在數(shù)組bb中,函數(shù)返回素?cái)?shù)的個(gè)數(shù)。
    例如:輸入3和17,則輸出為3 5 7 11 13 17
    請(qǐng)勿改動(dòng)主函數(shù)mian和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填入所編寫(xiě)的若干表達(dá)或語(yǔ)句。
    #include
    #include
    #define N 1000
    int fun(int n, int m, int bb[N])
    {
    int i, j, k = 0, flag;
    for (j=n; j<=m; j++)
    {
    ___1___;
    for (i=2; i  if (___2___)
    {
    flag = 0;
    break;
    }
    if (___3___)
    bb[k++] = j;
    }
    return k;
    }
    main()
    {
    int n = 0, m = 0, i, k;
    int bb[N];
    printf("Input n\n");
    scanf("%d", &n);
    printf("Input m\n");
    scanf("%d", &m);
    for (i=0; i  bb[i] = 0;
    k = fun(n, m, bb);
    for (i=0; i  printf("M", bb[i]);
    }
    填空題答案:
    第1處填空:flag=1
    第2處填空:j%i==0或0==j%i或!(j%i)
    第3處填空:flag==1或1==flag
    第二題:改錯(cuò)題
    下列給定程序中,函數(shù)fun的功能是:為一個(gè)偶數(shù)尋找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù),并將這兩個(gè)素?cái)?shù)通過(guò)形參指針轉(zhuǎn)會(huì)主函數(shù)。
    請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使它能得出正確的結(jié)果。
    注意:不要?jiǎng)觤ain函數(shù),不得增行或刪除,也不得更改程序的結(jié)構(gòu)!
    #include
    #include
    void fun(int a, int *b, int *c)
    {
    int i, j, d, y;
    for (i=3; i  {
    /********found********/
    y = 0;
    for (j=2; j<=sqrt((double)i); j++)
    if (i%j == 0)
    y = 0;
    if (y == 1)
    {
    /********found********/
    d = i-a;
    for (j=2; j<=sqrt((double)i); j++)
    if (d%j == 0)
    y = 0;
    if (y == 1)
    {
    *b = i;
    *c = d;
    }
    }
    }
    }
    main()
    {
    int a, b, c;
    do
    {
    printf("\nInput a: ");
    scanf("%d", &a);
    } while (a%2);
    fun(a, &b, &c);
    printf("\n\n%d=%d + %d\n", a, b, c);
    }
    改錯(cuò)題答案:
    第一處:y=0;應(yīng)改為y=1;
    第二處:d= i-a;應(yīng)改為d= a-I;
    第三題:編程題
    請(qǐng)編寫(xiě)函數(shù)fun,該函數(shù)的功能:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在行參n所指的存儲(chǔ)單元中。
    例如,若二維數(shù)組中的數(shù)據(jù)為:
    33 33 33 33
    44 44 44 44
    55 55 55 55
    則一維數(shù)組中的內(nèi)容應(yīng)是:
    33 33 33 33 44 44 44 44 55 55 55 55
    請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
    include
    void fun(int (*s)[10], int *b, int *n, int mm, int nn)
    {
    } 
    main()
    {
    int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j ;
    int a[100] = {0}, n = 0 ;
    FILE *out ;
    printf("The matrix:\n") ;
    for(i = 0 ; i < 3 ; i++)
    {
    for(j = 0 ; j < 4 ; j++)
    printf("=",w[i][j]) ;
    printf("\n") ;
    }
    fun(w, a, &n, 3, 4) ;
    printf("The A array:\n") ;
    out=fopen ("out.dat","w");
    for(i = 0 ; i < n ; i++)
    {
    printf("=",a[i]);
    fprintf(out, "%d\n",a[i]);
    }
    fclose (out );
    printf("\n\n") ;
    }
    編程題答案:
    void fun(int(*s)[10],int *n, int mm,int nn)
    {
    int I, j;
    for(i=0;i  {
    b{*n}=*(*(s+i)+j);
    n=n+1;
    }
    }