2012年3月计算机三级数据库技术上机练习题_第1页
2012年3月计算机三级数据库技术上机练习题_第2页
2012年3月计算机三级数据库技术上机练习题_第3页
2012年3月计算机三级数据库技术上机练习题_第4页
2012年3月计算机三级数据库技术上机练习题_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012年3月计算机三级数据库技术上机练习题

1.调用函数rwdataO,从IN.dat文件中读取10组数据(m和k值),并嵌套调用

primenum函数分别得出array□数组。请编写函数primenum(intm,intk,int

array:]),该函数的功能是:将紧靠m的k个素数存入数组array并在屏幕上显示。

最后把结果输出到文件OUT.dat中。

例如,若输入39,则应输出5711131719232931。

注意:部分程序已经给出。请勿改动主函数main。和输出数据函数rwdataO

的内容。

【答案】

voidprimenum(intm,intk,intarray[])

{intvalue=m+1;

inthalf,n=0,i;

while(l)

{half=value/2;

for(i=2;i<=half;i++)

if(value%i==0)

break;

if(i>half)

{array[n]=value;

n++;

)

if(n>=k)

break;

value++;

)

)

1.函数RDataO实现从文件IN.dat中读取一篇英文文章,存入到字符串数组str中;

请编写encryptCharO函数,其功能是:按给定的替代关系对数组str中的所有字

符进行替代,仍存入数组str对应的位置上,最后调用函数WDataO,把结果str

输出到文件OUT.dat中。

替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计

算后新字符的ASCH值),如果计算后f(p)值小于1等于32或大于130,则该字符

不变,否则将f(p)所对应的字符进行替代。

原始数据文件存放的格式是:每行的宽度均小于80个字符。

【答案】

voidencryptCharO

