计算机等级考试三级编程题及答案2Word格式.docx

上传人:b****5 文档编号:16343108 上传时间:2022-11-23 格式:DOCX 页数:21 大小:26.84KB
下载 相关 举报
计算机等级考试三级编程题及答案2Word格式.docx_第1页
第1页 / 共21页
计算机等级考试三级编程题及答案2Word格式.docx_第2页
第2页 / 共21页
计算机等级考试三级编程题及答案2Word格式.docx_第3页
第3页 / 共21页
计算机等级考试三级编程题及答案2Word格式.docx_第4页
第4页 / 共21页
计算机等级考试三级编程题及答案2Word格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

计算机等级考试三级编程题及答案2Word格式.docx

《计算机等级考试三级编程题及答案2Word格式.docx》由会员分享,可在线阅读,更多相关《计算机等级考试三级编程题及答案2Word格式.docx(21页珍藏版)》请在冰豆网上搜索。

计算机等级考试三级编程题及答案2Word格式.docx

/*文件读取结束,则退出*/

}

fclose(fp);

return0;

}

voidCompute(void)

inti;

/*循环控制变量*/

1000;

i++)/*依次取每个数*/

if(xx[i]%2!

=0)

odd++;

/*求出xx中奇数的个数odd*/

else

even++;

/*求出xx中偶数的个数even*/

aver+=xx[i];

/*求出xx中元素的总和*/

}

aver/=MAX;

/*求出xx中元素的平均值*/

i++)

totfc+=(xx[i]-aver)*(xx[i]-aver)/MAX;

voidmain()

inti;

MAX;

xx[i]=0;

if(ReadDat())

