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

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

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

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

☆题目81
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。
 例如:7153,7+1=5+3,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+1<>2+9,则该数不满足条件计算平均值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,thou,hun,ten,data,n=0;
 for(i=0;i<300;i++)
 {thou=a[i]/1000; hun=a[i]%1000/100;
 ten=a[i]%100/10; data=a[i]%10;
 if(thou+hun==ten+data) {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);
}

************************************************************************
★题目82
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果cnt,pjz1,pjz2输
出到out.dat文件。
 例如:5591是素数,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
 9812是非素数,则该数不满足条件计算平均值pjz2。
 部分源程序存在文件prog1.c中。
 程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2
 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;

int isP(int m)
{int i;

 for(i=2;i if(m%i==0)return 0;
 return 1;
}

jsValue()
{int i;
 for(i=0;i<300;i++)
 if(isP(a[i])) {pjz1+=a[i];cnt++;}
 else pjz2+=a[i];
 if(cnt==0) pjz1=0;
 else pjz1/=cnt;
 if(300-cnt==0) pjz2=0;
 else pjz2/=(300-cnt);
}

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);
}


***********************************************************************
☆题目83
请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
 计算方差的公式如下:
 N 2
 totfc=1/N ∑ (xx[i]-ave1)
 i=1
 设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。
 原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()和输出数据函数writeDat()的内容。
#include
#include
#include
#define MAX 1000

int xx[MAX],odd=0,even=0;
double ave1=0.0,ave2=0.0,totfc=0.0;
void WriteDat(void);

int ReadDat(void)
{
 int i;
 FILE *fp;

 if((fp=fopen("IN.DAT","r"))==NULL) return 1;

/*********编制函数ReadDat()的部分************/
for(i=0;i {fscanf(fp,"%d,",&xx[i]);
 if((i+1)%10==0)
 fscanf(fp,"\n");
 }
/*******************************************/

 fclose(fp);
 return 0;
}

void Compute(void)
{ int i,yy[MAX];
 for(i=0;i yy[i]=0;
 for(i=0;i if(xx[i]%2) { yy[odd++]=xx[i]; ave1+=xx[i];}
 else { even++; ave2+=xx[i];}
 if(odd==0) ave1=0;
 else ave1/=odd;
 if(even==0) ave2=0;
 else ave2/=even;
 for(i=0;i totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;
}

void main()
{
 int i;

 for(i=0;i if(ReadDat()){
 printf("数据文件IN.DAT不能打开!\007\n");
 return;
}
 Compute();
 printf("ODD=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",odd,ave1,ave2,totfc);
 WriteDat();
}

void WriteDat(void)
{
 FILE *fp;
 int i;

 fp=fopen("OUT.DAT","w");
 fprintf(fp,"%d\n%f\n%f\n%f\n",odd,ave1,ave2,totfc);
 fclose(fp);
}

*************************************************************************
☆题目84
现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。
#include

char xx[100][11];
int yy[10];
int ReadDat(void);
void WriteDat(void);

void CountRs(void)
{ int i,j,count;
 for(i=0;i<100;i++)
 { count=0;
 for(j=0;j<10;j++)
 if(xx[i][j]=='1') count++;
 if(count>5) continue;
 for(j=0;j<10;j++)
 if(xx[i][j]=='1') yy[j]++;
 }
}


void main()
 {
 int i;

 for(i=0;i<10;i++)yy[i]=0;
 if(ReadDat()){
 printf("选票数据文件IN.DAT不能打开!\n\007");
 return;
 }
 CountRs();
 WriteDat();
}

int ReadDat(void)
{
 FILE *fp;
 int i;

 if((fp=fopen("IN.DAT","r")) == NULL) return 1;
 for(i=0;i<100;i++){
 if(fgets(xx[i],12,fp)==NULL)return 1;
 xx[i][10]='\0';
 }

fclose(fp);
return 0;
}

void WriteDat(void)
{
 FILE *fp;
 int i;

 fp=fopen("OUT.DAT","w");
 for(i=0;i<10;i++){
 fprintf(fp,"%d\n",yy[i]);
 printf("第%d个人的选票数=%d\n",i+1,yy[i]);
 }
 fclose(fp);
}


**************************************************************************
☆题目85
已知数据文件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(data-thou-hun-ten>=0&&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) ;
}


**********************************************************************
题目86
已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组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]%1000/100;
 ten=a[i]%100/10; data=a[i]%10;
 ab=10*thou+ten; cd=10*data+hun;
 if((ab-cd)>0&&(ab%2!=1&&ab%5==0)&&cd%2==1&&ab>=10&&cd>=10)
 {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) ;
}


******************************************************************
☆题目87已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到out.dat文件。
 例如:6712,6+2=7+1,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+9<>1+2,则该数不满足条件计算平均值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,gw,sw,bw,qw,cnt2=0;
 for(i=0;i<300;i++)
 {gw=a[i]%10; sw=a[i]/10%10;
 bw=a[i]/100%10; qw=a[i]/1000;
 if((qw+gw)==(sw+bw)) { cnt++;pjz1+=a[i]; }
 else { cnt2++;pjz2+=a[i]; }
 }
 if(cnt==0) pjz1=0;
 else pjz1/=cnt;
 if(cnt2==0) pjz2=0;
 else pjz2/=cnt2;
}


main()
{
 int i;

 readDat();
 jsValue();
 writeDat();
 printf("cnt=%d\n满足条件的平均值pzjl=%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);
}


****************************************************
题目88
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharA(),其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT1.DAT中。
 例:原文:dAe,BfC.
 CCbbAA
 结果:,.ABCdef
 AACCbb
 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。
#include
#include
#include

char xx[50][80];
int maxline=0;/*文章的总行数*/

int ReadDat(void);
void WriteDat(void);

void SortCharA(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]>xx[i][k])
 {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;
 }
 SortCharA();
 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("OUT1.DAT","w");
 for(i=0;i printf("%s\n",xx[i]);
 fprintf(fp,"%s\n",xx[i]);
 }
 fclose(fp);
}


