2012年3月計算機三級數(shù)據(jù)庫技術上機練習題_第1頁
2012年3月計算機三級數(shù)據(jù)庫技術上機練習題_第2頁
2012年3月計算機三級數(shù)據(jù)庫技術上機練習題_第3頁
2012年3月計算機三級數(shù)據(jù)庫技術上機練習題_第4頁
2012年3月計算機三級數(shù)據(jù)庫技術上機練習題_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2012年3月計算機三級數(shù)據(jù)庫技術上機練習題

1.調(diào)用函數(shù)rwdataO,從IN.dat文件中讀取10組數(shù)據(jù)(m和k值),并嵌套調(diào)用

primenum函數(shù)分別得出array□數(shù)組。請編寫函數(shù)primenum(intm,intk,int

array:]),該函數(shù)的功能是:將緊靠m的k個素數(shù)存入數(shù)組array并在屏幕上顯示。

最后把結(jié)果輸出到文件OUT.dat中。

例如,若輸入39,則應輸出5711131719232931。

注意:部分程序已經(jīng)給出。請勿改動主函數(shù)main。和輸出數(shù)據(jù)函數(shù)rwdataO

的內(nèi)容。

【答案】

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.函數(shù)RDataO實現(xiàn)從文件IN.dat中讀取一篇英文文章,存入到字符串數(shù)組str中;

請編寫encryptCharO函數(shù),其功能是:按給定的替代關系對數(shù)組str中的所有字

符進行替代,仍存入數(shù)組str對應的位置上,最后調(diào)用函數(shù)WDataO,把結(jié)果str

輸出到文件OUT.dat中。

替代關系:f(p)=p*llmod256(p是數(shù)組中某一個字符的ASCII值,f(p)是計

算后新字符的ASCH值),如果計算后f(p)值小于1等于32或大于130,則該字符

不變,否則將f(p)所對應的字符進行替代。

原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于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.編寫函數(shù)findStrO,其功能是:統(tǒng)計一個長度為2的子字符串在另一個字符串

中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為"asdasasdfgasdaszx67asdmklo〃,

子字符串為〃as〃,函數(shù)返回值是6。

函數(shù)ReadWrite()實現(xiàn)從文件IN.dat中讀取兩個字符串,并調(diào)用函數(shù)

findStrO,最后,把結(jié)果輸出到文件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.已知數(shù)據(jù)文件IN.dat中存有300個四位數(shù),并已調(diào)用讀函數(shù)RdataO把這些數(shù)存

入數(shù)組a中,請編寫函數(shù)primeNumO,其功能是:求出所有這些四位數(shù)中素數(shù)的個

數(shù)count,再把所有滿足此條件的四位數(shù)依次存入數(shù)組b中,然后對數(shù)組b的四位

數(shù)按從小到大的順序進行排序。最后調(diào)用寫函數(shù)WdataO,把結(jié)果輸出到OUT.dat

文件中。

例如,5591是素數(shù),則該數(shù)滿足條件存入數(shù)組b中,且個數(shù)count=count+l。

9812是非素數(shù),則該數(shù)不滿足條件,不存入數(shù)組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.函數(shù)RdataO實現(xiàn)從文件IN.dat中讀取一篇英文文章存入到字符串數(shù)組string

中,請編寫ConvertCharDO函數(shù),其功能是:以行為單位把字符串中的所有小寫字

母改寫成該字母的匕一個字母,如果是字母a,則改寫成字母z。大寫字母仍為大寫

字母,小寫字母仍為小寫字母,其他字符不變,最后把已處理的字符串仍按行重新

存入字符串數(shù)組string中。最后調(diào)用函數(shù)Wdata(),把結(jié)果string輸出到文件

OUT.dat中o

例如,原文:Adb.Bcdza

abck.LLhj

結(jié)果:Aca.Bbcyz

zabj.LLgi

原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于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之間的數(shù)m,它滿足m、m2和m3均為回

文數(shù)。所謂回文數(shù)是指各位數(shù)字左右對稱的整數(shù),例如121、676、94249等°滿足

