




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1:下列程序的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入數(shù)組xxo請編寫函數(shù)
num(intmjntkJntxx[])實現(xiàn)函數(shù)的規(guī)定,最后調用函數(shù)readwriteDAT。把結果輸出到文獻
out.dat中。
例如:若輸入17,5,則應輸出:19,23,29,31,37。
注意:部分源程序已給出。
請勿改動主函數(shù)main。和函數(shù)readwriteDAT。的內容。
-----類型:素數(shù)。
voidnum(intmjntk,intxx[])/*標準答案*/
{intdata=m+l;
inthalf,n=O,l;
while(l)
{half=data/2;for(l=2;l<=half;l++)
if(data%l==O)break;
if(l>half)
{xx[n]=data;n++;}
if(n>=k)break;
data++;
})
或者:
voidnum(intmjntk,intxx(])
{inti,j,s=O;
for(i=m+l;k>0;i++)
{for(j=2;j<i;j++)
if(i%j==O)break;/*注:素數(shù)為只能被自己和1整除的數(shù).假如i%j等于0,說明i不是素數(shù),跳
出本層循環(huán)*/
if(i==j)
{xx[s++]=i;k-;}
})
或者:
voidnumfintm,intk,intxx[])
{inti=0;
for(m=m+l;k>0;m++)
if(isP(m))
{xx(i++]=m;
k-;})
原程序如下:
#include<conio.h>
ttinclude<stdio.h>
voidreadwriteDAT();
intisP(intm)
{inti;
for(i=2;i<m;i++)
if(m%i==0)return0;
return1;
)
voidnum(intm,intk,intxx[])
(
)
main()
{intm,n,xx[1000];
clrscr();
printf("\nPleaseentertwointegers:");
scanf(”%d,%d”,&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)
printf("%d",xx[m]);
printf("\n");
readwriteDAT();
system("pause");
)
voidreadwriteDAT()
{intm,n,xx[lOOO],i;
FILE*rf,*wf;
rf=fopen("in.dat"z"r");
wf=fopenC'out.dat","w");
for(i=0;i<10;i++){
fscanffrt"%d%d",&m,&n);
num(m,n,xx);
for(m=0;m<n;m++)fprintf(wf,"%d",xx[m]);
fprintf(wf,"\n");
)
fclose(rf);
fclose(wf);
)
2:已知數(shù)據(jù)文獻IN.DAT中存有200個四位數(shù),并已調用讀函數(shù)readDat()把這些數(shù)存入數(shù)組
a
中,請考生編制一函數(shù)jsVal(),其功能是:假如四位數(shù)各位上的數(shù)字均是0或2或4或6或8,
則
記錄出滿足此條件的個數(shù)ent,并把這些四位數(shù)按從大到小的順序存入數(shù)組b中。最后
main()
函數(shù)調用寫函數(shù)writeDat()把結果ent以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.DAT文獻
中。
注意:部分源程序存在文獻PROG1.C文獻中。
程序中已定義數(shù)組:a[200],b[200],已定義變量:ent
請勿改動數(shù)據(jù)文獻IN.DAT中的任何數(shù)據(jù)、主函數(shù)main。、讀函數(shù)readDat。和寫函數(shù)
writeDat()
的內容
voidjsVal。/*標準答案*/
{intbb⑷;
intIJAJIag;
for(l=0;l<200;l++)
{bb[0]=a[l]/1000;bb[l]=a[l]%1000/100;
bb[2]=a[i]%100/10;bb[3]=a[l]%10;
for(j=0;j<4;j++)
{if(bb[j]%2==0)
flag=l;
else
{flag=O;break;}
)
if(flag==l)
{b[cnt]=a[l];
cnt++;}}
for(l=0;l<cnt-l;l++)
for(j=l+l;j<cnt;j++)
if(b[l]<bU])
{k=b[l];b[l]=b[j];b[j]=k;}
)
原程序如下:
//include<stdio.h>
#defineMAX200
inta[MAX],b[MAX],ent=0;
voidjsVal()
(
)
voidreadDat()
{inti;
FILE*fp;
fp=fopen("in.dat'\"r");
for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);
fclose(fp);
}
voidmain()
{inti;
readDat();
jsVal();
printf("滿足條件的數(shù)=%d\n”,ent);
for(i=0;i<ent;i++)printf("%d",b[i]);
printf("\n");
writeDat();
system("pause");
)
writeDat()
{FILE*fp;
inti;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n",ent);
for(i=0;i<ent;i++)fprintfffp,"%d\n"zb[i]);
fclose(fp);
)
3:函數(shù)READDAT。實現(xiàn)從文獻IN.DAT中讀取一篇英文文章存入到字符串數(shù)組XX中;請編制
函數(shù)STROR(),其函數(shù)功能是:以行為單位把字符串中的所有小寫字母。左邊的字符串內容移
到該串的右邊存放,然后并把小寫字母o刪除,余卜?的字符串內容移到已解決字符串的左邊
存放.最后把已解決的字符串仍按行重新存入字符串數(shù)組XX中,最后調用函數(shù)WRITEDATO把
結果XX輸出到文獻OUT.DAT中.
例如:原文:Youcancreateanindexonanyfield.
youhavethecorrectrecord.
結果:nanyfield.Youcancreateanindex
rd.yuhavethecrrectrec
原始數(shù)據(jù)文獻存放的格式是:每行的寬度均小于80個字符,含標點符號和空格.
---------類型:字符串(單詞)的倒置和刪除。
voidStrOR(void)/*標準答案*/
{intindex,strl;
charch;
for(l=0;l<maxline;l++)
{strl=strlen(xx[l]);
index=strl;
for(j=0;j<strl;j++)
if(xx[l]0]=='o')
{for(k=j;k<strl-l;k++)
xx[l][k]=xx[l](k+l];
xx[l][strl-l]=";
index=j;}
for(j=strl-l;j>=index;j-)
{ch=xx[l][strl-l];
for(k=strl-l;k>0;k-)
xx[l][k]=xx[l][k-l];
xx[l][O]=ch;}
)
)
或者:
voidStrOR(void)
{inti;
chara[80],*p;
for(i=0;i<maxline;i++)
{p=strchr(xx[i],'o,);
while(p)
{memset(a,0,80);
memcpy(a,xx[i],p-xx[i]);
strcpy(xx[i],p+l);
strcat(xx[i],a);
p=strchr(xx[i];o');})
)
或者:
voidStrOR(void)/*我的非指針解法*/
{intijightojk;
chartem[80];
for(i=0;i<maxline;i++)
{k=0;righto=0;memset(tem,0,80);
for(j=strlen(xx[i])-l;j>=0;j-)
{if(xx[i][j]=='o'){righto=j;break;}}
for(j=righto+l;j<strlen(xx[i]i;j++)tem[k++]=xx[i][j];
for(j=0;j<righto;j++)
{if(xx[i][j]!='o')tem[k++]=xx[i][j];}
strcpy(xx[i]ftem);
})
或者:
注:該題規(guī)定的字符串中所有小寫字母。左邊的字符串內容移到該串的右邊存放,即將串中
“最后”一個字母。左右兩側的內容互換。題中第一個while。特環(huán)的作用是讓pl指向最
后一個字母第一個ctrcat()函數(shù)的作用是將pl以后的字符都放到新串t中,第二個
strcat()函數(shù)的作用是將pl以前的字符連接到新串t的后面(注意:在此之前要讓pl所指的
單元成為P1前面字符串的結束位置*這時完畢左右互換。最后一個while()循環(huán)的
作用是刪除新串中的所有小寫字母采用的刪除方法足不是'?!淖帜敢宦闪粝?,否則不留
(即相稱于刪除。)
voidStrOR(void)
{inti;
char*plz*p2,t[80];
for(i=0;i<maxline;i++)
{t[0]='\0';p2=xx[i];
while(*p2)
{if(*p2=='o')pl=p2;
p2++,}
strcat(tzpl+l);
*pl='\O';strcat(t/xx(i));
pl=xx[i];p2=t;
while(*p2)
{if(*p2!='o')*pl++=*p2;
p2++;
)
*pl='\O';
})
或者:
注:該題的重要算法是先讓兩字符指針都指向串尾,然后使一指針(pl)往前移動,當出現(xiàn)不是
字母時則表達在pl+1與p2之間是?個單詞,并將該單詞存入-變量(tl),最后
將tl連接到新串中(t):接著再往前找第二個單詞,依次類推直到字符串頭。由此可知新串就
是原串中各單詞的倒排。
voidStrOL(void)
(
inti,k;
char*pl,*p2;
chart[80]ztl[80];
for(i=0;i<maxline;i++)
{p2=pl=strchr(xx(i];\0')-'\0';
t[O]=tl[O]='\O';
k=l;
while(k)
(
while(isalpha(*pl)==O&&pl!=xx[i]){pl-;p2=pl;}
while(isalpha(*pl)&&pl>=xx[i])pl-;
memcpy(tl,pl+l/p2-pl);
tl[p2-pl]=0;
strcat(t,tl);
strcat(t;'");
if(pl<xx[i])k=0;
)
strcpy(xx[i],t);
)
)
原程序如下:
#include"stdio.h"
#include"string.h"
#include"conio.h"
charxx[50][80];
intmaxline=O;
intReadDat(void);
voidWriteDat(void);
voidStrOR(void)
)
voidmain()
{clrscr();
if(ReadDat())
{printf("Can'topenthefile!\n");
return;}
StrOR();
WriteDat();
system("pause");
)
intReadDat(void)
{FILE*fp;inti=O;char*p;
if((fp=fopen("in.dat",Hr"))==NULL)return1;
while(fgets(xx[i]z80,fp)!=NULL)
{p=strchr(xx[i],'\n');
if(p)*p=O;
i++;
)
maxline=i;
fclose(fp);
return0;
)
voidWriteDat(void)
{FILE*fp;
inti;
,,
fp=fopen("out.dat,"w");
for(i=0;i<maxline;i++)
{printf("%s\n”,xx[i]);
fprintf(fp,"%s\n",xx[i]);
)
fclose(fp);
}
4:函數(shù)ReadDat()實現(xiàn)從文獻IN.DAT中讀取一篇英文文章存入到字符串數(shù)組xx中;請編制
函
數(shù)StrOL(),其函數(shù)的功能是:以行為單位對行中以空格或標點符號為分隔的所有單詞進行
倒排,同時去除標點符號,之后把已解決的字符串(應不含標點符號)仍按行重新存入字符串數(shù)
組xx中。最后main。函數(shù)調用函數(shù)WriteDat。把結果xx輸出到文獻0UT6.DAT中。
例如:原文:YouHeMe
Iamastudent.
結果:MeHeYou
studentaamI
原始數(shù)據(jù)文獻存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。
-------類型:字符串(單詞)的倒置和刪除。
voidStrOL(void)/*標準答案*/
{intIJ,kzstrl,l;charc;
for(l=0;l<maxline;l++)
for(j=0;j<strlen(xx[l]);j++)
{c=xx[l][j);
if((c>='A'&&c<=,Z,)||(c>='a,&&c<=,z,)||c=='');
elsexx[l][j]='
for(l=0;l<maxline;l++)
{charch[80]={0};charpp[80]={0};
strl=strlen(xx[l]);
l=strl-l;k=l;
while(l)
{while(((xx[l][l]>='a,&&xx[l][l]<='z,)11(xx[l][l]>='A"&&xx[l][l]<='z,))&&l>=0)
{for(j=k;j>=0;j-)
pp[j+l]=pp[j];pp[O]=xx[l][l]:k++;l-;)
strcat(ch,pp);strcpy(pp,);k=l;
if(l==-l)break;
while((xx[l][l]<'A,||xx[l][l]>'z,)&&l>=O)
{for(j=k;j>=0;j-)
pp[j+l]=ppO];pp[O]=xx[l][l];k++;I-;)
strcat(ch,pp);strcpy(pp,);
k=0;
if(l==-l)break;}
strcpy(xx[l],ch);
})
或者:
voidStrOL(void)
{inti,j,k,m,n,H;
charyy[80];
for(i=0;i<maxline;i++)
{ll=strlen(xx[i]);k=n=0;
for(j=ll-l;j>=0;j-)
{if(isalpha(xx[i][j]))k++;
else
{for(m=l;m<=k;m++)
yy[n++]=xx[i]U+m];k=0;}
if(xx(i]D]==")yy[n++]='
)
for(m=l;m<=k;m++)yy[n++]=xx[i][j+m];
yy[n]=O;strcpy(xx[i],yy);
)
)
原程序如下:
#include"stdio.h"
#include"string.h"
#include"conio.h"
#include"ctype.h"
charxx[50][80];
intmaxline=O;
intReadDat(void);
voidWriteDat(void);
voidStrOR(void)
{
)
voidmain()
{clrscr();
if(ReadDat())
{printff'Can'topenthefile!\n");
return;}
StrOR();
WriteDat();
system("pause");
)
intReadDat(void)
{FILE*fp;inti=O;char*p;
if((fp=fopen("in.dat"/,r"))==NULL)return1;
while(fgets(xx[i]z80Jp)!=NULL)
{p=strchr(xx[i]/\n');
if(p)*p=O;
i++;
)
maxline=i;
fclose(fp);
return0;
)
voidWriteDat(void)
{FILE*fp;
inti;
fp=fopen("out.dat"/"w");
for(i=0;i<maxline;i++)
{printf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
)
fclose(fp);
5:在文獻in.dat中有200個正整數(shù),且每個數(shù)均在1000至9999之間。函數(shù)ReadDat()讀取這
200
個數(shù)存放到數(shù)組aa中。請編制函數(shù)jsSort(),其函數(shù)的功能是:規(guī)定按每個數(shù)的后三位的大小
進行升序排列,然后取出滿足此條件的前10個數(shù)依次存入數(shù)組b中,假如后三位的數(shù)值相等,
則
按原先的數(shù)值進行降序排列。最后調用函數(shù)WriteDat()把結果bb輸出到文獻out.dat中。
例:解決前60125099901270258088
解決后90126012702580885099
注意:部分源程序已給出。
請勿改動主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)據(jù)函數(shù)WriteDat。的內容。
voidjsSort。/*標準答案*/
{intl,jzdata;
for(l=0;l<199;l++)
for(j=l+l;j<200;j++)
{if(aa[l]%1000>aa[j]%1000)
{data=aa[l];aa[l]=aa[j];aa[j]=data;}
elseif(aa[l]%1000==aaO]%1000)
if(aa[l]<aa[j])
{data=aa[l];aa[l]=aa[j];aa[j]=data;}
)
for(l=0;l<10;l++)
bb[l]=aa[l];
)
原程序如下:
#include<stdio.h>
#include<string.h>
#include<conio.h>
intaa[200],bb[10];
voidjsSort()
(
)
voidmain()
{readDat();
jsSort();
writeDatf);
system("pause");
)
readDat()
{FILE*in;
inti;
in=fopen("in.dat","r");
for(i=0;i<2OO;i++)fscanf(in,"%d,”,&aa[i]);
fclose(in);
}
writeDat()
{FILE*out;
inti;
clrscr();
out=fopen("out.dat",''w");
for(i=0;i<10;i++){
printf("i=%d/%d\n",i+l,bb[i|);
fprintf(out,"%d\n",bb(i]);
fclose(out);
)
6:在文獻in.dat中有200個正整數(shù),且每個數(shù)均在1000至9999之間。函數(shù)ReadDat()讀取這
200
個數(shù)存放到數(shù)組aa中。請編制函數(shù)jsSort。,其函數(shù)的功能是:規(guī)定按每個數(shù)的后三位的大小
進行降序排列,然后取出滿足此條件的前10個數(shù)依次存入數(shù)組b中,假如后三位的數(shù)值相等,
則
按原先的數(shù)值進行升序排列。最后調用函數(shù)WriteDat。把結果bb輸出到文獻out.dat中。
例:解決前90125099601270258088
解決后50998088702560129012
注意:部分源程序已給出。
請勿改動主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內容。
voidjsSort()/*標準答案*/
{intIjdata;
for(l=0;l<199;l++)
for(j=l+l;j<200;j++)
{if(aa[l]%1000<aa[j]%1000j
{data=aa[l];aa[l]=aa[j];aa[j]=data;}
elseif(aa[l]%1000==aa[j]%1000)
if(aa[l]>aa[j])
{data=aa[l];aa[l]=aa[j];aa[j]=data;}
)
for(l=0;l<10;l++)
bb[l]=aa[l];
原程序如下:
#include<stdio.h>
#include<string.h>
#include<conio.h>
intaa[200]zbb[10];
voidjsSort()
(
)
voidmain()
(
readDat();
jsSort();
writeDat();
system("pause");
)
readDat()
(
FILE*in;
inti;
in=fopen("in.dat","r");
for(i=0;i<200;i++)fscanf(in,"%d,",&aa[i]);
fclose(in);
)
writeDat()
FILE*out;
inti;
clrscr();
out=fopen("out.dat"/"w");
for(i=0;i<10;i++){
,,
printf("i=%d,%d\n/i+l/bb[i|);
fprintf(out,"%d\n"zbb[i]);
)
fclose(out);
)
7:已知在文獻IN.DAT中存有100個產品銷售記錄,每個產品銷售記錄由產品代碼dm(字符型
4
位),產品名稱m"字符型1。位),單價dj(整型),數(shù)量si(整型),金額je(長整型)四部分組成。其
中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat。是讀取這100個銷售記錄并存入結構數(shù)組sell
中。請編制函數(shù)SortDatO,其功能規(guī)定:按產品代碼從大到小進行排列,若產品代碼相同,則
按金額從人到小進行排列,最終排列結果仍存入結構數(shù)組sell中,最后調用函數(shù)WriteDat。把
結果輸出到文獻OUT10.DAT中。
注意:部分源程序存放在PROG1.C中。
請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)據(jù)函數(shù)WriteDat()的內容。
voidSortDat。/*標準答案*/
{intIJ;
PROxy;
for(l=0;l<99;l++)
for(j=l+l;j<100;j++)
if(strcmp(sell[l].dm,sell[j].din)<0)
{xy=sell[l];sell[l]=sell[j];sell[j]=xy;}
elseif(strcmp(sell[l].dm/sellO].dm)==0)
if(sell[l].je<sell[j].je)
{xy=sell[l];sell[l]=sell[j];sell[j]=xy;}
)
原程序如下:
#include<stdio.h>
#include<mem.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
ttdefineMAX100
typedefstruct{
chardm[5];/*產品代碼*/
char/*產品名稱*/
intdj;/*單價,/
intsi;/*數(shù)量*/
longje;/*金額*/
}PRO;
PROsell[MAX];
voidReadDat();
voidWriteDatf);
voidSortDat()
voidmain()
{memset(sell,0,sizeof(sell));
ReadDat();
SortDat();
WriteDat();}
voidReadDat()
{FILE*fp;
charstr[80],ch[ll];
inti;
fp=fopen("IN.DAT";'r");
for(i=0;i<100;i++){
fgets(strz80,fp);
memcpy(sell[i].dm,strz4);
memcpy(sell[i].mc/str+4,10|;
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;}
fclose(fp);}
voidWriteDat(void)
{FILE*fp;
inti;
fp=fopen(',OUT10.DAT";'w");
for(i=0;i<100;i++){
fprintf(fp;'%s%s%4d%5d%101d\n",
sell[i].dmzsell[i].mczsell[i].dj,sell[i].sl,sell[i].je);}
fclose(fp);}
8:函數(shù)ReadDat。實現(xiàn)從文獻ENG.IN中讀取一篇英文文章,存入到字符串數(shù)組xx中;請編制
函
數(shù)encryptChar。,按給定的替代關系對數(shù)組xx中的所有字符進行替代,仍存入數(shù)組xx的相應
的位置上,最后調用函數(shù)WriteDat()把結果xx輸出到文獻PS1.DAT中。
替代關系:f(p)=p*llmod256(p是數(shù)組中某一個字符的ASCII值,f(p)是計算后新字符的
ASCII值),假如計算后f(p)值小于等于32或大于130,則該字符不變,否則將f(p)所相應的字符
進行替代。
注意:部分源程序已給出。原始數(shù)據(jù)文獻存放的格式是:每行的寬度均小于80個字符。
請勿改動主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)據(jù)函數(shù)WriteDat。的內容。
voidencryptChar()/*標準答案*/
{intI;
char*pf;
for(l=0;l<maxline;l++)
{pf=xx[l];
while(*pf!=0)
{if(*pf*ll%256>130||*pf*U%256<=32);
else
*pf=*pf*ll%256;
pf++;)
)
)
或者:
voidencryptChar()
{intij;
char*p;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
{p=(xx[i][j]*ll)%256;
if(p<=32||p>130)
elsexx[i][j]=p;}
)
原程序如下:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
unsignedcharxx[50][80];
intmaxline=O;/*文章的總行數(shù)*/
intReadDat(void);
voidWriteDat(void);
voidencryptChar()
{
)
voidmain()
(
clrscr();
if(ReadDat()){
printf("數(shù)據(jù)文獻ENG.IN不能打開!\n\007");
return;
encryptChar();
WriteDat();
system("pause");
)
intReadDat(void)
(
FILE*fp;
inti=O;
unsignedchar*p;
if((fp=fopen("eng.in,,,"r"))==NULL)return1;
while(fgets(xx[i],80,fp)!=NULL){
p=strchr(xx[i];\n');
if(p)*p=O;
i++;
)
maxline=i;
fclose(fp);
return0;
)
voidWriteDat(void)
(
FILE*fp;
inti;
fp=fopen("psl.dat"/"w");
for(i=0;i<maxline;i++){
printf(u%s\n”,xx[i]);
,
fprintf(fp/%s\n"/xx[i]);
)
fclose(fp);
)
9:函數(shù)ReadDat()實現(xiàn)從文獻IN.DAT中讀取一篇英文文章存入到字符串數(shù)組xx中;請編制
函
數(shù)SortCharD(),其函數(shù)的功能是:以行為單位對字符按從大到小的順序進行排序,排序后
的結果仍按行重新存入字符串數(shù)組xx中。最后main()醫(yī)數(shù)調用函數(shù)WriteDat。把結果xx輸
出
至IJ文獻0UT2.DAT中。
例:原文:dAe,BfC.
CCbbAA
結果:fedCBA.,
bbCCAA
原始數(shù)據(jù)文獻存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。
注意:部分源程序存放在FROG1.C中。
請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat。的內容。
.......類型:字符串(單詞)的倒置和刪除。
voidSortCharD(void)/*標準答案*/
{intIJ,k,strl;
charch;
for(l=0;l<maxline;l++)
{strl=strlen(xx[l]);
for(j=0;j<strl-l;j++)
for(k=j+l;k<strl;k++)
if(xx[l]U]<xx[l][k])
{ch=xx[l]01;xx[l][j]=xx[l][k];xx[l][k]=ch;}
})
原程序如下:
#include<stdio.h>
//include<string.h>
^include<conio.h>
charxx(50][80];
intmaxline=0;/*文章的總行數(shù)*/
intReadDat(void);
voidWriteDat(void);
voidSortCharD(void)
{int
charch;
for(l=0;l<maxline;l++)
{strl=strlen(xx[l]);
for(j=0;j<strl-l;j++)
for(k=j+l;k<strl;k++)
if(xx[l]U]<xx[l][k])
{ch=xx[l][j];xx[l][j]=xx[l][k];xx[l][k]=ch;}
)
)
voidmain()
(
clrscr();
if(ReadDat()){
printf("數(shù)據(jù)文獻IN.DAT不能打開!\n\007");
return;
)
SortCharD();
WriteDat();
system("pause");
)
intReadDat(void)
(
FILE*fp;
inti=0;
char*p;
if((fp=fopenC'IN.DAT","r")>==NULL)return1;
while(fgets(xx[i]z80,fp)!=NULL){
p=strchr(xx[i],'\n');
if(p)*p=O;
i++;
}
maxline=i;
fclose(fp);
return0;
)
voidWriteDat(void)
(
FILE*fp;
inti;
clrscr();
',
fp=fopen(OUT2.DAT"/"w");
for(i=0;i<maxline;i++){
printf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
)
fclose(fp);
)
10:請編制函數(shù)ConvertCharAO,其函數(shù)的功能是:以行為單位把字符串中的所有小寫字母
改寫成該字母的下一個字母,假如是字母z,則改寫成字母a,大寫字母和其它字符保持不
變。
把已解決的字符串仍按行重新存入字符串數(shù)組xx中。。最后main()函數(shù)調用函數(shù)WritaDat。
把結果xx輸出到文獻0UT3.DAT中。
例:原文:Adb.Bcdza
abck.LLhj
結果:Aec.Bdeab
bcdl.LLik
原始數(shù)據(jù)文獻存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。
注意:部分源程序存放在PR0G1.C中。
請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat。的內容。
.......類型:字符串(單詞)的倒置和刪除。
voidConvertCharA(void)/*標準答案*/
{int
for(l=0;l<maxline;l++)
{str=strlen(xx[l]);
for(j=0;j<str;j++)
if(xx[l]U]=='z')xx[l]U]='a';
elseif(xx[l]O]>='a'&&xx[l][j]<=,y,)xx[l][j]+=l;
)
)
原程序如下:
//include<stdio.h>
^include<string.h>
ttinclude<conio.h>
charxx[50][80];
intmaxline=0;/*文章的總行數(shù)*/
intReadDat(void);
voidWriteDat(void);
voidConvertCharA(void)
(
)
voidmain()
{clrscr();
if(ReadDat()){
printf("數(shù)據(jù)文獻IN.DAT不能打開!\n\007“);
return;
)
ConvertCharA();
WriteDat();
system("pause");
intReadDat(void)
{FILE*fp;inti=0;char*p;
if((fp=fopenC'IN.DAT","r")|==NULL)return1;
while(fgets(xx[i]z80,fp)!=NULL){
p=strchr(xx[i],'\n');
if(p)*p=0;i++;
)
maxline=i;fclose(fp);return0;
)
voidWriteDat(void)
(
FILE*fp;inti;
clrscr();
fp=fopenC'OUTS.DAT","w");
for(i=0;i<maxline;i++){
printf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
)
fclose(fp);
)
11:下列程序的功能是:把s字符串中的所有字母改寫成該字母的下一個字符,字母z改寫成
字
母a。規(guī)定大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不做改變。請編寫函數(shù)
chg(char*s)實現(xiàn)程序的規(guī)定,最后調用函數(shù)readwriteDat。把結果輸出到文獻out.dat中。
例如:s字符串中原有的內容為:Mn.l23Zxy,則調用該函數(shù)后,結果為No.l23AyZo
注意:部分源程序已給出。
請勿改動主函數(shù)main。和瑜出數(shù)據(jù)函數(shù)readwriteDat。的為容。
voidchg(char*s)/*標準答案*/
{while(*s)
if(*s=='z'||*s==,Z,)
{*s-=25;s++;}
elseif(*s>='a'&&*s<='y')
{*s+=l;s++;}
elseif(*s>='A'&&*s<=,Y')
{*s+=l;s++;}
elses++;
}
或者:
voidchg(char*s)
{inti,k;
k=strlen(s);
for(i=0;i<k;i++)
{if(s(i]=='z'||s[i]=='Z')
s[i]-=25;
else
if(isalpha(s[i]))
s[i]++;}
)
原程序如F:
#include<conio.h>
#include<string.h>
#include<stdio.h>
ttinclude<ctype.h>
ttdefineN81
voidreadwriteDAT();
voidchg(char*s)
(
)
main()
(
chara[N];
clrscr();
printff'Enterastring:");gets(a);
printf("Theoriginalstringis:");puts(a);
chg(a);
printf("Thestringaftermodified:");
puts⑶;
readwriteDAT();
system("pause");
}
voidreadwriteDAT()
(
inti;
chara[N];
FILE*rf,*wf;
rf=fopen("in.dat"z"r");
wf=fopenC'out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%sH,a);
chg(a);
fprintf(wf,"%s\n"za);
)
fclose(rf);
伺ose(wf);
}
12:已知在文獻IN.DAT中存有100個產品銷售記錄,每個產品銷售記錄由產品代碼dml字符
型4
位),產品名稱me(字符型10位),單價dj(整型),數(shù)量si(整型),金額je(長整型)四部分組成。其
中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat。是讀取這100個銷售記錄并存入結構數(shù)組sell
中。請編制函數(shù)SortDat。淇功能規(guī)定:按產品名稱從小到大進行排列,若產品名稱相同,則
按金額從小到大進行排列.最終排列結果仍存入結構數(shù)組sell中,最后調用函數(shù)WriteDat。把
結果輸出到文獻OUT5.DAT中。
注意:部分源程序存放在FROG1.C中。
請勿改動上函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat。的內容。
voidSortDat()/*標準答案,/
{intl,j;
PROxy;
for(l=0;l<99;l++)
for(j=l+l;j<100;j++)
if(strcmp(sell[l].dm,sell[j].dm)<0)
{xy=sell[l];sell[l]=sell[j];sell[j]=xy;}
elseif(strcmp(sell[l].dm/sell[j].dm)==O)
if(sell[l].je<sell[j].je)
{xy=sell[l];sell[l]=sell[j];sell[j]=xy;}
)
原程序如下:
#include<stdio.h>
#include<mem.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#defineMAX100
typedefstruct{
chardm[5];/*產品代碼*/
char產品名稱*/
intdj;/*單價*/
intsi;/*數(shù)量*/
longje;/*金額*/
}PRO;
PROsell[MAX];
voidReadDat();
voidWriteDatf);
voidSortDat()
(
)
voidmain()
{memset(sell,0,sizeof(sell));
ReadDat();
SortDat();
WriteDat();}
voidReadDat()
{FILE*fp;
charstr[80],ch[ll];
inti;
fp=fopen("IN.DAT";,r");
for(i=0;i<100;i++){
fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mczstr+4,10|;
memcpy(ch,str+14z4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch/str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;}
fclose(fp);)
voidWriteDat(void)
{FILE*fp;
inti;
fp=fopen("OUT5.DAr;'w");
for(i=0;i<100;i++){
fprintf(fp;'%s%s%4d%5d%101d\n",
fclose(fp);}
13:已知在文獻IN.DAT中存有100個產品銷售記錄,每個產品銷售記錄由產品代碼dm(字符
型4
位),產品名稱me(字符型10位),單價dj(整型),數(shù)量si(整型),金額je(長整型)四部分組成。其
中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat。是讀取這100個銷售記錄并存入結構數(shù)組sell
中。請編制函數(shù)SortDat。,其功能規(guī)定:按產品代碼從小到大進行排列,若產品代碼相同,則
按金額從大到小進行排列最終排列結果仍存入結構數(shù)組sell中,最后調用函數(shù)WriteDat。把
結果輸出到文獻OUT6.DAT中。
注意:部分源程序存放在PR0G1.C中。
請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內容。
voidSortDat()/*標準答案,/
{intl,j;
PROxy;
for(l=0;l<99;l++)
for(j=l+l;j<100;j++)
if(strcmp(sell[l].mc,sell[j].mc)>0)
{xy=sell(l];sell[l]=sell[j];sell[j]=xy;}
elseif(strcmp(sell[l].mc,sell[j].mc)==O)
if(sell(l].je<selig].je)
{xy=sell[l];sell[l]=sell[j];sell[j]=xy;}
)
原程序如下:
#include<stdio.h>
#include<mem.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#defineMAX100
typedefstruct{
chardm⑸;/*產品代碼*/
char/*產品名稱*/
intdj;/*單價*/
intsi;/*數(shù)量*/
longje;/*金額*/
}PRO;
PROsell[MAX];
voidReadDatf);
voidWriteDat();
voidSortDat()
(
)
voidmain()
{memset(sell,0,sizeof(sell));
ReadDat();
SortDatf);
WriteDat();}
voidReadDat()
{FILE*fp;
charstr[80],ch[ll];
inti;
fp=fopen("IN.DAT',;'r");
for(i=0;i<100;i++){
fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc/str+4,10|;
memcpy(ch/str+14,4);ch[4]=0;
sell(i].dj=atoi(ch);
memcpy(ch/str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;}
fclose(fp);}
voidWriteDat(void)
{FILE*fp;
inti;
fp=fopen("OUT6.DAT";'w");
for(i=0;i<100;i++){
fprintf(fp;'%s%s%4d%5d%101d\n",
sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sLsell[i].je);}
fclose(fp);}
14:已知數(shù)據(jù)文獻IN.DAT中存有200個四位數(shù),并已調用讀函數(shù)readDat()把這些數(shù)存入數(shù)組
a
中,請考生編制一函數(shù)jsVal(),其功能是:依次從數(shù)組a中取出一個四位數(shù),假如該數(shù)連續(xù)天
于該四位數(shù)以后的5個數(shù)且該數(shù)是奇數(shù),則記錄出滿足此條件的個數(shù)ent,并把這些四位數(shù)按
從小到大的順序存入數(shù)組b中。并要計算滿足上述條件的四位數(shù)的個數(shù)ento最后main()
函數(shù)
調用寫函數(shù)writeDat()把結果ent以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.DAT文獻中。
注意:部分源程序存在文獻PR0G1.C文獻中。
程序中已定義數(shù)組:已定義變量:
a[200]rb[200],ent
請勿改動數(shù)據(jù)文獻IN.DAT中的任何數(shù)據(jù)、主函數(shù)main。、讀函數(shù)readDat。和寫函數(shù)
writeDat()
的內容。
voidjsVal()/*標準答案*/
{intIJ,flag=O;
intk;
for(l=0;l<MAX-5;l++)
{for(j=l+l;j<=l+5;j++)
{if(a[l]>aOD
flag=l;
else{flag=O;break;}
if(a[l]%2==0)
flag=O;}
if(flag==l)
{b[cnt]=a[l];cnt++;}}
for(l=0;l<cnt-l;l++)
for(j=l+l;j<cnt;j++)
if(b[l]>bO])
{k=b[i];b[i]=bU];bU]=k;}
)
原程序如下:
#include<stdio.h>
ttdefineMAX200
inta[MAX],b[MAX],ent=0;
voidjsVal()
voidreadDat()
{inti;
FILE*fp;
fp=fopen("in.dat"z"r");
for(i=0;i<MAX;i++)fscanf(fp,"%d"z&a[i]);
fclose(fp);
)
voidmain()
{inti;
readDat();
jsVal();
printf("滿足條件的數(shù)=%d\n,ent);
for(i=0;i<ent;i++)printf("%d",b[i]);
printf("\n");
writeDat();
system("pause");
)
writeDatf)
{FILE*fp;
inti;
fp=fopenC'out.dat","w");
fprintf(fp,"%d\n",ent);
for(i=0;i<ent;i++)fprintf(fp,"%d\n"zb[i]);
fclose(fp);
15:已知數(shù)據(jù)文獻IN.DAT中存有200個四位數(shù),并已調用讀函數(shù)readDat()把這些數(shù)存入數(shù)組
a
中,請考生編制一函數(shù)jsVal(),其功能是:若一個四位數(shù)的千位數(shù)字上的值小于等于百位數(shù)字
上的值,百位數(shù)字上的值小于等于十位數(shù)字上的值,十位數(shù)字上的值小于等于個位數(shù)字上的值,
并且此四位數(shù)是偶數(shù),則記錄出滿足此條件的個數(shù)ent,并把這些四位數(shù)按從大到小的順,字存
入數(shù)組b中。最后main()函數(shù)調用寫函數(shù)writeDat()把結果ent以及數(shù)組b中符合條件的四
位
數(shù)輸出到OUT.DAT文獻中。
注意:部分源程序存在文獻PROG1.C文獻中。
程序中已定義數(shù)組:a[200],b[2OOL已定義變量:ent
請勿改動主函數(shù)main。、讀函數(shù)readDat。和寫函數(shù)writeDat()的內容。
voidjsVal()/*標準答案*/
{intIJ;
intal,a2,a3,a4,k;
for(l=0;l<MAX;l++)
{al=a[l]/1000;a2=a[l]%1000/100;
a3=a[l]%100/10;a4=a(l]%10;
if((al<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[l]%2==0))
{b[cnt]=a[l];
cnt++;}
)
for(l=0;l<cnt-l;l++)
for(j=l+l;j<cnt;j++)
if(b[l]>bU])
{k=b[l];b[l]=bO];bUJ=k;}
原程序如下:
#include<stdio.h>
ttdefineMAX200
inta[MAX],b[MAX)zent=0;
voidjsVal()
|
)
voidreadDat()
{inti;
FILE*fp;
,|
fp=fopen("in.dat/"r");
for(i=0;i<MAX;i++)fscanf(fp,"%d"z&a[i]);
fclose(fp);
)
voidmain()
{inti;
readDat();
jsVal();
printf("滿足條件的數(shù)=%d\n”,ent);
for(i=0;i<ent;i++)printf("%d",b[i]);
printf("\n");
writeDat();
system("pause");
)
writeDat()
{FILE*fp;
inti;
fp=fopenf'out.dat","w");
fprintf(fp,"%d\n",ent);
for(i=0;i<ent;i++)fprintf(fp,"%d\n"zb[i]);
fclose(fp);
)
16:函數(shù)ReadDat()實現(xiàn)從文獻IN.DAT中讀取?篇英文文章存入到字符串數(shù)組xx中,請編制
函
數(shù)StrCharJR(),其函數(shù)的功能是:以行為單位把字符串中所有字符的ASCII值右移4位,然后把
右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串相應的位置
上。
最后把已解決的字符串仍按行重新存入字符串數(shù)組xx中,最后調用函數(shù)writeDat。把結果xx
輸出到文獻OUT8.DAT中,原始數(shù)據(jù)文獻存放的格式是:每行的寬度均小于80個字符,含標
點符
號和空格。
注意:部分源程序已給出。
請勿改動主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)據(jù)函數(shù)writeDat()的內容。
voidStrCharJR(void)/*標準答案*/
{intIJ,strl;
for(l=0;l<maxline;l++)
{strl=strlen(xx[l]);
for(j=0;j<strl;j++)
xx[l][j]+=xx[l][j]?4;
注:這個編程題比二級考得還簡樸。
voidStrCharJR(void)
{inti,j;
for(i=0;i<maxline;i++)
for(j=0;xx[i][j]!="\0';j++)
xx[i][j]+=xx[j][j]?4;
)
原程序如下:
#include<stdio.h>
//include<string.h>
#include<conio.h>
charxx[50][80];
intmaxline=0;/*文章的總行數(shù)*/
intReadDat(void);
voidWriteDat(void);
voidStrCharJR(void)
(
}
voidmain()
{clrscrf);
if(ReadDat()){
printf("數(shù)據(jù)文獻IN.DAT不能打開!\n\007”);
return;
)
StrCharJR();
WriteDat();
intReadDat(void)
{FILE*fp;
inti=0;
char*p;
if((fp=fopenC'IN.DAT","r")|==NULL)return1;
while(fgets(xx[i]z80,fp)!=NULL){
p=strchr(xx[i],'\n');
if(p)*p=0;
i++;
)
maxline=i;
fclose(fp);
return0;
)
voidWriteDat(void)
{FILE*fp;
inti;
clrscr();
fp=fopenC'OUTS.DAT","w");
for(i=0;i<maxline;i++){
printf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
fclose(fp);
17:函數(shù)READDAT()實現(xiàn)從文獻IN.DAT中讀取一篇英文文章存入到字符串數(shù)組XX中;請編制
函
數(shù)CHA(),其函數(shù)功能是:以行為單位把字符串中的第一個字符的ASCII值加第二個字符的
ASCII值,得到第一個親朋字符,第二個字符的ASCII值加第三個字符的ASCII值,得到第二個新
字符,依此類推一直解決到最后第二個字符,最后一個字符的ASCII值加原第一個字符的ASCII
值,得到最后?個新的字符,得到的新字符分別存放在原字符串相應的位置上。最后把已解決
的字符串逆轉后按行重新存入字符串數(shù)組XX中,最后調用函數(shù)WRITEDAT。把結果XX輸出到
文獻OUT9.DAT中.原始數(shù)據(jù)文獻存放的格式是:每行的寬度均小于80個字符,含標點符號和
空格.注意:部分源程序已給出。
請勿改動主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)據(jù)函數(shù)writeDat()的內容。
voidChA(void)/*標準答案*/
{intIJzk,str;
charch;
for(l=0;l<maxline;l++)
{str=strlen(xx[l]);
ch=xx[l][O];
for(j=0;j<str-l;j++)
xx[l][j]+=xx[l][j+l];
xx[l][str-l]+=ch;
for(j=0/k=str-l;j<str/2;j++,k-)
{ch=xx[l][j];
xx[l][j]=xx[l][k];
xx[l][k]=ch;}
voidChA(void)
{inti,j;
charp,c;
for(i=0;i<maxline;i++)
{p=xx[i][0];
c=xx[i][strlen(xx[i])-l];
for(j=0;j<strlen(xx[i])-l;j++)
xx[i][j]+=xx[i][j+l];
xx[i][strlen(xx[i])-l]=p+c;
$trrev(xx[i]);}
)
原程序如下:
ttinclude<stdio.h>
//include<string.h>
#include<conio.h>
charxx(50][80];
intmaxline=0;/*文章的息行數(shù)*/
intReadDat(void);
voidWriteDat(void);
voidChA(void)
(
)
voidmain()
clrscr();
if(ReadDat()){
printf("數(shù)據(jù)文獻IN.DAT不能打開!\n\007”);
return;
)
ChA();
WriteDat();
)
intReadDat(void)
(
FILE*fp;
inti=0;
char*p;
if((fp=fopenC'IN.DAT","r")>==NULL)return1;
while(fgets(xx[i]z80,fp)!=NULL){
p=strchr(xx[i],'\n');
if(p)*p=0;
i++;
}
maxline=i;
fclose(fp);
return0;
)
voidWriteDat(void)
(
FILE*fp;
inti;
clrscr();
fp=fopenC'OUTg.DAT","w");
for(i=0;i<maxline;i++){
printf("%s\n”,xx[i]);
fprintf(fp,"%s\n",xx[i]);
)
fclose(fp);
)
18:函數(shù)ReadDat()實現(xiàn)從文獻ENG.IN中讀取一篇英文文章,存入到字符串數(shù)組xx中;請編
制
函數(shù)encryptChar。,按給定的替代關系對數(shù)組xx中的所有字符進行替代,仍存入數(shù)組xx的對
應的位置上,最后調用函數(shù)WriteDat()把結果xx輸出到文獻PS10.DAT中。
替代關系:f(p)=p*llmod256(p是數(shù)組中某一個字符的ASCII值,f(p)是計算后新字符的
ASCII值),假如原字符的ASCII值是偶數(shù)或計算后f(p)值小于等于32,則該字符不變,否則將
f(p)所相應的字符進行替代。
注意:部分源程序已給出。原始數(shù)據(jù)文獻存放的格式是:母行的寬度均小于80個字符。
請勿改動主函數(shù)main。、讀數(shù)據(jù)函數(shù)ReadDat。和輸出數(shù)據(jù)函數(shù)WriteDat()的內容。
voidencryptChar()/*標準答案*/
{intI;
char*pf;
for(l=0;l<maxline;l++)
{pf=xx[l];
while(*pf!=O)
{if(*pf%2==0||*pf*ll%256<=32)
else
*pf=*pf*ll%256;
pf++
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金螳螂施工管理制度
- 網(wǎng)絡未來演變對設計師的挑戰(zhàn)與機遇試題及答案
- 物業(yè)管理機電管理制度
- 三廢排放管理制度
- 擠奶工安全管理制度
- 安徽知名美容院管理制度
- 某茶樓員工管理制度
- 面包配料員管理制度
- 注塑專業(yè)考試題及答案
- 企業(yè)案例管理制度
- 2025版亞馬遜FBA物流倉儲及電商運營服務合同6篇
- DB34-T 3035-2017 省級濕地公園建設規(guī)范
- 口腔門診股份合作協(xié)議書(2篇)
- 《腦淀粉樣變性》課件
- 第9課 近代西方的法律與教化 說課稿-2024-2025學年高二上學期歷史統(tǒng)編版(2019)選擇性必修1國家制度與社會治理
- 北師大教育研究方法課件
- T-GXAS 421-2022 成人急性中毒洗胃操作技術規(guī)范
- 旅游經(jīng)濟學知到智慧樹章節(jié)測試課后答案2024年秋海南師范大學
- 端午養(yǎng)生與中醫(yī)智慧
- 【MOOC】財務管理-上海對外經(jīng)貿大學 中國大學慕課MOOC答案
- 《傳染病防治法》課件
評論
0/150
提交評論