2017年3月計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)考前練習(xí)試題及答案(3)

字號(hào):


    1.函數(shù)ReadDat( )的功能是實(shí)現(xiàn)從文件IN7.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)SortCharD( ),該函數(shù)的功能是:以行為單位對(duì)字符按從大到小的順序進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat( )把結(jié)果xx輸出到文件OUT7.DAT中。
    例如,原文:dAe,BfC
    CCbbAA
    結(jié)果:fedCBA,
    bbCCAA
    原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。
    注意:部分源程序已給出。
    請(qǐng)勿改動(dòng)主函數(shù)main( )、讀函數(shù)ReadDat( )和寫函數(shù)WriteDat( )的內(nèi)容。
    #include
    #include
    #include
    char xx[50][80];
    int maxline=0;
    int ReadDat(void);
    void WriteDat(void);
    void SortCharD()
    {
    int i,j,k; /*定義循環(huán)控制變量*/
    int str; /*存儲(chǔ)字符串的長(zhǎng)度*/
    char temp; /*定義數(shù)據(jù)交換時(shí)的暫存變量*/
    for (i=0;i
    {
    str=strlen(xx[i]); /*求得當(dāng)前行的字符串長(zhǎng)度*/
    for(j=0;j
    for(k=j+1;k
    if(xx[i][j]
    {
    temp=xx[i][j];
    xx[i][j]=xx[i][k];
    xx[i][k]=temp;
    }
    }
    }
    void main()
    {
    system("CLS");
    if (ReadDat())
    {
    printf("數(shù)據(jù)文件IN7.DAT不能打開!\n\007");
    return;
    }
    SortCharD();
    WriteDat();
    }
    int ReadDat(void)
    {
    FILE *fp;
    int i=0;
    char *p;
    if((fp=fopen("IN7.DAT","r"))==NULL)
    return 1;
    while (fgets(xx[i],80,fp)!=NULL)
    {
    p=strchr(xx[i],'\n');
    if (p) *p=0;
    i++;
    }
    maxline=i;
    fclose(fp);
    return 0;
    }
    void WriteDat()
    {
    FILE *fp;
    int i;
    system("CLS");
    fp=fopen("OUT7.DAT","w");
    for(i=0;i
    {
    printf("%s\n",xx[i]);
    fprintf(fp,"%s\n",xx[i]);
    }
    fclose(fp);
    }
    2.對(duì)10個(gè)候選人進(jìn)行選舉,現(xiàn)有一個(gè)100條記錄的選票數(shù)據(jù)文件IN8.DAT,其數(shù)據(jù)存放的格式是每條記錄的長(zhǎng)度均為10位,第一位表示第一個(gè)人的選中情況,第二位表示第二個(gè)人的選中情況,依次類推。每一位內(nèi)容均為字符0或1,1表示此人被選中,0表示此人未被選中,若一張選票選中人數(shù)小于等于5個(gè)人時(shí)則被認(rèn)為是無(wú)效的選票。給定函數(shù)ReadDat()的功能是把選票數(shù)據(jù)讀入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)CountRs()來(lái)統(tǒng)計(jì)每個(gè)人的選票數(shù)并把得票數(shù)依次存入yy[0]到y(tǒng)y[9]中,最后調(diào)用函數(shù)WriteDat()把結(jié)果yy輸出到文件OUT8.DAT中。
    注意:部分源程序已給出。
    請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。
    #include
    #include
    char xx[100][11];
    int yy[10];
    int ReadDat(void);
    void WriteDat(void);
    void CountRs(void)
    {
    int i,j; /*定義循環(huán)控制變量*/
    int cnt; /*用來(lái)存儲(chǔ)每張選票中選中人數(shù),以判斷選票是否有效*/
    for(i=0;i<10;i++) /*初始化數(shù)組yy*/
    yy[i]=0;
    for(i=0;i<100;i++) /*依次取每張選票進(jìn)行統(tǒng)計(jì)*/
    {
    cnt=0; /*初始化計(jì)數(shù)器變量*/
    for(j=0;j<10;j++) /*統(tǒng)計(jì)每張選票的選中人數(shù)cnt*/
    if(xx[i][j]=='1')
    cnt++;
    if(cnt>5) /*當(dāng)cnt值大于5時(shí)為有效選票*/
    {
    for(j=0;j<10;j++) /*統(tǒng)計(jì)有效選票*/
    if(xx[i][j]=='1')
    yy[j]++;
    }
    }
    }
    void main()
    {
    int i;
    for (i=0; i<10; i++)
    yy[i] = 0;
    if(ReadDat())
    {
    printf("選票數(shù)據(jù)文件IN8.DAT不能打開!\007\n");
    return;
    }
    CountRs();
    WriteDat();
    }
    int ReadDat(void)
    {
    FILE *fp;
    int i;
    char tt[13];
    if((fp = fopen("IN8.DAT", "r")) == NULL)
    return 1;
    for (i = 0; i < 100; i++)
    {
    if(fgets(tt, 13, fp) == NULL)
    return 1;
    memcpy(xx[i], tt, 10);
    }
    fclose(fp);
    return 0;
    }
    void WriteDat(void)
    {
    FILE *fp;
    int i;
    fp = fopen("OUT8.DAT", "w");
    for(i = 0; i < 10; i++)
    {
    fprintf(fp, "%d\n", yy[i]);
    printf("第%d個(gè)人的選票數(shù)=%d\n", i+1, yy[i]);
    }
    fclose(fp);
    }