上述條件的數(shù)如m=ll,m2=121,m3=1331皆為回文數(shù)。請編寫函數(shù)int

palindromevalue(longn)實現(xiàn)功能:如果是回文數(shù),則函數(shù)返回1,反之則返回0。

最后,把結(jié)果輸出到文件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.已知數(shù)據(jù)文件IN.dat中存有200個四位數(shù),并已調(diào)用讀函數(shù)rdataO把這些數(shù)存

入數(shù)組a中,請編寫函數(shù)evenvalueO,其功能是:如果四位數(shù)每位上的數(shù)字均是0、

2、4、6或8,則統(tǒng)計出滿足此條件的四位數(shù)的個數(shù)count,并把這些四位數(shù)按從大

到小的順序存入數(shù)組b中。最后main。函數(shù)調(diào)用寫函數(shù)wdataO,把結(jié)果count以

及數(shù)組b中符合條件的四位數(shù)輸出到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。要求大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他

字符不做改變。

請編寫函數(shù)CharChange(char*str)實現(xiàn)程序要求,最后調(diào)用函數(shù)RWDataO從

IN.dat文件中讀取50組數(shù)據(jù),分別得出結(jié)果,并把結(jié)果輸出到文件OUT.dat中。

例如,str字符串中原有的內(nèi)容為:Mn.123Zxy,則調(diào)用該函數(shù)后,結(jié)果為:

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]

就是要求下列程序的功能是:在三位整數(shù)(100~999)中尋找符合條件的整數(shù)并依次從

小到大存入數(shù)組中;該整數(shù)既是完全平方數(shù),又有兩個數(shù)字相同,例如144、676等。

請編寫函數(shù)SearchValO實現(xiàn)此功能,滿足該條件的整數(shù)的個數(shù)通過所編寫的函數(shù)

返回。最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到文件OUT.dat中。

注意:部分源程序已給出。請勿改動主函數(shù)main。和寫函數(shù)WDataO的內(nèi)容。

【答案】

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)四位數(shù)字的正整數(shù),函數(shù)RDataO讀取這

若干個正整數(shù)并存入數(shù)組original中。請編寫函數(shù)CalValue(),其功能要求是:

①求出這個文件中共有多少個正整數(shù)totNum;②求這些數(shù)右移1位后,產(chǎn)生的新數(shù)

是偶數(shù)的數(shù)的個數(shù)toteven,以及滿足此條件的這些數(shù)(右移前的值)的算術平均值

totavgo最后調(diào)用函數(shù)WData()把所求的結(jié)果輸出到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個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼

code(字符型4位)、產(chǎn)品名稱name(字符型10位)、單價uprice(整型)、數(shù)量

amount(整型)、4額sum(長整型)5部分組成。其中:金額=單價X數(shù)量。函數(shù)RDataO

讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫函數(shù)SortDatO,其功能要

求:按金額從大到小進行排列,若金額相同,則按產(chǎn)品代碼從大到小進行排列,最

終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中。最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到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之內(nèi)所有個位數(shù)字與十位數(shù)字之和被

10除所得余數(shù)恰好是百位數(shù)字的素數(shù)(如293),計算并輸出上述這些素數(shù)的個數(shù)

count以及這些素數(shù)值的和sum。請編寫函數(shù)countValueO實現(xiàn)程序要求。最后調(diào)

用函數(shù)WDataO,把結(jié)果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個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼

code(字符型4位)、產(chǎn)品名稱name(字符型10位)、單價uprice(整型)、數(shù)量

amount(整型)、徽sum(長整型)5部分組成。其中:金額=單價X數(shù)量。函數(shù)RData()

是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫函數(shù)SortDatO,其功能

是:按產(chǎn)品代碼從小到大進行排列,若產(chǎn)品代碼相同,則按金額從小到大進行排列,

最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中。最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到

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個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼

code(字符型4位)、產(chǎn)品名稱name(字符型10位)、單價uprice(整型)、數(shù)量

