x pomz
vojrvf lfzt. Fps fybnqmf, jg zpv tqfdjgz uibu uif fnqmpzff
ovncfst bsf
vojrvf, ISAM pomz mfut zpv bee sfdpset up uif gjmf gps, ps
dibohf
ovncfst up, fnqmpzff ovncfst uibu ep opu bmsfbemz fyjtu jou
gjmf.
字符串处理之三
code:
/*
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数SortCharA( ), 其函数的功能是: 以
行为单位对字符按从小到大的顺序进行排序, 排序后的结果仍按行
重新存入字符串数组xx中。最后main()函数调用函数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,m,n; char ch;
for(i=0; i < maxline; i++)
{ j=strlen(xx[i]);
for(m=0; m < j-1; m++)
{ k=m;
for(n=m+1; n < j; n++)
if(xx[i][k] > xx[i][n]) k=n;
if(k!=m)
{ ch=xx[i][k]; xx[i][k]=xx[i][m]; xx[i][m]=ch; }
}
}
/**/
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf("数据文件IN.DAT不能打开!n07") ;
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 < maxline ; i++) {
printf("%sn", xx[i]) ;
fprintf(fp, "%sn", xx[i]) ;
}
fclose(fp) ;
}
out1.dat 文件内容如下(注意每行的前面有若干空格):
,Yaaaaabccddddeeeeeeeeeffiiilllnnnnnnoooorrsssttuuvxy
,,.Taaaaaeeeeeeefghhhhknnooooooprrrrsssttttttttuuwyy
aaaccccccddddeeeeeeeeffiiiiiikkllnnnnoooopqrrsssssstuuwxyy
.AAIMSaacdeeeeeeeffffggiiilllnnnnooooooopqrrrrrrssssttuuy
,.Aaaaaccdddddddeeeeeeeeeeeffhiiiiilnnnnnnnnooosttttuvxxy
.aacdddeeeeehhinnnooooorrrrsstttx
Yaaaaaccddddeeeeeefffhhiiiiiiilllmnnnnnoooqrrtttttuuuwyyy
,.EFaaccddeeeeeeeeeeffhhhiilllllmmmnoooooopprrrrrrrstttxy
Naabbddeeeeeeffghiiiiilmmmnnnnoooooqrrssssttttuuuuuwy
,aabddeeeeeeeeeeeeffghhiilmmnnnnnooooprrrrrsssssttttuuvyy
.Iabcdddeeeeeefffgghhiiiillmmnnnooooooooprrrsstttuwyyy
,abccddeeeeeeeeeeefffghhhiiiiiiilllmmnnnoooppqrssssttttuuuvy
.acccdeeeeeehhhhooorrrrrtttuvwy
,Iaacddddeeeeeffffhhiiiilmnnnoooooqrrrssttttuuuuuvyy
aaccdddeeeeeeeeeeeehhhhhhiikmmnnnoooorrrrrssttttttuuwyyy
,..Iaaaacccdeeeeeffghhhiiiimnnnnnoooooorrrrssssttttttttuuwy
,Iaaacddeeeeffhhhiiiiklnnnooooooqrrrstttuuuuuuvwwyyyy
,AIMSaaaaccccdddeeeefhhiiiiiikllllllnnnnnnoooprssttttuwwyy
,.Faaabceeeeeeeeeeeffhhiiikllmmmnnooopppqrrrssstttuuuuxyyyy
,,AIMSaaccdddeeeeeeffghhiilllnnnooooooqrrrrsstttuuuyy
,.aaabbddeeeeeeeefhiiillllmmmnnnnooooprrrsssttttttuuxyy
字符串处理之四
code:
/*
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数StrCharJL( ), 其函数的功能是: 以
行为单位把字符串中的所有字符的ASCII值左移4位, 如果左移后,
其字符的ASCII值小于等于32或大于100, 则原字符保持不变, 否则
就把左移后的字符ASCII值再加上原字符的ASCII值, 得到新的字符
仍存入原字符串对应的位置上,之后把已处理的字符串仍按行重新
存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果
xx输出到OUT7.DAT文件中。
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格。
注意: 部分源程序存放在PROG1.C中。
请勿改动主函数main( )、读数据函数ReadDat()和输出数据函
数WriteDat()的内容。
*/
#include
#include
#include
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrCharJL(void)
{/**/
int i,j; char m;
/****老王注:此题的关键是定义 char m 。记得往年的考试类似题可以不必定义,
如果要定义的话,则必须定义为 int 结果才能正确。看来理解出题
者的意图是机试的难点之一。 ****/
for(i=0; i < maxline; i++)
for(j=0; j < strlen(xx[i]); j++)
{ m=xx[i][j]<<4;
if((m>32)&&(m<=100))
xx[i][j]+=m;
}
/**/
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf("数据文件IN.DAT不能打开!n07") ;
return ;
}
StrCharJL() ;
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("OUT7.DAT", "w") ;
for(i = 0 ; i < maxline ; i++) {
printf("%sn", xx[i]) ;
fprintf(fp, "%sn", xx[i]) ;
}
fclose(fp) ;
}
字符串处理之五
code:
/*
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到
字符串数组xx中; 请编制函数StrCharJR( ), 其函数的功能是: 以
行为单位把字符串中的所有字符的ASCII值右移4位, 然后把右移后
的字符ASCII值再加上原字符的ASCII值, 得到新的字符仍存入原字
符串对应的位置上,之后把已处理的字符串仍按行重新存入字符串
数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文
件OUT8.DAT中。
原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含
标点符号和空格。
注意: 部分源程序存放在PROG1.C中。
请勿改动主函数main( )、读数据函数ReadDat()和输出数据函
数WriteDat()的内容。
*/
#include
#include
#include
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrCharJR(void)
{/**/
int i,j;
for(i=0; i
for(j=0; j
xx[i][j]+=xx[i][j]>>4;
/**/
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf("数据文件IN.DAT不能打开!n07") ;
return ;
}
StrCharJR() ;
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("OUT8.DAT", "w") ;
for(i = 0 ; i < maxline ; i++) {
printf("%sn", xx[i]) ;
fprintf(fp, "%sn", xx[i]) ;
}
fclose(fp) ;
}
out8.dat 文件内容应当如下:
^u|"igt"iykg{k"gt"otjk"ut"gt€"lokrj."ut"zk}kygr"lokrjz"{u"hk"|zkj
{umk{nky."uy"ut"wgy{z"{nkykul."{ng{"€u|"~gt{"{u"|zk"gz"g"qk€0"Ynk
qk€z"ot"otjkkz"grru~"€u|"x|oiq"giikzz"{u"zwkioloi"ykiuyjz"gtj"jklotk
uyjkyz"luy"zkx|kt{ogr"wyuikzzotm"ul"g"MXEQ"lork0"El{ky"€u|"tu"rutmky
tkkj"gt"otjk."€u|"igt"jkrk{k"o{0"Ejjo{out"gtj"otjkkz"ng}k"tu"kllki{
ut"{nk"jg{g"ykiuyjz"uy"ut"u{nky"otjkkz0
^u|"sg€"~gt{"g"lokrj"ot"lokrj"ot"kgin"ykiuyj"{u"|tox|kr€"ojkt{ol€"{ng{
ykiuyj"lyus"grr"u{nky"ykiuyjz"ot"{nk"lork0"Juy"kgswrk."{nk"Iswru€kk
R|shky"lokrj"oz"|tox|k"ol"€u|"ju"tu{"gzzomt"{nk"zgsk"t|shky"{u"{~u
jollkykt{"kswru€kkz."gtj"€u|"tk}ky"ykgzzomt"{nkzk"t|shkyz"{u"u{nky
kswru€kkz0"Ml"€u|"~ozn"{u"lotj"uy"sujol€"{nk"ykiuyj"hkrutmotm"{u"g
zwkioloi"kswru€kk."{noz"|tox|k"lokrj"zg}kz"{nk"{nu|hrk"ul"jk{kysototm
~nk{nky"€u|"ng}k"{nk"iuyyki{"ykiuyj0
Ml"€u|"ju"tu{"ng}k"g"|tox|k"lokrj."€u|"s|z{"lotj"{nk"loyz{"ykiuyj
{nk"sg{inkz"€u|y"qk€"gtj"jk{kysotk"~nk{nky"{nk"ykiuyj"oz"{nk"utk"€u|
~gt{0"M