2013計算機二級C語言上機練習題及答案(3)

字號:

為大家收集整理了《2013計算機二級C語言上機練習題及答案(3)》供大家參考,希望對大家有所幫助?。?!
    第一題:
    已知學生的記錄由學號和學習成績構成,N名學生的數(shù)據(jù)已存入a結構體中,給定程序的功能是找出成績最低的學生記錄,通過形參返回函數(shù)。
    請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在fun函數(shù)的橫線上填入所編寫的若干表達式或語句。
    #include
    #include
    #define N 10
    typedef struct ss
    {
    char num[10];
    int s;
    } STU;
    fun(STU a[], STU *s)
    {
    stu h;
    int i;
    h = a[0];
    for (i=1; i  if (a[i].s < h.s)
    h = a[i];
    *s = h;
    }
    main()
    {
    STU a[N] =
    {
    {"A01", 81}, {"A02", 89}, {"A03", 66}, {"A04", 87},
    {"A05", 77}, {"A06", 90}, {"A07", 79}, {"A08", 61},
    {"A09", 80}, {"A10", 71}
    }, m;
    int i;
    printf("***** The original data *****\n");
    for (i=0; i  printf("No = %s Mark = %d\n", a[i].num, a[i].s);
    fun(a, &m);
    printf("***** THE RESULT *****\n");
    printf("The lowest : %s , %d\n", m.num, m.s);
    }
    第二題:
    下列給定程序中,函數(shù)fun的功能是:將字符串p中的所有字符復制到字符串b中,要求每復制三個字符之后插入一個空格。例如,在調用fun函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調用函數(shù)之后,字符串之后,字符串b 中的內容則為ABC DEF GHI JK。
    請改正程序中的錯誤,使它能得出正確的結果。
    注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!
    #include
    void fun(char *p, char *b)
    {
    int i, k = 0;
    while (*p)
    {
    /********found********/
    i = 0;
    /********found********/
    while (i<3 && *p)
    {
    b[k] = *p;
    k++; 
    p++;
    i++;
    }
    /********found********/
    if (*p)
    b[k++] = ' ';
    }
    b[k] = '\0';
    }
    main()
    {
    char a[80], b[80];
    printf("Enter a string: ");
    gets(a);
    printf("The original string: ");
    puts(a);
    fun(a, b);
    printf("\nThe string after insert space: ");
    puts(b);
    printf("\n\n");
    }
    第三題:
    請編寫一個函數(shù)fun,它的功能是:計算并輸出給定整數(shù)n的所有因子(不包括1與自身)之和。規(guī)定n的值不大于1000。
    例如,若主函數(shù)從鍵盤給n輸入的值為856,則輸出為sum=763。
    請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
    #include
    int fun(int n)
    {
    }
    main()
    { 
    int n,sum;
    FILE *out ;
    printf("Input n: ");
    scanf("%d",&n);
    sum=fun(n);
    printf("sum=%d\n",sum);
    out=fopen ("out.dat","w");
    fprintf(out, "%d\n", fun(123));
    fprintf(out, "%d\n", fun(456));
    fprintf(out, "%d\n", fun(789));
    fprintf(out, "%d\n", fun(147));
    fprintf(out, "%d", fun(258));
    fclose (out );
    }
    int fun(int n)
    {
    int s=0,i;
    for(i=2;i<=n-1;i++)
    if(n%i==0)
    s+=i;
    return s;
    }