amount(整型)、金jsum(長整型)5部分組成。其中:金額=單價X數(shù)量。函數(shù)RDataO

是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫函數(shù)SortDatO,其功能

要求:按產(chǎn)品名稱從大到小進行排列,若產(chǎn)品名稱相等,則按金額從大到小進行排

列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中。最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到

文件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個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼

code(字符型4位)、產(chǎn)品名稱name(字符型10位)、單價uprice(整型)、數(shù)量

amount(整型)、獺sum(長整型)5部分組成。其中:金額=單價X數(shù)量。函數(shù)RData()

讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫函數(shù)SortDatO,其功能是:

按金額從大到小進行排列,若金額相等,則按產(chǎn)品代碼從小到大進行排列,最終排

列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中。最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到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.已知數(shù)據(jù)文件IN.dat中存有300個四位數(shù),并已調(diào)用讀函數(shù)RDataO把這些數(shù)存

入數(shù)組a中,請編寫函數(shù)diffValO,其功能是:求出千位上的數(shù)減百位上的數(shù)減

十位上的數(shù)減個位上的數(shù)大于0的個數(shù)count,再求出所有滿足此條件的四位數(shù)的

平均值avel,以及不滿足此條件的四位數(shù)的平均值ave2o最后調(diào)用寫函數(shù)WDataO,

把結(jié)果輸出到OUT.dat文件中。

例如,9123,9-1-2-3>0,則該數(shù)滿足條件,計算平均值avel,且個數(shù)

count=count+l?9812,9-8-1-2<0,則該數(shù)不滿足條件,計算平均值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.函數(shù)RdataO實現(xiàn)從文件IN.dat中讀取一篇英文文章,存入到字符串數(shù)組string

中。請編寫enuyptChar()函數(shù),其功能是:按給定的替代關系對數(shù)組string中的

所有字符進行替代后,仍存入數(shù)組string的對應位置上。最后調(diào)用函數(shù)Wdata(),

把結(jié)果string輸出到OUT.dat文件中。

替代關系:f(p)=p*llmod256(p是數(shù)組中某一個字符的ASCH值,f(p)是計

算后新字符的ASCII值),如果計算后f(p)值小于等于32或f(p)對應的字符是大寫

字母,則該字符不變,否則將f(p)所對應的字符進行替代。

原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于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個正整數(shù),且每個數(shù)均在1000~9999之間。函數(shù)RDataO

讀取這200個數(shù)存放到數(shù)組original中。請編寫函數(shù)numAscend(),其功能是:要

求按每個數(shù)的后3位的大小進行升序排列,然后取出滿足此條件的前10個數(shù)依次存

入數(shù)組result中,如果后3位的數(shù)值相等,則按原先的數(shù)值進行降序排列。最后調(diào)

用函數(shù)WData(),把結(jié)果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個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼

code(字符型4位)、產(chǎn)品名稱name(字符型10位)、單價uprice(整型)、數(shù)量

amount(整型)、幽sum(長整型)5部分組成。其中:金額=單價X數(shù)量。函數(shù)RDataO

讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫函數(shù)DescSort(),其功能

要求:按產(chǎn)品代碼從大到小進行排列,若產(chǎn)品代碼相同,則按金額從大到小進行排

列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到

文件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.函數(shù)RDataO實現(xiàn)從文件IN.dat中讀取一篇英文文章存入到字符串數(shù)組str中,

請編寫函數(shù)DescSort(),其功能是:以行為單位對字符按從大到小的順序進行排序,

排序后的結(jié)果仍按行重新存入字符串數(shù)組str中,最后調(diào)用函數(shù)WDataO,把結(jié)果

str輸出到文件OUT.dat中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個

字符(含標點符號和空格)。

例如,原文:dAeBfC.

CcbbAA

結(jié)果: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.函數(shù)RData()實現(xiàn)從文件IN.dat中讀取一篇英文文章存入字符串數(shù)組original

中,請編寫StrCharMoveO函數(shù),其功能是:以行為單位把字符串中所有字符的ASCII

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

符仍存入原字符串對應的位置上。最后把已處理的字符串仍按行重新存入字符串數(shù)

