<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            試題

            3月三級網絡技術上機題及答案

            時間:2025-05-18 23:31:35 試題 我要投稿
            • 相關推薦

            2016年3月三級網絡技術上機題及答案

              1.函數ReadDat( )的功能是實現從文件IN73.DAT中讀取一篇英文文章存入到字符串數組xx中。請編制函數SortCharA( ),該函數的功能是:以行為單位對字符按從小到大的順序進行排序,排序后的結果仍按行重新存入字符串數組xx中。最后調用函數WriteDat( )把結果xx輸出到文件OUT73.DAT中。

              例如,原文:dAe,BfC

              CCbbAA

              結果:ABCdef

              AACCbb

              原始數據文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。

              注意:部分源程序已給出。

              請勿改動主函數main( )、讀函數ReadDat( )和寫函數WriteDat( )的內容。

              試題程序:

              #include

              #include

              #include

              char xx[50][80];

              int maxline=0;

              int ReadDat(void);

              void WriteDat(void);

              void SortCharA()

              {

              }

              void main()

              {

              system("CLS");

              if (ReadDat())

              {

              printf("數據文件IN73.DAT不能打開!n07");

              return;

              }

              SortCharA();

              WriteDat();

              }

              int ReadDat(void)

              {

              FILE *fp;

              int i=0;

              char *p;

              if((fp=fopen("IN73.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("OUT73.DAT","w");

              for(i=0;i

              {

              printf("%sn",xx[i]);

              fprintf(fp,"%sn",xx[i]);

              }

              fclose(fp);

              }

              【答案】

              void SortCharA()

              {

              int i,j,k; /*定義循環控制變量*/

              int str; /*存儲字符串的長度*/

              char temp; /*數據交換時的暫存變量*/

              for (i=0;i

              {

              str=strlen(xx[i]); /*求得當前行的字符串長度*/

              for(j=0;j

              for(k=j+1;k<>

              if (xx[i][j]>xx[i][k])

              {

              temp=xx[i][j];

              xx[i][j]=xx[i][k];

              xx[i][k]=temp;

              }

              }

              }

              【解析】本題主要考查數組的訪問及排序問題。

              通過雙重循環結構逐行獲取字符進行處理,首先使用字符串處理函數strlen()來求出每一行的字符串長度。然后運用選擇法逐行對字符按照從小到大的順序進行排序。

              2.編寫一個函數findStr( ),該函數統計一個長度為2的字符串在另一個字符串中出現的次數。例如,假定輸入的字符串為"asd asasdfg asd as zx67 asd mklo",子字符串為"as",函數返回值是6。

              函數ReadWrite( )的功能是實現從文件in68.dat中讀取兩個字符串,并調用函數findStr(),最后把結果輸出到文件out68.dat中。

              注意:部分源程序已給出。

              請勿改動主函數main() 和其他函數中的任何內容,僅在函數 findStr()的花括號中填入你所編寫的若干語句。

              試題程序:

              #include

              #include

              #include

              void ReadWrite();

              int findStr(char *str,char *substr)

              {

              }

              void main()

              {

              char str[81],substr[3];

              int n;

              system("CLS");

              printf("輸入原字符串:");

              gets(str);

              printf("輸入子字符串:");

              gets(substr);

              puts(str);

              puts(substr);

              n=findStr(str,substr);

              printf("n=%dn",n);

              ReadWrite();

              }

              void ReadWrite()

              {

              char ch,str[81],substr[3];

              int n,len,i=0;

              FILE *rf,*wf;

              rf=fopen("in68.dat","r");

              wf=fopen("out68.dat","w");

              while(i<>

              {

              fgets(str,80,rf);

              fgets(substr,10,rf);

              len=strlen(substr)-1;

              ch=substr[len];

              if(ch=='n'||ch==0x1a)

              substr[len]=0;

              n=findStr(str,substr);

              fprintf(wf,"%dn",n);

              i++;

              }

              fclose(rf);

              fclose(wf);

              }【答案】

              int findStr(char *str,char *substr)

              {

              int n=0; /*定義計數器變量,統計出現次數*/

              char *p,*r; /*定義指針變量來分別指向兩個字符串*/

              while(*str) /*如果字符串沒有結束,則一直循環下去*/

              {

              p=str; /*指針p指向字符串首地址*/

              r=substr; /*指針r指向子字符串首地址*/

              while(*r) /*若子字符串沒有結束,則循環繼續*/

              if(*r==*p)

              /*如果子字符串的第一個字符等于字符串中的該字符,則繼續比較下一個字符*/

              {

              r++;

              p++;

              }

              else

              break; /*否則退出循環*/

              if(*r=='') /*如果子字符串在字符串中出現了一次*/

              n++; /*則n加1,進行統計*/

              str++; /*指向字符串中的下一個字符*/

              }

              return n; /*返回統計結果n*/

              }

              【解析】本題主要考查了指針的相關操作。

              首先,通過外層的while循環取字符串的每一個字符,取完字符串的所有字符之后,循環才會終止。用兩個字符型指針分別指向兩個字符串。逐個將字符串的字符跟子字符串的字符對比,如果相等,則兩個指針都自加1,分別指向兩個串的下一個字符。若不相等,則主串的指針加1,子串的指針重新指向起始位置,繼續比較下一個字符。

            【3月三級網絡技術上機題及答案】相關文章:

            2016最新三級網絡技術上機題及答案05-06

            2016年三級網絡技術上機題及答案02-28

            2016計算機三級網絡技術上機題及答案07-28

            2017計算機三級《網絡技術》上機操作題及答案07-20

            2016計算機考試三級網絡技術上機題及答案03-07

            2016最新三級網絡技術上機試題及答案02-20

            2016全國三級網絡技術上機試題及答案06-05

            計算機三級網絡技術上機題庫及答案05-13

            2016年3月計算機三級網絡技術上機題及答案12-22

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看