{inti;

char*pf;

for(i=0;i<=""p="”>

{pf=str[i];

while(*pf!=0)

{if(*pf*ll%6<=130&&*pf*ll%6>32)

*pf=*pf*ll%6;

pf++;

)

1.编写函数findStrO,其功能是:统计一个长度为2的子字符串在另一个字符串

中出现的次数。例如,假定输入的字符串为"asdasasdfgasdaszx67asdmklo〃,

子字符串为〃as〃,函数返回值是6。

函数ReadWrite()实现从文件IN.dat中读取两个字符串,并调用函数

findStrO,最后,把结果输出到文件OUT.dat中。

【答案】

intfindStr(char*str,char*substr)

{intn;

char*p,*r;

n=0;

while(*str)

{P=str;

r=substr;

while(*r)

if(*r==*p)

{r++;

p++;

)

else

{break;

)

if(*r='\0')

n++;

str++;

)

returnn;

)

1.已知数据文件IN.dat中存有300个四位数,并已调用读函数RdataO把这些数存

入数组a中,请编写函数primeNumO,其功能是:求出所有这些四位数中素数的个

数count,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位

数按从小到大的顺序进行排序。最后调用写函数WdataO,把结果输出到OUT.dat

文件中。

例如,5591是素数,则该数满足条件存入数组b中,且个数count=count+l。

9812是非素数,则该数不满足条件,不存入数组b中,count值也不加1。

【答案】

voidprimeNumO

{intj,i,value;

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

if(isP(a[i]))

{b[count]=a[i];

count++;

)

for(i=0;

for(j=i+l:j<=""〉

if(b[i]>b[j])

{value=b[i];

b[i]=b[j];

b[j]=value;

)

)

1.函数RdataO实现从文件IN.dat中读取一篇英文文章存入到字符串数组string

中,请编写ConvertCharDO函数,其功能是:以行为单位把字符串中的所有小写字

母改写成该字母的匕一个字母,如果是字母a,则改写成字母z。大写字母仍为大写

字母,小写字母仍为小写字母,其他字符不变,最后把已处理的字符串仍按行重新

存入字符串数组string中。最后调用函数Wdata(),把结果string输出到文件

OUT.dat中o

例如,原文:Adb.Bcdza

abck.LLhj

结果:Aca.Bbcyz

zabj.LLgi

原始数据文件存放的格式是:每行的宽度均小于80个字符。

【答案】

voidConvertCharD(void)

{inti;

char*pf;

for(i=0;i<=〃〃〉

{pf=string[i];

while(*pf)

{if(*pf=='a')

*pf=,z,;

elseif(*pf〉='b'&&*pf<='z')

*pf_=1;

pf++;

)

)

)

L下列程序的功能是:寻找并输出1「999之间的数m,它满足m、m2和m3均为回

文数。所谓回文数是指各位数字左右对称的整数,例如121、676、94249等°满足

上述条件的数如m=ll,m2=121,m3=1331皆为回文数。请编写函数int

palindromevalue(longn)实现功能:如果是回文数,则函数返回1,反之则返回0。

最后,把结果输出到文件0UT.dat中。

【答案】

intpalindromevalue(longn)

{inti,strl,half;

chartemp[20];

ltoa(n,temp,10);

strl=strlen(temp);

half=strl/2;

for(i=0;i<=〃〃>

if(temp[i]!=temp[一strl])

break;

if(i>=half)

return1;

else

return0;

)

1.已知数据文件IN.dat中存有200个四位数,并已调用读函数rdataO把这些数存

入数组a中,请编写函数evenvalueO,其功能是:如果四位数每位上的数字均是0、

2、4、6或8,则统计出满足此条件的四位数的个数count,并把这些四位数按从大

到小的顺序存入数组b中。最后main。函数调用写函数wdataO,把结果count以

及数组b中符合条件的四位数输出到OUT.dat文件中。

【答案】

voidevenvalue()

{intbb[4];

inti,j,k,flag;

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

{bb[O]=a[i]/1000;

bb[l]=a[i]00/100;

bb[2]=a[i]0/10;

bb[3]=a[i];

for(j=0;j<4;j++)

{if(bb[j]%2==0)

{flag=1;

)

else

{flag=0;

break;

)

)

if(flag==1)

{b[count]=a[i];

count++;

)

)

for(i=0;

for(j=i+l;

if(b[i]<b[j])

{k=b[i];

b[i]=b[j];

b[j]=k;

)

)

1.下列程序的功能是:把str字符串中的所有字母改写成该字母的下一个字母,

字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他

字符不做改变。

请编写函数CharChange(char*str)实现程序要求,最后调用函数RWDataO从

IN.dat文件中读取50组数据,分别得出结果,并把结果输出到文件OUT.dat中。

例如,str字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:

No.123Ayzo

【答案】

voidCharChange(char*str)

{while(*str)

{if(*str=’a||*str='Z')

*str一=25;

elseif(isalpha(*str))

*str+=1;

str++;

)

)

1.已知al<=a2、a2<=a3、a3<=a4、a[i]%2==0这4个条件同时成立,则a[i]

就是要求下列程序的功能是:在三位整数(100~999)中寻找符合条件的整数并依次从

小到大存入数组中;该整数既是完全平方数,又有两个数字相同,例如144、676等。

请编写函数SearchValO实现此功能,满足该条件的整数的个数通过所编写的函数

返回。最后调用函数WDataO,把结果输出到文件OUT.dat中。

注意:部分源程序已给出。请勿改动主函数main。和写函数WDataO的内容。

【答案】

searchVal(intbb口)

{inti,a,b,c,ent=0;

for(i=10:i*i<1000;i++)

a=i*i/100;

b=i*i/10;

c=i*i;

if(a==b||b==c||c==a)

bb[cnt++]=i*i;

)

returnent;

)

1.已知在文件IN.dat中存有若干个《200)四位数字的正整数,函数RDataO读取这

若干个正整数并存入数组original中。请编写函数CalValue(),其功能要求是:

①求出这个文件中共有多少个正整数totNum;②求这些数右移1位后,产生的新数

是偶数的数的个数toteven,以及满足此条件的这些数(右移前的值)的算术平均值

totavgo最后调用函数WData()把所求的结果输出到OUT.dat文件中°

【答案】

voidCalValue(void)

{inti,data;

for(i=0;i〈=〃〃>

{if(!original[i])

break;

if(original[i]>0)

totNum++;

data=original[i]»l;

if(data%2==0)

{toteven++;

totavg+=original[i];

)

)

totavg/=toteven;

)

1.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码

code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量

amount(整型)、4额sum(长整型)5部分组成。其中:金额=单价X数量。函数RDataO

读取这100个销售记录并存入结构数组sell中。请编写函数SortDatO,其功能要

求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最

终排列结果仍存入结构数组sell中。最后调用函数WDataO,把结果输出到OUT.dat

文件中。

【答案】

voidSortDat()

{inti,j;

PROtemp;

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

for(j=i+l:j<100;j++)

if(sellEi],sum<sell[j].sum)

{temp=sellEi];

sell[i]=sellEj];

sell[j]=temp;

)

elseif(sellEi],sum==sell[j].sum)

{if(strcmp(sell[i].code,sell[j].code)<0)

{temp=sell[i];

sell[i]=sell[j];

sell[j]=temp;

)

)

)

L下列程序的功能是:选出100以上、1000之内所有个位数字与十位数字之和被

10除所得余数恰好是百位数字的素数(如293),计算并输出上述这些素数的个数

count以及这些素数值的和sum。请编写函数countValueO实现程序要求。最后调

用函数WDataO,把结果count和sum输出到OUT.dat文件中。

【答案】

voidcountValueO

{inti,j,half,hun,ten,data;

for(i=101;i<1000;i++)

{hun=i/100;

ten=i0/10;

data=i;

if(hun==(ten+data))

{half=i/2;

for(j=2;j<=〃〃>

if(i%j==0)

break;

if(j>=half)

{count++;

sum+=i;

)

)

)

)

1.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码

code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量

amount(整型)、徽sum(长整型)5部分组成。其中:金额=单价X数量。函数RData()

是读取这100个销售记录并存入结构数组sell中。请编写函数SortDatO,其功能

是:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,

最终排列结果仍存入结构数组sell中。最后调用函数WDataO,把结果输出到

OUT.dat文件中。

【答案】

voidSortDat()

{inti,j;

PROtemp;

for(i=0;i<=""p=""〉

for(j=i+l;j<=">

if(strcmp(sell[i].code,sell[j].code)>0)

{temp=sell[i];

sell[i]=sellEj];

sell[j]=temp;

)

elseif(strcmp(sellEi].code,sell[j].code)=0)

{if(sell[i].sum>sellEj].sum)

{temp=sellEi]:

sell[i]=sell[j];

sell[j]=temp;

)

)

)

1.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码

code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量

amount(整型)、金jsum(长整型)5部分组成。其中:金额=单价X数量。函数RDataO

是读取这100个销售记录并存入结构数组sell中。请编写函数SortDatO,其功能

要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排

列,最终排列结果仍存入结构数组sell中。最后调用函数WDataO,把结果输出到

文件OUT.dat中o

【答案】

voidSortDat()

{inti,j;

PROtemp;

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

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

if(strcmp(sell[i].name,sell[j].name)<0)

{temp=sellEi];

sellEi]=sell[j];

sell[j]=temp;

)

elseif(strcmp(sell[i].name,sell[j].name)=0)

{if(sellEi],sum<sell[j].sum)

{temp=sell[i];

sell[i]=sell[j];

sell[j]=temp;

)

)

)