printf("

数据文件IN.DAT不能打开!

\007\n"

return;

Compute();

printf("

ODD=%d\nEVEN=%d\nAVER=%lf\nTOTFC=%lf\n"

odd,even,aver,totfc);

WriteDat();

voidWriteDat(void)

fp=fopen("

OUT.DAT"

w"

fprintf(fp,"

%d\n%d\n%lf\n%lf\n"

2.(42)

请编写函数voidcountValue(int*a,int*n),它的功能是:

求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。

voidwriteDAT();

voidcountValue(int*a,int*n)

/*定义循环控制变量*/

*n=0;

/*初始化计数器变量*/

for(i=1;

=1000;

i++)/*在这个范围内寻找符合条件的数*/

if((i%7==0&

&

i%11!

=0)||(i%7!

=0&

i%11==0))

/*如果当前的数可以被7整除而不可以被11整除,或者可以被11整除而不可以被7整除*/

*a=i;

/*保存符合条件的数*/

*n=*n+1;

/*统计个数*/

a++;

voidmain()

intaa[1000],n,k;

system("

CLS"

countValue(aa,&

n);

for(k=0;

k<

n;

k++)

if((k+1)%10==0)

%5d"

aa[k]);

elseprintf("

writeDAT();

voidwriteDAT()

out.dat"

if((k+1)%10==0)

elsefprintf(fp,"

3.(59)

函数readDat()是从文件03in.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

charxx[20][80];

voidreadDat();

voidwriteDat();

voidjsSort()

inti,j,k;

intstr,half;

/*定义存储字符串长度的变量*/

chartemp;

/*定义数据交换时的暂存变量*/

20;

i++)/*逐行对数据进行处理*/

str=strlen(xx[i]);

/*求各行字符串的总长度*/

half=str/2;

/*求总长度的一半*/

half-1;

j++)/*左边部分按字符的ASCII值降序排序*/

for(k=j+1;

half;

if(xx[i][j]<

xx[i][k])

{

temp=xx[i][j];

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

xx[i][k]=temp;

}

if(str%2==1)/*如果原字符串长度为奇数,则跳过最中间的字符,使之不参加排序*/

half++;

for(j=half;

str-1;

j++)/*右边部分按字符的ASCII值升序排序*/

str;

if(xx[i][j]>

{

readDat();

jsSort();

writeDat();

voidreadDat()

FILE*in;

inti=0;

char*p;

in=fopen("

in.dat"

while(i<

20&

fgets(xx[i],80,in)!

=NULL)

p=strchr(xx[i],'

\n'

if(p)

*p=0;

i++;

fclose(in);

voidwriteDat()

FILE*out;

out=fopen("

i++)

%s\n"

xx[i]);

fprintf(out,"

fclose(out);

4.(06)

在文件04IN.DAT中有200个正整数,且每个数均在1000至9999之间。

函数readDat()的功能是读取这200个数存放到数组aa中。

请编制函数jsSort(),该函数的功能是:

要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组bb中,如果出现后3位相等的数,则对这些数按原始4位数据进行升序排列。

最后调用函数writeDat()把结果bb输出到文件OUT.DAT中。

处理前90125099601270258088

  处理后50998088702560129012

#include<

intaa[200],bb[10];

inttemp;

199;

i++)/*用选择法对数组进行排序*/

for(j=i+1;

200;

if(aa[i]%1000<

aa[j]%1000)/*按照每个数的后3位大小进行降序排序*/

temp=aa[i];

aa[i]=aa[j];

aa[j]=temp;

elseif(aa[i]%1000==aa[j]%1000)/*如果后3位数相等*/

if(aa[i]>

aa[j])/*则要按原4位数的值进行升序排序*/

{

aa[i]=aa[j];

aa[j]=temp;

}

i++)/*将排序后的前10个数存入数组b中*/

bb[i]=aa[i];

readDat();

jsSort();

writeDat();

FILE*in;

inti;

in=fopen("

"

);

for(i=0;

i<

200;

i++)fscanf(in,"

&

aa[i]);

fclose(in);

FILE*out;

out=fopen("

for(i=0;

10;

i++)

i=%d,%d\n"

i+1,bb[i]);

fprintf(out,"

%d\n"

bb[i]);

fclose(out);

5.(18)

编写一个函数findStr(),该函数统计一个长度为2的字符串在另一个字符串中出现的次数。

例如,假定输入的字符串为"

asdasasdfgasdaszx67asdmklo"

,子字符串为"

as"

,函数返回值是6。

函数ReadWrite()的功能是实现从文件05in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。

voidReadWrite();

intfindStr(char*str,char*substr)

intn=0;

/*定义计数器变量,统计出现次数*/

char*p,*r;

/*定义指针变量来分别指向两个字符串*/

while(*str)/*如果字符串没有结束,则一直循环下去*/

p=str;

/*指针p指向字符串首地址*/

r=substr;

/*指针r指向子字符串首地址*/

while(*r)/*若子字符串没有结束,则循环继续*/

if(*r==*p)/*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符*/

r++;

p++;

else

break;

/*否则退出循环*/

if(*r=='

\0'

)/*如果子字符串在字符串中出现了一次*/

n++;

/*则n加1,进行统计*/

str++;

/*指向字符串中的下一个字符*/

returnn;

/*返回统计结果n*/

charstr[81],substr[3];

intn;

输入原字符串:

"

gets(str);

输入子字符串:

gets(substr);

puts(str);

puts(substr);

n=findStr(str,substr);

n=%d\n"

n);

ReadWrite();

voidReadWrite()

charch,str[81],substr[3];

intn,len,i=0;

FILE*rf,*wf;

rf=fopen("

wf=fopen("

while(i<

5)

fgets(str,80,rf);

fgets(substr,10,rf);

len=strlen(substr)-1;

ch=substr[len];

if(ch=='

||ch==0x1a)

substr[len]=0;

fprintf(wf,"

fclose(rf);

fclose(wf);

6.(40)

某级数的前两项A1=1,A2=1,以后各项具有如下关系:

An=An-2+2An-1

下列程序的功能是:

要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:

Sn<

M且Sn+1≥M,这里Sn=A1+A2+…+An,并依次把n值存入数组单元b[0],b[1],b[2]中,请编制jsValue()函数来实现此功能,最后调用函数writeDat()把数组b的值输出到out.dat文件中。

intb[3];

voidjsValue()

intn=1;

/*计数器变量,保存求得的项数*/

inta1=1,a2=1,an;

/*用来保存级数的值*/

intsum0,sum;

/*用来存储级数的和的变量*/

sum0=a1+a2;

/*计算前两项的级数和*/

while

(1)/*无条件循环,循环体内有控制是否结束循环的语句*/

an=a1+a2*2;

/*求下一个级数*/

sum=sum0+an;

/*求级数和*/

a1=a2;

/*将a2赋给a1*/

a2=an;

/*将an赋给a2*/

/**/

if(sum0<

100&

sum>

=100)/*如果满足Sn<

100且sn+1>

=100*/

b[0]=n;

/*则将n存入数组单元b[0]中*/

1000&

=1000)/*如果满足Sn<

1000且sn+1>

=1000*/

b[1]=n;

/*则将n存入数组单元b[1]中*/

10000&

=10000)/*如果满足Sn<

10000且sn+1>

=10000*/

b[2]=n;

/*则将n存入数组单元b[2]中*/

/*并强行退出循环*/

sum0=sum;

/*将sum赋给sum0,为下一次循环的求和作准备*/

jsValue();

M=100,n=%d\nM=1000,n=%d\nM=10000,n=%d\n"

b[0],b[1],b[2]);

%d\n%d\n%d\n"

7.(38)

利用以下所示的简单迭代方法求方程:

cos(x)-x=0的一个实根。

xn+1=cos(xn)

迭代步骤如下:

(1)取x1初值为0.0。

(2)x0=x1,把x1的值赋给x0。

(3)x1=cos(x0),求出一个新的x1。

(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤

(2)。

(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果输出到文件out.dat中。

math.h>

floatcountValue()

floatx0,x1=0.0;

/*定义两个浮点型变量进行迭代*/

while

(1)/*无条件循环*/

x0=x1;

/*将x1赋值给x0*/

x1=cos(x0);

/*求出新的x1*/

if(fabs(x0-x1)<

1e-6)break;

/*若x0-x1的绝对值小于0.000001,则结束循环*/

returnx1;

/*返回x1的值*/

实根=%f\n"

countValue());

%f\n"

cos(countValue())-countValue());

writeDAT();

voidwriteDAT()

FILE*wf;

8.(19)

函数ReadDat()的功能是实现从文件08IN.DAT中读取一篇英文文章存入到字符串数组xx中。

请编制函数SortCharD(),该函数的功能是:

以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT.DAT中。

例如,原文:

dAe,BfC

CCbbAA

结果:

fedCBA,

bbCCAA

原始数据文件存放的格式是:

每行的宽度均小于80个字符,含标点符号和空格。

charxx[50][80];

intmaxline=0;

intReadDat(void);

voidSortCharD()

intstr;

/*存储字符串的长度*/

for(i=0;

maxline;

i++)/*以行为单位获取字符*/

/*求得当前行的字符串长度*/

j++)/*对字符按从大到小的顺序进行排序*/

if(ReadDat())

\n\007"

SortCharD();

while(fgets(xx[i],80,fp)!

=NULL)

if(p)

maxline=i;

voidWriteDat()

9.(14)

函数ReadDat()的功能是实现从文件09ENG.IN中读取一篇英文文章,存入到字符串数组xx中。

请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS.DAT中。

替代关系:

f(p)=p*11mod256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或大于130,则该字符不变,否则将f(p)所对应

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1