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

字號(hào):

1.函數(shù)ReadDat()的功能是實(shí)現(xiàn)從文件IN5.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中。請(qǐng)編制函數(shù)ConvertCharA(),該函數(shù)的功能是:以行為單位把字符串中的所有小寫(xiě)字母改寫(xiě)成該字母的下一個(gè)字母,如果是字母z,則改寫(xiě)成字母a。大寫(xiě)字母仍為大寫(xiě)字母,小寫(xiě)字母仍為小寫(xiě)字母,其他字符不變。把已處理的字符串仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件OUT5.DAT中。
    例如,原文:Adb.Bcdza
    abck.LLhj
    結(jié)果:Aec.Bdeab
    bcdl.LLik
    原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符,含標(biāo)點(diǎn)符號(hào)和空格。
    注意:部分源程序已給出。
    請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫(xiě)函數(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; /*存儲(chǔ)字符串的長(zhǎng)度*/
    for(i=0;i
    {
    str=strlen(xx[i]); /*求得當(dāng)前行的字符串的長(zhǎng)度*/
    for(j=0;j
    if(xx[i][j]>='a' && xx[i][j]<='z') /*如果是小寫(xiě)字母*/
    if(xx[i][j]=='z')
    xx[i][j]='a'; /*如果是小寫(xiě)字母z,則改寫(xiě)成字母a*/
    else
    xx[i][j]+=1; /*其他的小寫(xiě)字母則改寫(xiě)為該字母的下一個(gè)字母*/
    }
    }
    void main()
    {
    system("CLS");
    if(ReadDat())
    {
    printf("數(shù)據(jù)文件IN5.DAT不能打開(kāi)!\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個(gè)正整數(shù),且每個(gè)數(shù)均在1000至9999之間。函數(shù)readDat()的功能是讀取這200個(gè)數(shù)存放到數(shù)組aa中。請(qǐng)編制函數(shù)jsSort(),該函數(shù)的功能是:要求按每個(gè)數(shù)的后3位的大小進(jìn)行降序排列,將排序后的前10個(gè)數(shù)存入數(shù)組b中,如果數(shù)組b中出現(xiàn)后3位相等的數(shù),則對(duì)這些數(shù)按原始4位數(shù)據(jù)進(jìn)行升序排列。最后調(diào)用函數(shù)writeDat()把結(jié)果bb輸出到文件OUT6.DAT中。
    例如:處理前 9012 5099 6012 7025 8088
    處理后 5099 8088 7025 6012 9012
    注意:部分源程序已給出。
    請(qǐng)勿改動(dòng)主函數(shù)main()、讀函數(shù)readDat()和寫(xiě)函數(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ù)交換時(shí)的暫存變量*/
    for(i=0;i<199;i++) /*用選擇法對(duì)數(shù)組進(jìn)行排序*/
    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ù)的值進(jìn)行升序排序*/
    {
    temp=aa[i];
    aa[i]=aa[j];
    aa[j]=temp;
    }
    }
    for(i=0;i<10;i++) /*將排序后的前10個(gè)數(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) ;
    }