1.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码

code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量

amount(整型)、獭sum(长整型)5部分组成。其中:金额=单价X数量。函数RData()

读取这100个销售记录并存入结构数组sell中。请编写函数SortDatO,其功能是:

按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排

列结果仍存入结构数组sell中。最后调用函数WDataO,把结果输出到OUT.dat文

件中。

【答案】

voidSortDat()

{inti,j;

PROtemp;

for(i=0;i<=""p=〃"〉

for(j=i+l;j<="”>

if(sellEi],sum<sell[j].sum)

{temp=sell[i];

sell[i]=sell[j];

sell[j]=temp;

)

elseif(sellEi],sum==sell[j].sum)

{if(strcmp(sell[i].code,sell[j].code)>0)

{temp=sell[i];

sellLi]=sell[j];

sell[j]=temp;

)

)

}

1.已知数据文件IN.dat中存有300个四位数,并已调用读函数RDataO把这些数存

入数组a中,请编写函数diffValO,其功能是:求出千位上的数减百位上的数减

十位上的数减个位上的数大于0的个数count,再求出所有满足此条件的四位数的

平均值avel,以及不满足此条件的四位数的平均值ave2o最后调用写函数WDataO,

把结果输出到OUT.dat文件中。

例如,9123,9-1-2-3>0,则该数满足条件,计算平均值avel,且个数