組original中。最后調(diào)用函數(shù)WData(),把結(jié)果original輸出到文件OUT.dat中。

原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于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.請編寫函數(shù)CountValueO,它的功能是:求n以內(nèi)(不包括n),同時能被3與7

整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。

主函數(shù)最后調(diào)用函數(shù)progReadWriteO從IN.dat文件中讀取10組數(shù)據(jù),分別

得出結(jié)果,且把結(jié)果輸出到文件OUT.dat中。

例如,若n為1000時,函數(shù)值應為: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)實數(shù),函數(shù)RData()讀取這N個實數(shù)并

存入數(shù)組original中。請編寫函數(shù)CalValueO,要求實現(xiàn)的功能有:①求出這N

個實數(shù)的平均值(aver);②分別求出這N個實數(shù)的整數(shù)部分之和(sumint)以及小數(shù)

部分之和(sumdec),最后調(diào)用函數(shù)WDataO把所求的結(jié)果輸出到文件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字符串中的所有字符左移一個位置,字符串中的第一個

字符移到最后。請編寫函數(shù)change(char*s)實現(xiàn)程序要求,最后調(diào)用函數(shù)

readwriteDATO從IN.dat文件中讀取50組數(shù)據(jù),分別得出結(jié)果,且把結(jié)果輸出到

OUT.dat文件中。

例如,s字符串中原有內(nèi)容為:Mn.123xyZ,調(diào)用該函數(shù)后結(jié)果為: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以內(nèi)(含100)滿足i、i+4、i+10都是素數(shù)的

整數(shù)i(i+10也在100以內(nèi))的個數(shù)count以及這些i之和sum。請編寫函數(shù)primeNum()

實現(xiàn)程序要求的功能,最后調(diào)用函數(shù)writeDatO,把結(jié)果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字符串中的所有字符左移一個位置,字符串中的第一

個字符移到最后。請編寫函數(shù)change(char*s)實現(xiàn)程序要求,最后調(diào)用函數(shù)

readwriteDATO從IN.dat文件中讀取50組數(shù)據(jù),分別得出結(jié)果,且把結(jié)果輸出到

OUT.dat文件中o

例如,s字符串中原有內(nèi)容為:Mn.123xyZ,調(diào)用該函數(shù)后結(jié)果為: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以內(nèi)(含100)滿足i、i+4、i+10都是素數(shù)的整

數(shù)i(i+10也在100以內(nèi))的個數(shù)count以及這些i之和sum。請編寫函數(shù)primeNum()

實現(xiàn)程序要求的功能,最后調(diào)用函數(shù)writeDatO,把結(jié)果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.請編寫函數(shù)countValue(),它的功能是:求出「1000之內(nèi)能被7或11整除但不

能同時被7或11整除的所有整數(shù),將它們放在數(shù)組a中,并通過n返回這些數(shù)的個

數(shù)。主函數(shù)最后調(diào)用函數(shù)WdataO把計算結(jié)果輸出到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.已知數(shù)據(jù)文件IN.dat中存有300個四位數(shù),并已調(diào)用讀函數(shù)RdataO把這些數(shù)存

入數(shù)組a中,請編寫函數(shù)primeCalO,其功能是:求出這些四位數(shù)中素數(shù)的個數(shù)

count,再求出所有滿足此條件的四位數(shù)的平均值Avel以及不滿足此條件的四位數(shù)

的平均值Ave2。最后調(diào)用寫函數(shù)Wdata(),把結(jié)果count、Avel、Ave2輸出到OUT.dat

文件中。

例如,5591是素數(shù),則該數(shù)滿足條件計算平均值Avel,且個數(shù)count=count+l。

9812是非素數(shù),則該數(shù)不滿足條件計算平均值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.請補充程序,使得程序能實現(xiàn)以下功能:

從文件IN.dat中讀取200個整數(shù)至數(shù)組number中,求出奇數(shù)的個數(shù)cntl和偶

