2016計算機三級考試網(wǎng)絡(luò)技術(shù)練習試題

字號:

1.函數(shù)ReadDat()的功能是實現(xiàn)從文件IN5.DAT中讀取一篇英文文章存入到字符串數(shù)組xx中。請編制函數(shù)ConvertCharA(),該函數(shù)的功能是:以行為單位把字符串中的所有小寫字母改寫成該字母的下一個字母,如果是字母z,則改寫成字母a。大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不變。把已處理的字符串仍按行重新存入字符串數(shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件OUT5.DAT中。
    例如,原文:Adb.Bcdza
    abck.LLhj
    結(jié)果:Aec.Bdeab
    bcdl.LLik
    原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。
    注意:部分源程序已給出。
    請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。
    #include
    #include
    #include
    char xx[50][80] ;
    int maxline = 0 ;/* 文章的總行數(shù) */
    int ReadDat(void) ;
    void WriteDat(void) ;
    void ConvertCharA(void)
    {
    int i,j; /*定義循環(huán)控制變量*/
    int str; /*存儲字符串的長度*/
    for(i=0;i
    {
    str=strlen(xx[i]); /*求得當前行的字符串的長度*/
    for(j=0;j
    if(xx[i][j]>='a' && xx[i][j]<='z') /*如果是小寫字母*/
    if(xx[i][j]=='z')
    xx[i][j]='a'; /*如果是小寫字母z,則改寫成字母a*/
    else
    xx[i][j]+=1; /*其他的小寫字母則改寫為該字母的下一個字母*/
    }
    }
    void main()
    {
    system("CLS");
    if(ReadDat())
    {
    printf("數(shù)據(jù)文件IN5.DAT不能打開!\n\007") ;
    return ;
    }
    ConvertCharA() ;
    WriteDat() ;
    }
    int ReadDat(void)
    {
    FILE *fp ;
    int i =0 ;
    char *p ;
    if((fp = fopen("IN5.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(void)
    {
    FILE *fp ;
    int i ;
    system("CLS");
    fp = fopen("OUT5.DAT", "w") ;
    for(i = 0 ; i < maxline ; i++)
    {
    printf("%s\n", xx[i]) ;
    fprintf(fp, "%s\n", xx[i]) ;
    }
    fclose(fp) ;
    }
    2.在文件IN6.DAT中有200個正整數(shù),且每個數(shù)均在1000至9999之間。函數(shù)readDat()的功能是讀取這200個數(shù)存放到數(shù)組aa中。請編制函數(shù)jsSort(),該函數(shù)的功能是:要求按每個數(shù)的后3位的大小進行降序排列,將排序后的前10個數(shù)存入數(shù)組b中,如果數(shù)組b中出現(xiàn)后3位相等的數(shù),則對這些數(shù)按原始4位數(shù)據(jù)進行升序排列。最后調(diào)用函數(shù)writeDat()把結(jié)果bb輸出到文件OUT6.DAT中。
    例如:處理前 9012 5099 6012 7025 8088
    處理后 5099 8088 7025 6012 9012
    注意:部分源程序已給出。
    請勿改動主函數(shù)main()、讀函數(shù)readDat()和寫函數(shù)writeDat()的內(nèi)容。
    #include
    #include
    #include
    int aa[200], bb[10] ;
    void readDat();
    void writeDat();
    void jsSort()
    {
    int i,j; /*定義循環(huán)控制變量*/
    int temp; /*定義數(shù)據(jù)交換時的暫存變量*/
    for(i=0;i<199;i++) /*用選擇法對數(shù)組進行排序*/
    for(j=i+1;j<200;j++)
    {
    if(aa[i]%1000
    {
    temp=aa[i];
    aa[i]=aa[j];
    aa[j]=temp;
    }
    else if(aa[i]%1000==aa[j]%1000) /*如果后3位數(shù)相等*/
    if(aa[i]>aa[j]) /*則要按原4位數(shù)的值進行升序排序*/
    {
    temp=aa[i];
    aa[i]=aa[j];
    aa[j]=temp;
    }
    }
    for(i=0;i<10;i++) /*將排序后的前10個數(shù)存入數(shù)組b中*/
    bb[i]=aa[i];
    }
    void main()
    {
    readDat() ;
    jsSort() ;
    writeDat() ;
    }
    void readDat()
    {
    FILE *in ;
    int i ;
    in = fopen("IN6.DAT", "r") ;
    for(i = 0 ; i < 200 ; i++) fscanf(in, "%d,", &aa[i]);
    fclose(in) ;
    }
    void writeDat()
    {
    FILE *out ;
    int i ;
    out = fopen("OUT6.DAT", "w") ;
    system("CLS");
    for (i = 0 ; i < 10 ; i++)
    {
    printf("i=%d,%d\n", i + 1, bb[i]) ;
    fprintf(out, "%d\n", bb[i]) ;
    }
    fclose(out) ;
    }
    3.函數(shù)ReadDat( )的功能是實現(xiàn)從文件IN7.DAT中讀取一篇英文文章存入到字符串數(shù)組xx中。請編制函數(shù)SortCharD( ),該函數(shù)的功能是:以行為單位對字符按從大到小的順序進行排序,排序后的結(jié)果仍按行重新存入字符串數(shù)組xx中,最后調(diào)用函數(shù)WriteDat( )把結(jié)果xx輸出到文件OUT7.DAT中。
    例如,原文:dAe,BfC
    CCbbAA
    結(jié)果:fedCBA,
    bbCCAA
    原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。
    注意:部分源程序已給出。
    請勿改動主函數(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; /*存儲字符串的長度*/
    char temp; /*定義數(shù)據(jù)交換時的暫存變量*/
    for (i=0;i
    {
    str=strlen(xx[i]); /*求得當前行的字符串長度*/
    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);
    }
    4.對10個候選人進行選舉,現(xiàn)有一個100條記錄的選票數(shù)據(jù)文件IN8.DAT,其數(shù)據(jù)存放的格式是每條記錄的長度均為10位,第一位表示第一個人的選中情況,第二位表示第二個人的選中情況,依次類推。每一位內(nèi)容均為字符0或1,1表示此人被選中,0表示此人未被選中,若一張選票選中人數(shù)小于等于5個人時則被認為是無效的選票。給定函數(shù)ReadDat()的功能是把選票數(shù)據(jù)讀入到字符串數(shù)組xx中。請編制函數(shù)CountRs()來統(tǒng)計每個人的選票數(shù)并把得票數(shù)依次存入yy[0]到y(tǒng)y[9]中,最后調(diào)用函數(shù)WriteDat()把結(jié)果yy輸出到文件OUT8.DAT中。
    注意:部分源程序已給出。
    請勿改動主函數(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; /*用來存儲每張選票中選中人數(shù),以判斷選票是否有效*/
    for(i=0;i<10;i++) /*初始化數(shù)組yy*/
    yy[i]=0;
    for(i=0;i<100;i++) /*依次取每張選票進行統(tǒng)計*/
    {
    cnt=0; /*初始化計數(shù)器變量*/
    for(j=0;j<10;j++) /*統(tǒng)計每張選票的選中人數(shù)cnt*/
    if(xx[i][j]=='1')
    cnt++;
    if(cnt>5) /*當cnt值大于5時為有效選票*/
    {
    for(j=0;j<10;j++) /*統(tǒng)計有效選票*/
    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個人的選票數(shù)=%d\n", i+1, yy[i]);
    }
    fclose(fp);
    }