count=count+l»9812,9-8-1-2<0,则该数不满足条件,计算平均值ave2。

【答案】

voiddiffValO

{inti,thou,hun,ten,data,n=0;

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

{thou=a[i]/1000;

hun=a[i]00/100;

ten=a[i]0/10;

data=a[i];

if(thou-hun-ten-data>0)

{count++;

avel+=a[i];

)

else

{n++;

ave2+二a[i];

)

)

avel/=count;

ave2/=n;

}

1.函数RdataO实现从文件IN.dat中读取一篇英文文章,存入到字符串数组string

中。请编写enuyptChar()函数,其功能是:按给定的替代关系对数组string中的

所有字符进行替代后,仍存入数组string的对应位置上。最后调用函数Wdata(),

把结果string输出到OUT.dat文件中。

替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCH值,f(p)是计

算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写

字母,则该字符不变,否则将f(p)所对应的字符进行替代。

原始数据文件存放的格式是:每行的宽度均小于80个字符。

【答案】

voidencryptChar()

{inti;

char*pf;

for(i=0;i<=""p="">

{pf=string[i];

while(*pf!=0)

{if((*pf*ll%6>=A'&&*pf*ll%6<=,Z,)||*pf*ll%6<=32)

{pf++;

continue;

)

*pf=*pf*n%6;

pf++;

)

)

)

2.在文件IN.dat中有200个正整数,且每个数均在1000~9999之间。函数RDataO

读取这200个数存放到数组original中。请编写函数numAscend(),其功能是:要

求按每个数的后3位的大小进行升序排列,然后取出满足此条件的前10个数依次存

入数组result中,如果后3位的数值相等,则按原先的数值进行降序排列。最后调

用函数WData(),把结果result输出到文件OUT.dat中。

例如,处理前:60125099901270258088

处理后:90126012702580885099

【答案】

voidnumascendO

{inti,j,data;

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

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

{if(original[i]00>original[j]00)

{data=original[i];

original[i]=original[j];

original[j]=data;

)

elseif(original[i]00==original[j]00)

{if(original[i]<original[j])

{data=original[i];

original[i]=original[j];

original[j]=data;

)

)

)

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

result[i]=originalEi];

)

3.已知文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码

code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量

amount(整型)、幽sum(长整型)5部分组成。其中:金额=单价X数量。函数RDataO

读取这100个销售记录并存入结构数组sell中。请编写函数DescSort(),其功能

要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排

列,最终排列结果仍存入结构数组sell中,最后调用函数WDataO,把结果输出到

文件OUT.dat中。

【答案】

voidDescSort()

{inti,j;

PROtemp;

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

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

if(strcmp(sell[i].code,sell[j].code)<0)

{temp=sell[i];

sell[i]=sell[j];

sell[j]=temp;

)

elseif(strcmp(sell[i].code,sellEj].code)=0)

{if(sell[i].sum<sell[j].sum)

{temp=sellEi];

sellEi]=sell[j];

sell[j]=temp;

)

)

)

2.函数RDataO实现从文件IN.dat中读取一篇英文文章存入到字符串数组str中,

请编写函数DescSort(),其功能是:以行为单位对字符按从大到小的顺序进行排序,

排序后的结果仍按行重新存入字符串数组str中,最后调用函数WDataO,把结果

str输出到文件OUT.dat中。原始数据文件存放的格式是:每行的宽度均小于80个

字符(含标点符号和空格)。

例如,原文:dAeBfC.

CcbbAA

结果:fedCBA.

cbbCAA

【答案】

voidDescSort(void)