數(shù)的個數(shù)cnt2以及數(shù)組number卜標為偶數(shù)的元素值的算術平均值ave(保留2位小

數(shù))。把結(jié)果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..函數(shù)RdataO實現(xiàn)從文件IN.dat中讀取一篇英文文章,存入到字符串數(shù)組string

中,請編寫函數(shù)CharRightO,其功能是:以行為單位把字符串中的最后一個字符

的ASCII值右移4位后加倒數(shù)第二個字符的ASCII值,得到最后一個新的字符;倒數(shù)

第二個字符的ASCII值右移4位后加倒數(shù)第三個字符的ASCII值,得到倒數(shù)第二個

新的字符;依此類推,一直處理到第二個字符;第一個字符的ASCH值加原最后一個

字符的ASCH值,得到第一個新的字符。得到的新字符分別存放在原字符串對應的

位置上,最后已處理的字符串仍按行重新存入字符串數(shù)組string中。最后調(diào)用函數(shù)

WdataO,把結(jié)果string輸出到文件OUT.dat中。

原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于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.函數(shù)RDataO實現(xiàn)從文件IN.dat中讀取一篇英文文章存入字符串數(shù)組StrResult

中;請編寫StrmoveO函數(shù),其功能是:以行為單位,依次把字符串中所有小寫字母

〃?!ㄗ筮叺淖址畠?nèi)容移到該字符串的右邊存放,然后把小寫字母〃o〃刪除,余下的

字符串內(nèi)容移到已處理字符串的左邊存放,之后把已處理的字符串仍按行重新存入

字符串數(shù)組StrResult中。最后main。函數(shù)調(diào)用函數(shù)WData(),把結(jié)果StrResult

輸出到文件OUT.dat中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,

含標點符號和空格。

例如,原文:nanyfield.Yucancreateanindex

youhavethecorlrectrecord.

結(jié)果: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.函數(shù)RDataO實現(xiàn)從文件IN.dat中讀取一篇英文文章并存入到字符串數(shù)組

StrResult中,請編寫函數(shù)StrRes(),其功能是:以行為單位對行中以空格或標點

符號為分隔的所有單詞進行倒排。最后把已處理的字符串(應不含標點符號)仍按行

重新存入字符串數(shù)組StrResult中,最后調(diào)用函數(shù)WData(),把結(jié)果StrResult輸

出到文件OUT.dat中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,

含標點符號和空格。

例如,原文:YouHeMe

Iamastudent.

結(jié)果: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個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼

code(字符型4位)、產(chǎn)品名稱name(字符型10位)、單價uprice(整型)、數(shù)量

amount(整型)、幽sum(長整型)5部分組成。其中,金額=單價X數(shù)量。函數(shù)RData()

讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編寫AscendSort()函數(shù),其功

能是:按產(chǎn)品名稱從小到大進行排列,若產(chǎn)品名稱相等,則按金額從小到大進行排

列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中。最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到

文件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.已知數(shù)據(jù)文件IN.dat中存有200個四位數(shù),并已調(diào)用讀函數(shù)RDataO把這些數(shù)

存入數(shù)組a中,請編寫函數(shù)evenValO,其功能是:若一個四位數(shù)的千位上的數(shù)字

值小于等于百位上的數(shù)字值,百位上的數(shù)字值小于等于十位上的數(shù)字值,以及十位

上的數(shù)字值小于等于個位上的數(shù)字值,并且該四位數(shù)是偶數(shù),則統(tǒng)計出滿足此條件

的個數(shù)count,并把這些四位數(shù)按從小到大的順序存入數(shù)組b中。最后調(diào)用寫函數(shù)

WDataO,把結(jié)果count以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.dat文件中。

程序中已定義數(shù)組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.已知數(shù)據(jù)文件IN.dat中存有300個四位數(shù),并已調(diào)用讀函數(shù)RDataO把這些數(shù)存

入數(shù)組a中,請編寫函數(shù)jsValueO,其功能是:求出千位數(shù)上的數(shù)減百位數(shù)上的