题目89
已知数据文件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,gw,sw,bw,qw;
 for(i=0;i {gw=a[i]%10; sw=a[i]/10%10;
 bw=a[i]/100%10; qw=a[i]/1000;
 if((qw+gw)==(sw+bw)&&a[i]%2) b[cnt++]=a[i];
 }
 for(i=0;i for(j=i+1;j if(b[i]>b[j]) { qw=b[i]; b[i]=b[j]; b[j]=qw;}
}

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) ;
}

*************************************************************************
★题目90 下列程序的功能是:将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValue()实现此功能,最后调用writeDat()函数将新序列输出到文件out.dat中。
 说明:在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。
 例:序列{6,8,9,1,2,5,4,7,3}
 经重排后成为{3,4,5,2,1,6,8,9,7}
 部分源程序存在文件prog1.c中。
 请勿改动主函数main()和写函数writeDat()的内容。
#include

jsValue(int a[10][9])
{ int i,j,k,val,num;
 for(i=0;i<10;i++)
 { val=a[i][0];
 for(j=0;j<9;j++)
 if(a[i][j] { num=a[i][j];
 for(k=j;k>0;k--)
 a[i][k]=a[i][k-1];
 a[i][0]=num;
 }
 }
}

main()
{
 int a[10][9]={{6,8,9,1,2,5,4,7,3},
 {3,5,8,9,1,2,6,4,7},
 {8,2,1,9,3,5,4,6,7},
 {3,5,1,2,9,8,6,7,4},
 {4,7,8,9,1,2,5,3,6},
 {4,7,3,5,1,2,6,8,9},
 {9,1,3,5,8,6,2,4,7},
 {2,6,1,9,8,3,5,7,4},
 {5,3,7,9,1,8,2,6,4},
 {7,1,3,2,5,8,9,4,6},
 };
 int i,j;
 jsValue(a);
 for(i=0;i<10;i++){
 for(j=0;j<9;j++) {
 printf("%d",a[i][j]);
 if(j<=7)printf(",");
 }
 printf("\n");
 }
 writeDat(a);
}

writeDat(int a[10][9])
{
 FILE *fp;
 int i,j;

 fp=fopen("out.dat","w");
 for(i=0;i<10;i++){
 for(j=0;j<9;j++){
 printf("%d",a[i][j]);
 fprintf(fp,"%d",a[i][j]);
 if(j<=7) fprintf(fp,",");
 }
 printf("\n");
 fprintf(fp,"\n");
}
 fclose(fp);
}

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

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

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

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

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

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

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

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

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

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
           最新热点        最新推荐        相关文章
    全国计算机等级考试三级C语言上机题
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)