{inti,j,k,strl;

charch;

for(i=0;i<=""p="">

{strl=strlen(str[i]);

for(j=0;

for(k=j+l;k〈="”>

if(str[i][j]<str[i][k])

{ch=str[i][j];

str[i][j]=str[i][k];

str[i][k]=ch;

)

)

)

3.函数RData()实现从文件IN.dat中读取一篇英文文章存入字符串数组original

中,请编写StrCharMoveO函数,其功能是:以行为单位把字符串中所有字符的ASCII

值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCH值,得到新的字

符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数

组original中。最后调用函数WData(),把结果original输出到文件OUT.dat中。

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

格)。

【答案】

voidStrCharMove(void)

{inti,j,strl;

for(i=0;i<=""p="">

{strl=strlen(originalEi]);

for(j=0;

original[i][j]+=original[i][j]»4;

)

2.请编写函数CountValueO,它的功能是:求n以内(不包括n),同时能被3与7

整除的所有自然数之和的平方根s,并作为函数值返回。

主函数最后调用函数progReadWriteO从IN.dat文件中读取10组数据,分别

得出结果,且把结果输出到文件OUT.dat中。

例如,若n为1000时,函数值应为:s=153.909064c

【答案】

doublecountValue(intn)

{doublexy=0.0;

inti;

for(i=l;i<=p=>

if(i%3=0&&i%7==0)

xy+二i;

xy=sqrt((double)xy);

returnxy;

)

3.已知在文件IN.dat中存有N个(NC200)实数,函数RData()读取这N个实数并

存入数组original中。请编写函数CalValueO,要求实现的功能有:①求出这N

个实数的平均值(aver);②分别求出这N个实数的整数部分之和(sumint)以及小数

部分之和(sumdec),最后调用函数WDataO把所求的结果输出到文件OUT.dat中。

【答案】

voidCalValue(void)

{inti;

doublex,sum=0;

for(i=0;i<="p=">

{sumint=sumint+(int)original[i];

x=original[i]-(int)original[i];

sumdec=sumdec+x;

sum=sum+original[i];

)

aver=sum/MAXNUM;

)

2.下列程序的功能是:把s字符串中的所有字符左移一个位置,字符串中的第一个

字符移到最后。请编写函数change(char*s)实现程序要求,最后调用函数

readwriteDATO从IN.dat文件中读取50组数据,分别得出结果,且把结果输出到

OUT.dat文件中。

例如,s字符串中原有内容为:Mn.123xyZ,调用该函数后结果为:n.123xyZMo

【答案】

voidchange(charts)

{inti,strl;

charch;

strl=strlen(s);

ch二*s;

for(i=0;

*(s+i)=*(s+i+l);

*(s+strlT)=ch;

)

3,下列程序的功能是:找出所有100以内(含100)满足i、i+4、i+10都是素数的

整数i(i+10也在100以内)的个数count以及这些i之和sum。请编写函数primeNum()

实现程序要求的功能,最后调用函数writeDatO,把结果count和sum输出到文件

OUT.dat中o

【答案】

voidprimeNumO

{inti;

for(i=2;i<=90;i++)

if(isPrime(i)&&isPrime(i+4)&&isPrime(i+10))

{count++;

sum+=i;

)

)

2.下列程序的功能是:把s字符串中的所有字符左移一个位置,字符串中的第一

个字符移到最后。请编写函数change(char*s)实现程序要求,最后调用函数

readwriteDATO从IN.dat文件中读取50组数据,分别得出结果,且把结果输出到

OUT.dat文件中o

例如,s字符串中原有内容为:Mn.123xyZ,调用该函数后结果为:n.123xyZM(.

【答案】

voidchange(char*s)

{inti,strl;

charch;

strl=strlen(s);

ch=*s;

for(i=0;

*(s+i)=*(s+i+l);

*(s+strlT)=ch;

)

3,下列程序的功能是:找出所有100以内(含100)满足i、i+4、i+10都是素数的整

数i(i+10也在100以内)的个数count以及这些i之和sum。请编写函数primeNum()

实现程序要求的功能,最后调用函数writeDatO,把结果count和sum输出到文件

OUT.dat中o

【答案】

voidprimeNum()

{inti;

for(i=2;i<=90;i++)

if(isPrime(i)&&isPrime(i+4)&&isPrime(i+10))

{count++;

sum+=i;

)

)

2.请编写函数countValue(),它的功能是:求出「1000之内能被7或11整除但不

能同时被7或11整除的所有整数,将它们放在数组a中,并通过n返回这些数的个

数。主函数最后调用函数WdataO把计算结果输出到OUT.dat中。

【答案】

voidcountValue(int*a,int*n)

{inti;

*n=0;

for(i=l;i<=1000;i++)

if(i%7==0&&i)

{*a=i;

*n=*n+l;

a++;

)

elseif(i%7&&i==0)

{*a=i;

*n=*n+l;

a++;

)

)

3.已知数据文件IN.dat中存有300个四位数,并已调用读函数RdataO把这些数存

入数组a中,请编写函数primeCalO,其功能是:求出这些四位数中素数的个数

count,再求出所有满足此条件的四位数的平均值Avel以及不满足此条件的四位数

的平均值Ave2。最后调用写函数Wdata(),把结果count、Avel、Ave2输出到OUT.dat

文件中。

例如,5591是素数,则该数满足条件计算平均值Avel,且个数count=count+l。

9812是非素数,则该数不满足条件计算平均值Ave2„

【答案】

voidprimeCal()

{inti;

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

if(isP(a[i]))

{Avel+=a[i];

count++;

)

else

{Ave2+=a[i];

)

Avel=Avel/count;

Ave2=Ave2/(300-count);

)

2.请补充程序,使得程序能实现以下功能:

从文件IN.dat中读取200个整数至数组number中,求出奇数的个数cntl和偶

数的个数cnt2以及数组number卜标为偶数的元素值的算术平均值ave(保留2位小

数)。把结果cntl、cnt2>ave输出到OUT.dat中。

【答案】

for(i=0,j=0,cntl=0,cnt2=0;i<=〃〃>

{if(number[i]%2)

cntl++;

else

cnt2++;

if(i%2==0)

j+=number[i];

)

ave=(float)j/(N/2);

3..函数RdataO实现从文件IN.dat中读取一篇英文文章,存入到字符串数组string

中,请编写函数CharRightO,其功能是:以行为单位把字符串中的最后一个字符

的ASCII值右移4位后加倒数第二个字符的ASCII值,得到最后一个新的字符;倒数

第二个字符的ASCII值右移4位后加倒数第三个字符的ASCII值,得到倒数第二个

新的字符;依此类推,一直处理到第二个字符;第一个字符的ASCH值加原最后一个

字符的ASCH值,得到第一个新的字符。得到的新字符分别存放在原字符串对应的

位置上,最后已处理的字符串仍按行重新存入字符串数组string中。最后调用函数

WdataO,把结果string输出到文件OUT.dat中。

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

格)。

【答案】

voidCharRight(void)

{inti,j,strl;

charch;

for(i=0;

{strl=strlen(stringEi]);

ch=stringEi][strl-l];

for(j=strl-l:j>0:j—)

{stringEi][j]»-4;

stringEi]Ej]+=stringEi]Ej-1];

)

stringEi][0]+=ch;

)

}

2.函数RDataO实现从文件IN.dat中读取一篇英文文章存入字符串数组StrResult

中;请编写StrmoveO函数,其功能是:以行为单位,依次把字符串中所有小写字母

〃。〃左边的字符串内容移到该字符串的右边存放,然后把小写字母〃o〃删除,余下的

字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入

字符串数组StrResult中。最后main。函数调用函数WData(),把结果StrResult

输出到文件OUT.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,

含标点符号和空格。

例如,原文:nanyfield.Yucancreateanindex

youhavethecorlrectrecord.

结果:nanyfield.Yucancreateanindex

rd.yuhavethecrlrectrec

【答案】

voidStrmove(void)

{inti,j,k;

charbuf[80];

for(i=0;

{j=strlen(StrResult[i])-1;

while(StrResult[i]Ej]!=,o,&&j>=0)

J—;

if(j<0)

continue;

StrResult[i][j]=0;

strcpy(buf,&StrResult[i][j+1]);

k=j=0;

while(StrResult[i][j])

{while(StrResult[i][j]!="o)&&StrResult[i][j])

J++;

if(!StrResult[i]Ej])

{strcat(buf,&StrResult[i][k]);

break;

)

StrResult[i]Ej]=0;

strcat(buf,&StrResult[i]Ek]);

j++;

k=j;

}

strcpy(StrResult[i],buf);

)

)