數(shù)減十位數(shù)上的數(shù)減個位數(shù)上的數(shù)大于0的數(shù)的個數(shù)count,再把所有滿足此條件

的四位數(shù)依次存入數(shù)組b中,然后對數(shù)組b的四位數(shù)按從小到大的順序進行排序。

最后調(diào)用寫函數(shù)WDataO,把結(jié)果輸出到OUT.dat文件中。

例如,9123,9-1-2-3>0,則該數(shù)滿足條件存入數(shù)組b中,且個數(shù)count=count+l?

9812,9-8-1-2<0,則該數(shù)不滿足條件,忽略。

程序中已定義數(shù)組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.函數(shù)RdataO實現(xiàn)從文件IN.dat中讀取一篇英文文章存入到字符串數(shù)組string

中,請編寫函數(shù)CharLeftO,其功能是:以行為單位把字符串中所有字符的ASCH

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

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

存入原字符串對應的位置上。最后把已處理的字符串仍按行重新存入字符串數(shù)組

string中,最后調(diào)用函數(shù)WdataO,把結(jié)果string輸出到文件OUT.dat中。

原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于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.已知數(shù)據(jù)文件IN.dat中存有200個四位數(shù),并已調(diào)用讀函數(shù)RDataO把這些數(shù)存

入數(shù)組a中,請編寫函數(shù)spellValO,其功能是:把千位數(shù)字和十位數(shù)字重新組成

一個新的二位數(shù)ab(新二位數(shù)的十位數(shù)字是原四位數(shù)的千位數(shù)字,新二位數(shù)的個位

數(shù)字是原四位數(shù)的十位數(shù)字),以及把個位數(shù)字和百位數(shù)字組成另一個新的二位數(shù)

cd(新二位數(shù)的十位數(shù)字是原四位數(shù)的個位數(shù)字,新二位數(shù)的個位數(shù)字是原四位數(shù)的

百位數(shù)字),如果新組成的兩個二位數(shù)ab-cd^O且ab-cdW10且兩個數(shù)均是奇數(shù),

同時兩個新數(shù)的十位數(shù)字均不為0,則將滿足此條件的四位數(shù)按從大到小的順序存

入數(shù)組b中,并要計算滿足上述條件的四位數(shù)的個數(shù)count。最后main。函數(shù)調(diào)用

寫函數(shù)WDataO,把結(jié)果count以及數(shù)組b中符合條件的四位數(shù)輸出到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.已知數(shù)據(jù)文件IN.dat中存有200個四位數(shù),并已調(diào)用讀函數(shù)RDataO把這些數(shù)

存入數(shù)組a中,請編寫函數(shù)seVal(),其功能是:依次從數(shù)組a中取出一個四位數(shù),

如果該四位數(shù)連續(xù)小于該四位數(shù)以后的5個數(shù)且該數(shù)是偶數(shù)(該四位數(shù)以后不滿4

個數(shù),則不統(tǒng)計),則統(tǒng)計出滿足此條件的個數(shù)count并把這些四位數(shù)按從小到大的

順序存入數(shù)組b中。最后調(diào)用寫函數(shù)WDataO,把結(jié)果count以及數(shù)組b中符合條

件的四位數(shù)輸出到OUT.dat文件中。

注意:部分程序已經(jīng)給出。程序中已定義數(shù)組a[200]、b[200],已定義變量

counto請勿改動數(shù)據(jù)文件

【答案】

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函數(shù),實現(xiàn)從文件IN.DET中讀取1000個十進制整數(shù)到數(shù)

組evennum中,請編寫函數(shù)Compute()分別計算出evennum中奇數(shù)的個數(shù)odd,彳腰

的個數(shù)even,奇數(shù)的平均值avel,偶數(shù)的平均值ave2以及所有偶數(shù)的方差totfc

的值。最后調(diào)用函數(shù)WDataO,把結(jié)果輸出到OUT.dat文件中。

計算方差的公式如下:

其中:N為偶數(shù)的個數(shù),evennum[i]為偶數(shù),ave2為偶數(shù)的平均值。

原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù)(每個數(shù)均大于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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論