| 网站首页 | 考研信息中心 | 考研资料下载 | 考研论坛 | 考研专业试题 | 2008考研招生简章 | 考研图书 | 留言板 | 考研图片中心 | 

设为首页
加入收藏
联系我们

您现在的位置: 考研信息网 >> 考研信息中心 >> 计算机类考试首页 >> Linux认证考试 >> 最新资讯 >> 正文 用户登录 新用户注册
全国计算机等级考试三级C语言上机题71-80)          【字体:
全国计算机等级考试三级C语言上机题71-80)
作者:佚名    文章来源:本站原创    点击数:    更新时间:2006-4-6

本站推荐Firefox浏览器,有效阻止病毒和垃圾弹出[正版免费下载]

★题目71
函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
  条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
  例如:位置   0 1 2 3 4 5 6 7 8
     源字符串 a b c d h g f e
 1 2 3 4 9 8 7 6 5
 则处理后字符串 d c b a e f g h
 4 3 2 1 9 5 6 7 8
  部分源程序存在文件prog1.c中。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include
#include
#include

char xx[20][80];

void jsSort()
{int i,j,k,strl,half;
 char ch;
 for(i=0;i<20;i++)
 { strl=strlen(xx[i]);
 half=strl/2;
 for(j=0;j for(k=j+1;k if(xx[i][j] if(strl%2) half++;
 for(j=half;j for(k=j+1;k if(xx[i][j]>xx[i][k]) {ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}
 }
}


void main()
{
 readDat();
 jsSort();
 writeDat();
}

readDat()
 {
 FILE *in;
 int i=0;
 char *p;

 in=fopen("in.dat","r");
 while(i<20&&fgets(xx[i],80,in)!=NULL){
 p=strchr(xx[i],'\n');
 if(p)*p=0;
 i++;
 }
 fclose(in);
 }

writeDat()
{
 FILE *out;
 int i;

 clrscr();
 out=fopen("out.dat","w");
 for(i=0;i<20;i++){
 printf("%s\n",xx[i]);
 fprintf(out,"%s\n",xx[i]);
 }
 fclose(out);
}

**************************************************************************
题目72
已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后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,thou,hun,ten,data,ab,cd;
 for(i=0;i<200;i++)
 {thou=a[i]/1000; hun=a[i]/100%10;
 ten=a[i]%100/10; data=a[i]%10;
 ab=10*data+thou; cd=10*hun+ten;
 if((ab%9==0||cd%9==0)&&ab%2==0&&cd%2==0&&hun!=0&&data!=0)
 {b[cnt]=a[i];cnt++;}
 }
 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) ;
}

***********************************************************************
★题目73
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConverCharD(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其它字符不变。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT4.DAT中。
 例:原文:Adb.Bcdza
 abck.LLhj
 结果:Aca.Bbcyz
 zabj.LLgi
 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。
#include
#include
#include

char xx[50][80];
int maxline=0;/*文章的总行数*/

int ReadDat(void);
void WriteDat(void);

void ConvertCharD(void)
{ int i,j;
 for(i=0;i { for(j=0;j if(xx[i][j]=='a') xx[i][j]='z';
 else if(xx[i][j]>='b'&&xx[i][j]<='z') xx[i][j]-=1;
 }
}

void main()
 {
 clrscr();
 if(ReadDat()){
 printf("数据文件IN.DAT不能打开!\n\007");
 return;
 }
 ConvertCharD();
 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("OUT4.DAT","w");
 for(i=0;i printf("%s\n",xx[i]);
 fprintf(fp,"%s\n",xx[i]);
 }
 fclose(fp);
}

*********************************************************************
★题目74
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,低位补0,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT7.DAT中。
 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。
#include
#include
#include

char xx[50][80];
int maxline=0;/*文章的总行数*/

int ReadDat(void);
void WriteDat(void);

void StrCharJL(void)
{ int i,j;
 char c;
 for(i=0;i for(j=0;j { c=xx[i][j]<<4;
 if(!(c<=32||c>100)) xx[i][j]+=c;
 }
}

void main()
 {
 clrscr();
 if(ReadDat()){
 printf("数据文件IN.DAT不能打开!\n\007");
 return;
 }
 StrCharJL();
 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("OUT7.DAT","w");
 for(i=0;i printf("%s\n",xx[i]);
 fprintf(fp,"%s\n",xx[i]);
 }
 fclose(fp);
}
************************************************************************
★题目75
在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到
文件out.dat中。
 部分源程序存在文件prog1.c中。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include
#include
#include

typedef struct{
 int x1,x2,x3;
}data;

data aa[200],bb[200];

int jsSort()
{ int i,j,cnt=0;
 data xy;
 for(i=0;i<200;i++)
 if(aa[i].x1>(aa[i].x2+aa[i].x3)) bb[cnt++]=aa[i];
 for(i=0;i for(j=i+1;j if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) { xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;}
 return cnt;
}

void main()
{
 int count;

 readDat();
 count=jsSort(); /*返回满足条件的个数*/
 writeDat(count);
}

readDat()
 {
 FILE *in;
 int i;
 in=fopen("in.dat","r");
 for(i=0; i<200; i++)
 fscanf(in,"%d %d %d",&aa[i].x1,&aa[i].x2,&aa[i].x3);
 fclose(in);
 }

writeDat(int count)
{
 FILE *out;
 int i;

 clrscr();
 out=fopen("out.dat","w");
 for(i=0; i printf("%d,%d,%d 第一个数+第三个数=%d\n",bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x1+bb[i].x3);
 fprintf(out,"%d %d %d\n",bb[i].x1,bb[i].x2,bb[i].x3);
 }
 fclose(out);
}


*****************************************************************************
★题目76 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后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,thou,hun,ten,data,ab,cd;
 for(i=0;i {thou=a[i]/1000; hun=a[i]/100%10;
 ten=a[i]%100/10; data=a[i]%10;
 ab=10*data+thou; cd=10*hun+ten;
 if((ab%2!=cd%2)&&((ab%17==0||cd%17==0)&&ab>=10&&cd>=10))
 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) ;
}



****************************************************************************
★题目77已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数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,thou,hun,ten,data;
 for(i=0;i {thou=a[i]/1000; hun=a[i]/100%10;
 ten=a[i]%100/10; data=a[i]%10;
 if((thou+ten==hun+data)&&a[i]%2==0) b[cnt++]=a[i];
 }
 for(i=0;i for(j=i+1;j if(b[i]>b[j]) {thou=b[i];b[i]=b[j];b[j]=thou;}
}

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) ;
}


****************************************************************************
★题目78已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数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,thou,hun,ten,data;
 for(i=0;i {thou=a[i]/1000; hun=a[i]/100%10;
 ten=a[i]%100/10; data=a[i]%10;
 if(thou>=hun&&hun>=ten&&ten>=data&&a[i]%2) b[cnt++]=a[i];
 }
 for(i=0;i for(j=i+1;j if(b[i]>b[j]) {thou=b[i];b[i]=b[j];b[j]=thou;}
}

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) ;
}


***********************************************************************
★题目79请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()和输出数据函数writeDAT()的内容。
#include
#include

void countValue(int *a,int *n)
{ int i;
 *n=0;
 for(i=1;i<=1000;i++)
 if(i%7==0&&i%11||i%7&&i%11==0)
 a[(*n)++]=i;
}

main()
{
 int aa[1000],n,k;

 clrscr();
 countValue(aa,&n);
 for(k=0;k if((k+1)%10==0)printf("\n");
 else printf("%5d",aa[k]);
 writeDAT();
}

writeDAT()
{
 int aa[1000],n,k;
 FILE *fp;

 fp=fopen("out19.dat","w");
 countValue(aa,&n);
 for(k=0;k if((k+1)%10==0) fprintf(fp,"\n");
 else fprintf(fp,"%5d",aa[k]);
fprintf(fp,"\n");
 fclose(fp);
}


*******************************************************************
题目80已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。
 例如:1239,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
 8129,9-8-1-2<0,则该数不满足条件计算平均值pjz2。
 部分源程序存在文件prog1.c中。
 程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2
 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;

jsValue()
{int i,j,thou,hun,ten,data,n=0;
 for(i=0;i<300;i++)
 {thou=a[i]/1000; hun=a[i]/100%10;
ten=a[i]%100/10; data=a[i]%10;
 if(data-thou-hun-ten>0) { cnt++; pjz1+=a[i];}
 else { n++; pjz2+=a[i];}
 }
 if(cnt==0) pjz1=0;
 else pjz1/=cnt;
 if(n==0) pjz2=0;
 else pjz2/=n;
}

main()
{
 int i;

 readDat();
 jsValue();
 writeDat();
 printf("cnt=%d\n满足条件的平均值pzj1=%7.2f\n不满足条件的平均值pzj2=%7.2f\n",cnt,pjz1,pjz2);
}

readDat()
{
 FILE *fp;
 int i;
 fp=fopen("in.dat","r");
 for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);
 fclose(fp);
}

writeDat()
{
 FILE *fp;
 int i;
 fp=fopen("out.dat","w");
 fprintf(fp,"%d\n%7.2f\n%7.2f\n",cnt,pjz1,pjz2);
 fclose(fp);
}


考研信息网在线版权与免责声明

1、 凡本站注明“稿件来源:考研信息网(sanwww.com)”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、

网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时

必须注明"稿件来源:sanwww.com",违者本站将依法追究责任。

2、本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着

赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

3、考研试题、各种考试试题以及考试信息转载于各大bbs论坛,就其真实性本站无法证实,并不意味着赞同其观点。

如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

文章录入:san1    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
           最新热点        最新推荐        相关文章
    没有相关文章
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)