3.函数RDataO实现从文件IN.dat中读取一篇英文文章并存入到字符串数组

StrResult中,请编写函数StrRes(),其功能是:以行为单位对行中以空格或标点

符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行

重新存入字符串数组StrResult中,最后调用函数WData(),把结果StrResult输

出到文件OUT.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,

含标点符号和空格。

例如,原文:YouHeMe

Iamastudent.

结果:MeHeYou

studentaamI

【答案】

charStrRes(void)

{inti,j,k,strl,1;

for(i=0;i<=〃〃>

for(j=0;j<(int)strlen(StrResult[i]);j++)

if(!isalpha(StrResult[i][j])&&StrResult[i][j]!=,')

StrResult[i][j]=;

for(1=0;1<=〃〃〉

{charch[80]={0};

charpp[80]={0};

strl=strlen(StrResult[1]);

i=strl-1;

k=0;

while(1)

{while(isalpha(StrResult[1][i])&&i>=0)

{for(j=k;j>=0;j—)

pp[j+l]=pp[j];

pp[0]=StrResult[1][i];

k++;

)

strcat(ch,pp);

strcpy(pp,;

k=0;

if(i<0)

break;

while(!isalpha(StrResult[l][i])&&i>=0)

{for(j=k;j>=0;j—)

pp[j+l]=pp[j];

pp[0]=StrResult[l][i];

k++;

i—;

)

strcat(ch,pp);

strcpy(pp,;

k=0;

if(i<0)

break;

strcpy(StrResult[1],ch);

)

)

2.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码

code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量

amount(整型)、幽sum(长整型)5部分组成。其中,金额=单价X数量。函数RData()

读取这100个销售记录并存入结构数组sell中。请编写AscendSort()函数,其功

能是:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排

列,最终排列结果仍存入结构数组sell中。最后调用函数WDataO,把结果输出到

文件OUT.dat中。

【答案】

voidAscendSort()

{inti,j;

PROtemp;

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

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

if(strcmp(sell[i].name,sell[j].name)>0)

{temp=sell[i];

sellEi]=sellLj];

sell[j]=temp;

)

elseif(strcmp(sell[i].name,sellLj].name)=0)

{if(sell[i].sum>sell[j].sum)

{temp=sellEi];

sellEi]=sell[j];

sell[j]=temp;

)

)

)

3.已知数据文件IN.dat中存有200个四位数,并已调用读函数RDataO把这些数

存入数组a中,请编写函数evenValO,其功能是:若一个四位数的千位上的数字

值小于等于百位上的数字值,百位上的数字值小于等于十位上的数字值,以及十位

上的数字值小于等于个位上的数字值,并且该四位数是偶数,则统计出满足此条件

的个数count,并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数

WDataO,把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。

程序中已定义数组a[200],、b[200],已定义变量count。

【答案】

voidevenVal()

{inti,j;

intal,a2,a3,a4,k;

for(i=0;

{al=a[i]/1000;

a2=a[i]00/100;

a3=a[i]0/10;

a4=a[i];

if((al<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[i]%2==0))

{b[count]=a[i];

count++;

)

)

for(i=0;

for(j=i+l;j<=">

if(b[i]>b[j])

{k=b[i];

b[i]=bEj];

b[j]=k;

)

)

2.已知数据文件IN.dat中存有300个四位数,并已调用读函数RDataO把这些数存

入数组a中,请编写函数jsValueO,其功能是:求出千位数上的数减百位数上的

数减十位数上的数减个位数上的数大于0的数的个数count,再把所有满足此条件

的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。

最后调用写函数WDataO,把结果输出到OUT.dat文件中。

例如,9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数count=count+l»

9812,9-8-1-2<0,则该数不满足条件,忽略。

程序中已定义数组a[300],b[300];已定义变量counto

【答案】

voidjsValue()

{inti,thou,hun,ten,data,j;

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

{thou=a[i]/1000;

hun=a[i]00/100;

ten=a[i]0/10;

data=a[i];

if(thou-hun-ten-data>0)

{b[count]=a[i];

count++;

)

)

for(i=0;i<=,,,/>

for(j=i+l;j<=〃〃>

if(b[i]>b[j])

{data=b[i];

b[i]=b[j];

b[j]=data;

)

3.函数RdataO实现从文件IN.dat中读取一篇英文文章存入到字符串数组string

中,请编写函数CharLeftO,其功能是:以行为单位把字符串中所有字符的ASCH

值左移4位,如果左移后,其字符的ASCH值小于等于32或大于100,则原字符保

持不变,否则就把左移后的字符ASCH值再加上原字符ASCH值,得到新的字符仍

存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组

string中,最后调用函数WdataO,把结果string输出到文件OUT.dat中。

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

格)。

【答案】

voidCharLeft(void)

{inti,j,str;

charch;

for(i=0;i<=">

{str=strlen(stringEiJ);

for(j=0;j〈="”>

{ch=string[i]Ej]«4;

if(ch>32&&ch<=100)

string[i][j]+=ch;

)

)

)

2.已知数据文件IN.dat中存有200个四位数,并已调用读函数RDataO把这些数存

入数组a中,请编写函数spellValO,其功能是:把千位数字和十位数字重新组成

一个新的二位数ab(新二位数的十位数字是原四位数的千位数字,新二位数的个位

数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的二位数

cd(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的

百位数字),如果新组成的两个二位数ab-cd^O且ab-cdW10且两个数均是奇数,

同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存

入数组b中,并要计算满足上述条件的四位数的个数count。最后main。函数调用

写函数WDataO,把结果count以及数组b中符合条件的四位数输出到OUT.dat文

件中。

【答案】

voidspellVal()

{inti,thou,hun,ten,data,j;

intab,cd;

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

{thou=a[i]/1000;

hun=a[i]00/100;

ten=a[i]0/10;

data=a[i];

if(thou==0||data==0)

continue;

ab=10*thou+ten;

cd=10*data+hun;

if((ab-cd)>=0&&(ab-cd)<=10&&ab%2=l&&cd%2=l)

{b[cnt]=a[i];

cnt++;

)

)

for(i=0;i<=〃〃>

for(j=i+l;

if(b[i]<b[j])

{data=b[i];

b[i]=b[j];

b[j]=data;

)

)

3.已知数据文件IN.dat中存有200个四位数,并已调用读函数RDataO把这些数

存入数组a中,请编写函数seVal(),其功能是:依次从数组a中取出一个四位数,

如果该四位数连续小于该四位数以后的5个数且该数是偶数(该四位数以后不满4

个数,则不统计),则统计出满足此条件的个数count并把这些四位数按从小到大的

顺序存入数组b中。最后调用写函数WDataO,把结果count以及数组b中符合条

件的四位数输出到OUT.dat文件中。

注意:部分程序已经给出。程序中已定义数组a[200]、b[200],已定义变量

counto请勿改动数据文件

【答案】

voidseVal()

{inti,j,flag=0;

for(i=0;

{for(j=i+l;j<=i+5;j++)

if(a[i]<a[j])

{flag=1;

)

else

{flag=0;

break:

)

if(flag==l&&a[i]%2==0)

{b[count]=a[i];

count++;

)

)

for(i=0;

for(j=i+l;j<="”>

if(b[i]>bEj])

{flag=b[i];

b[i]=bEj];

b[j]=flag;

)

}

2.请补充完整RDataO函数,实现从文件IN.DET中读取1000个十进制整数到数

组evennum中,请编写函数Compute()分别计算出evennum中奇数的个数odd,彳腰

的个数even,奇数的平均值avel,偶数的平均值ave2以及所有偶数的方差totfc

的值。最后调用函数WDataO,把结果输出到OUT.dat文件中。

计算方差的公式如下:

其中:N为偶数的个数,evennum[i]为偶数,ave2为偶数的平均值。

原始数据文件存放的格式是:每行存放10个数(每个数均大于0且小于等于

2000),并用逗号隔开。

【答案】

voidCompute(void)

{inti,result[MAX];

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

if(evennum[i]%2)

{odd++;

avel+=evennum[i];

)

else

{even++;

ave2+=evennum[i];

result[even_1]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论