2010年計算機等級考試二級C:上機習(xí)題12套(7)

字號:

2010年計算機等級考試二級C:上機習(xí)題12套(7)

    第七套上機試卷
    一、改錯題
    含有錯誤的源程序如下:
    #include
    #include
    struct T
    {char name [20],num[20];
    };
    void sort(struct T items[],int low,int high)
    {struct T temp;
    int k,j;
    for(k=low;k
    for(j=low;j
    if(items[j].name>items[j+1].name)           ?、?BR>    {temp=items[j];items[j]=items[j+1];items[j+1]=temp;}
    }
    void main(void)
    {struct T stu[4]={"Wang","6723","Cai","2106","Zhang",    ?、?BR>    "5129","Chang","4512","An","6868"};
    int k;
    sort(stu,0,4);
    printf("The Sorted Array:\n");
    for(k=0;k<5;k++)
    printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num);   ?、?BR>    }
    【知識點】冒泡排序、結(jié)構(gòu)體數(shù)組、程序的調(diào)試
    【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規(guī)定等,此類錯誤可通過調(diào)試(按F9鍵),根據(jù)提示進行改正。另一類是邏輯錯誤,程序調(diào)試已通過(報success),但運行結(jié)果不正確,此類錯誤的修改必須要理解程序后方能改正。
    本題使用起泡法完成排序,①處j
    【答案】加下劃線的部分改為:
    ①j
    ②if(strcmp(items[j].name, items[j+1].name)>0)
    ③stu[5]
    ④stu[k].name, stu[k].num
    二、編程題
    【知識點】字符串處理、函數(shù)調(diào)用、數(shù)據(jù)文件的使用
    【解析】編程題的結(jié)果一般都是客觀的,這樣便于老師主觀閱卷評分,雖然考生個人的準(zhǔn)考證號是各異的,對評閱老師卻是可以通過所交磁盤標(biāo)簽直接觀察到,故必須如實輸入,不能直接套用題中例子。注意,按要求必須調(diào)用函數(shù),且使用數(shù)據(jù)文件完成輸出。使用數(shù)據(jù)文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件并賦值給指針,④用fprintf輸出結(jié)果,⑤用fclose關(guān)閉文件。
    【注意】fopen("A:\\myf2.out","w")中盤符A:后要加雙斜杠表示根目錄,因為C語言用轉(zhuǎn)義字符'\\'才能表達字符\;另外,文件的命名一定要嚴格按照規(guī)定處理,千萬不要隨便命名。
    【參考答案】
    #include
    #include
    #include
    void count(char a[],char w[][10],int n,int b[])
    {int i=0,j,k=0;char s[10];
    for(i=0;a[i]!=0;i++)
    {if(isalpha(a[i]))s[k++]=a[i]; /* isalpha函數(shù)用于判斷字符是否為字母*/
    /*此句將連續(xù)字母組成的一個單詞存放于s中,便于與二維數(shù)組中的某一行進行比較*/
    else
    {s[k]= '\0'; /*加上'\0'才能使s中存放的是字符串,才能使用strcmp函數(shù)進行比較*/
    for(j=0;j
    if(strcmp(s,w[j])= =0){b[j]++;break;}
    k=0; /*讓s重新存放另一個單詞*/
    }
    }
    }
    main()
    {FILE *fp;
    char line[80]="this is a book,that is an apple",word[6][10]={"this","that","is","a","an","book"};
    /*按要求初始化,用二維字符數(shù)組的一行存放一個單詞便于后面比較處理*/
    int c[6]={0},m;
    count(line,word,6,c);fp=fopen("A:\\myf2.out","w");
    if(fp= =NULL){printf("Can't open file");exit(1);}
    for(m=0;m<6;m++)fprintf(fp,"%s:%d",word[m],c[m]);
    fprintf(fp,"\nmy exam number is:%s","0112400123"); /*注意輸入實際準(zhǔn)考證號*/
    fclose(fp);
    }