您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页全国计算机等级考试三级网络技术南开上机100题(110)

全国计算机等级考试三级网络技术南开上机100题(110)

来源:保捱科技网
几点说明:

1文件太大,只有一段一段上传。

2、每种题目,只用一种解题方法,兰色局部为解题答案,此种方法本人觉得简单理解,不易出错,合适初学者。

3、特别说明:全部解法,本人均上机验证通过。

4、个别南开题如57100题,题目与原书有所不同,是按实际考试的题目所来,并对今年在实际上机中出现的考题,用红色局部表示实际上机题中的注明事项。

题目1

请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠mk个素数存入数组xx传回。

    最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。

    局部源程序存在文件prog1.c中。

    例如:假设输入17 5 则应输出:1923293137

    请勿改动主函数main()和写函数writeDat()的内容。

#include

#include

void readwriteDat();

int isP(int m)

{

int i;

for(i=2;i

   if(m % i==0)return 0;

return 1;

}

void num(int m,int k,int xx[])

{ int s=0;

  for(m=m+1;k>0;m++)

   if(isP(m)) { xx[s++]=m; k--;}

}

main()

{

  int m,n,xx[1000];

  clrscr();

  printf("\\nPlease enter two integers:");

  scanf("%d%d",&m,&n);

  num(m,n,xx);

  for(m=0;m

  printf("%d ",xx[m]);

  printf("\\n");

  readwriteDat();

}

void readwriteDat()

{

int m,n,xx[1000], i;

FILE *rf,*wf;

rf=fopen("in.dat

wf=fopen("out.dat

for(i=0;i<10;i++){

   fscanf(rf,"%d %d",&m,&n);

   num(m,n,xx);

   for(m=0;m

   fprintf(wf,"\\n");

}

fclose(rf);

fclose(wf);

}

     题目2

数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是02468,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b。最后main( )函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

    注意:局部源程序存在文件prog1.c中。

    程序中已定义数组:a[200]b[200],已定义变量:cnt

    请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

#include

#define MAX 200

int a[MAX], b[MAX], cnt = 0 ;

void jsVal()

{ int i,j,qw,bw,sw,gw;

for(i=0;i

    { qw=a[i]/1000; bw=a[i]/100%10;

      sw=a[i]%100/10; gw=a[i]%10;

      if(qw&&qw%2==0&&bw%2==0&&sw%2==0&&gw%2==0) b[cnt++]=a[i];

    }

   for(i=0;i

     for(j=i+1;j

       if(b[i]

}

void readDat()

{

int i ;

FILE *fp ;

fp = fopen("in.dat", "r") ;

for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;

fclose(fp) ;

}

void main()

{

int i ;

readDat() ;

jsVal() ;

printf("满足条件的数=%d\\n", cnt) ;

for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;

printf("\\n") ;

writeDat() ;

}

writeDat()

{

FILE *fp ;

int i ;

fp = fopen("out.dat", "w") ;

fprintf(fp, "%d\\n", cnt) ;

for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\\n", b[i]) ;

fclose(fp) ;

}

★题目3

函数ReadDat( )完成从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中全部小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。

  

    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

    注意:局部源程序存放在文件prog1.c中。

    请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

#include

#include

#include

char xx[50][80] ;

int maxline = 0 ; /* 文章的总行数 */

int ReadDat(void) ;

void WriteDat(void) ;

void StrOR(void)

{int i,righto,j,s,k;

char tem[80];

for(i=0;i

for(j=strlen(xx[i])-1;j>=0;j--)

       { k=0;

memset(tem,0,80);

         if(xx[i][j]=='o')

           {righto=j;

          for(s=righto+1;s

tem[k++]=xx[i][s];

for(s=0;s

if(xx[i][s]!='o')

tem[k++]=xx[i][s];    

strcpy(xx[i],tem);

           }

         else continue;

        }

}

void main()

{

clrscr() ;

if(ReadDat()) {

     printf("数据文件IN.DAT不能翻开!\\n\\007") ;

     return ;

}

StrOR() ;

WriteDat() ;

}

int ReadDat(void)

{

FILE *fp ;

int i = 0 ;

char *p ;

if((fp = fopen("IN.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 ;

clrscr() ;

fp = fopen("OUT5.DAT", "w") ;

for(i = 0 ; i < maxline ; i++) {

     printf("%s\\n", xx[i]) ;

     fprintf(fp, "%s\\n", xx[i]) ;

}

fclose(fp) ;

}

★题目4

函数ReadDat()完成从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的全部单词进行倒排。最后把已处理的字符串〔应不含标点符号〕仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。

    例如:原文:You He Me

                 I am a student.

     结果:Me He You

                 student a am I

    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

    局部源程序存在文件prog1.c中。

    请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。

#include

#include

#include

#include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void);

void WriteDat(void);

void StrOL(void)

{ int i,j,k,s,m,strl;

char str[80];

for(i=0;i

    { strl=strlen(xx[i]);

memset(str,0,80);

    s=k=0;

for(j=strl-1;j>=0;j--)   

    { if(isalpha(xx[i][j])) k++;

     else { for(m=1;m<=k;m++)

str[s++]=xx[i][j+m];

                 k=0;     

            }

           if(!isalpha(xx[i][j]))

str[s++]=' ';

           }

for(m=1;m<=k;m++)

       str[s++]=xx[i][j+m];

str[s]='\\0';    

strcpy(xx[i],str);    }

}

void main()

{

clrscr();

if(ReadDat()){

printf("数据文件IN.DAT不能翻开!\\n\\007");

return;

}

StrOL();

WriteDat();

}

int ReadDat(void)

{

FILE *fp;

int i=0;

char *p;

if((fp=fopen("IN.DAT

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;

clrscr();

fp=fopen("OUT6.DAT

for(i=0;i

     printf("%s\\n",xx[i]);

     fprintf(fp,"%s\\n",xx[i]);

}

fclose(fp);

}

*******************************************************************************

☆题目5〔整数排序题)

在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。

    例:处理前 6012 5099 9012 7025 8088

        处理后 9012 6012 7025 8088 5099

    局部源程序存在文件prog1.c中。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

#include

#include

#include

int aa[200],bb[10];

void jsSort()

{

int i,j,data;

for(i=0;i<199;i++)

for(j=i+1;j<200;j++)    if(aa[i]%1000>aa[j]%1000||aa[i]%1000==aa[j]%1000&&aa[i]

for(i=0;i<10;i++)

    bb[i]=aa[i];

}

void main()

{

readDat();

jsSort();

writeDat();

}

readDat()

{

FILE *in;

int i;

in=fopen("in.dat

for(i=0; i<200; i++) fscanf(in,"%d,",&aa[i]);

fclose(in);

}

writeDat()

{

FILE *out;

int i;

clrscr();

out=fopen("out.dat

for(i=0; i<10; i++){

    printf(" %d",bb[i]);

    fprintf(out,"%d\\n",bb[i]);

}

fclose(out);
☆题目6 正整数排序

在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。

例:处理前 9012 5099 6012 7025 8088

    处理后 5099 8088 7025 6012 9012

    注意:局部源程序已给出。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

#include

#include

#include

int aa[200],bb[10];

void jsSort()

{

int i,j,data;

for(i=0;i<199;i++)

for(j=i+1;j<200;j++)

    if(aa[i]%1000aa[j])

           {data=aa[i];aa[i]=aa[j];aa[j]=data;}

for(i=0;i<10;i++)

    bb[i]=aa[i];

}

void main()

{

readDat();

jsSort();

writeDat();

system("pause");

}

readDat()

{

FILE *in;

int i;

in=fopen("in.dat

for(i=0; i<200; i++) fscanf(in,"%d,",&aa[i]);

fclose(in);

}

writeDat()

{

FILE *out;

int i;

clrscr();

out=fopen("out.dat

for(i=0; i<10; i++){

printf("i=%d,%d\\n",i+1,bb[i]);

fprintf(out,"%d\\n",bb[i]);

}

fclose(out);

}

***************************************************************************

☆题目7〔结构体操作题)

在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五局部组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,假设产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。

    局部源程序存在文件prog1.c中。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

#include

#include

#include

#include

#include

#define MAX 100

typedef struct{

char dm[5]; /*产品代码*/

char mc[11]; /*产品名称*/

int dj;       /*单价*/

int sl;       /*数量*/

long je;      /*金额*/

}PRO;

PRO sell[MAX];

void ReadDat();

void WriteDat();

void SortDat()

{int i,j;

PRO xy;

for(i=0;i<99;i++)

for(j=i+1;j<100;j++)

    if(strcmp(sell[i].dm,sell[j].dm)<0||strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je

      {xy=sell[i]; sell [i]=sell[j]; sell[j]=xy;}

}

void main()

{

memset(sell,0,sizeof(sell));

ReadDat();

SortDat();

WriteDat();

}

void ReadDat()

{

FILE *fp;

char str[80],ch[11];

int i;

fp=fopen("IN.DAT

for(i=0;i<100;i++){

    fgets(str,80,fp);

    memcpy(sell[i].dm,str,4);

    memcpy(sell[i].mc,str+4,10);

    memcpy(ch,str+14,4);ch[4]=0;

    sell[i].dj=atoi(ch);

    memcpy(ch,str+18,5);ch[5]=0;

    sell[i].sl=atoi(ch);

    sell[i].je=(long)sell[i].dj*sell[i].sl;

}

fclose(fp);

}

void WriteDat(void)

{

FILE *fp;

int i;

fp=fopen("OUT6.DAT

for(i=0;i<100;i++){

printf("%s %s %4d %5d %5d\\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

fprintf(fp,"%s %s %4d %5d %5d\\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

}

fclose(fp);

}

******************************************************************************

★题目8〔字符替换题)

函数ReadDat()完成从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的全部字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS1.DAT中。

  替代关系:f(p)=p*11 mod 256〔p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值〕,如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代〔注意中间变量用无符号整型〕,局部源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

#include

#include

#include

#include

unsigned char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void);

void WriteDat(void);

void encryptChar()

{ int i,j;

for(i=0;i

     for(j=0;j

       if(xx[i][j]*11%256<=32||xx[i][j]*11%256>130) continue;

       else xx[i][j]=xx[i][j]*11%256;

}

void main()

{

clrscr();

if(ReadDat()){

printf("数据文件ENG.IN不能翻开!\\n\\007");

return;

}

encryptChar();

WriteDat();

}

int ReadDat(void)

{

FILE *fp;

int i=0;

unsigned char *p;

if((fp=fopen("eng.in

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;

fp=fopen("ps1.dat

for(i=0;i

    printf("%s\\n",xx[i]);

    fprintf(fp,"%s\\n",xx[i]);

}

fclose(fp);

}

******************************************************************************

★☆题目9〔字符串排序题)

函数ReadDat()完成从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT2.DAT中。

    例:原文:dAe,BfC.

               CCbbAA

        结果:fedCBA.

               bbCCAA

    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

    局部源程序存在文件prog1.c中。

    请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。

#include

#include

#include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void);

void WriteDat(void);

void SortCharD(void)

{int i,j,k,strl;

char ch;

for(i=0;i

{strl=strlen(xx[i]);

    for(j=0;j

     for(k=j+1;k

       if(xx[i][j]

         {ch=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=ch;}

}

}

void main()

{

clrscr();

if(ReadDat()){

printf("数据文件IN.DAT不能翻开!\\n\\007");

return;

}

SortCharD();

WriteDat();

}

int ReadDat(void)

{

FILE *fp;

int i=0;

char *p;

if((fp=fopen("IN.DAT

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;

fp=fopen("OUT2.DAT

for(i=0;i

printf("%s\\n",xx[i]);

fprintf(fp,"%s\\n",xx[i]);

}

fclose(fp);

}

*****************************************************************************

★☆题目10〔替换字符题)

函数ReadDat()完成从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConvertCharA(),其函数的功能是:以行为单位把字符串中的全部小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT1.DAT中。

    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

    局部源程序存在文件prog1.c中。

    请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。

#include

#include

#include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void);

void WriteDat(void);

void ConvertCharA(void)

{ int i,j;

for(i=0;i

     { for(j=0;j

        if(xx[i][j]=='z') xx[i][j]='a';

         else if(xx[i][j]>='a'&&xx[i][j]<='y') xx[i][j]+=1;

     }

}

void main()

{

clrscr();

if(ReadDat()){

printf("数据文件IN.DAT不能翻开!\\n\\007");

return;

}

ConvertCharA();

WriteDat();

}

int ReadDat(void)

{

FILE *fp;

int i=0;

char *p;

if((fp=fopen("IN.DAT

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;

clrscr();

fp=fopen("OUT1.DAT

for(i=0;i

    printf("%s\\n",xx[i]);

    fprintf(fp,"%s\\n",xx[i]);

}

fclose(fp);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务