南开上机分类版Word文档下载推荐.docx

上传人:b****4 文档编号:18499525 上传时间:2022-12-17 格式:DOCX 页数:99 大小:47.68KB
下载 相关 举报
南开上机分类版Word文档下载推荐.docx_第1页
第1页 / 共99页
南开上机分类版Word文档下载推荐.docx_第2页
第2页 / 共99页
南开上机分类版Word文档下载推荐.docx_第3页
第3页 / 共99页
南开上机分类版Word文档下载推荐.docx_第4页
第4页 / 共99页
南开上机分类版Word文档下载推荐.docx_第5页
第5页 / 共99页
点击查看更多>>
下载资源
资源描述

南开上机分类版Word文档下载推荐.docx

《南开上机分类版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《南开上机分类版Word文档下载推荐.docx(99页珍藏版)》请在冰豆网上搜索。

南开上机分类版Word文档下载推荐.docx

WriteDat();

{FILE*fp;

inti=0;

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=0;

i++;

maxline=i;

fclose(fp);

return0;

inti;

fp=fopen(\"

ps10.dat\"

w\"

for(i=0;

i<

maxline;

i++)

{printf(\"

%s\\n\"

xx[i]);

fprintf(fp,\"

注:

在ReadDat()函数中由于fgets()函数读入数据时没有读入字符串结束符'

\0'

,因而用while()循环在xx数组每一行未尾将换行符'

\n'

替换成结束符'

编写的函数如下:

该函数的基本算法是——让字符指针pf指向每一行的开头然后逐一往后移动,在移动过程中按要求进行转换。

*pf=*pf/2*2用于判断是否为偶数。

if()条件语句用于控制不替代字符。

{inti;

char*pf;

{pf=xx[i];

while(*pf!

=0)

{if(*pf==*pf/2*2||*pf*11%256<

32)

{pf++;

continue;

*pf=*pf*11%256;

pf++;

{inti,j,t;

{for(j=0;

j<

strlen(xx[i]);

j++)

{t=xx[i][j]*11%256;

if(t<

=32||xx[i][j]%2==0)continue;

xx[i][j]=t;

3、函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;

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

f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。

部分源程序已给出。

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

ps8.dat\"

i++){

voidencryptchar()

{if(*pf>

='

a'

&

*pf<

z'

||*pf*11%256<

 for(i=0;

  for(j=0;

  {t=xx[i][j]*11%256;

   if(t<

=32||xx[i][j]>

&

xx[i][j]<

    continue;

   xx[i][j]=t;

}

9、函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;

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

f(p)=p*13mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。

ps2.dat\"

{if(*pf%2==0||*pf*13%256<

{inti,j,t;

{t=xx[i][j]*13%256;

=32||t%2==0)continue;

27、函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConverCharD(),其函数的功能是:

以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。

大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。

最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT4.DAT中。

例:

原文:

Adb.Bcdzaabck.LLhj

结果:

Aca.Bbcyzzabj.LLgi原始数据文件存放的格式是:

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

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。

#include<

charxx[50][80];

voidConverCharD(void)

printf(\数据文件ENG.IN不能打开!

\\n\\007\);

ConverCharD();

char*p;

if((fp=fopen(\IN.DAT\,\r\))==NULL)return1;

=NULL){

p=strchr(xx[i],'

fp=fopen(\OUT4.DAT\,\w\);

printf(\%s\\n\,xx[i]);

fprintf(fp,\%s\\n\,xx[i]);

*(p-1)=(*(p-1)-'

+26-1)%26+'

该表达式是求出小写字母*(p-1)的前一个字母的算法。

如果是求大写字母则将'

改成'

A'

即可,如果是求前4个字母(a换成w等)则将-1改成-4,如果是求后面的字母则将减号改成加号即可。

在该题中由于while(*p++)判断完后p向后移动一个字符,因而在if()中要用*(p-1)转换前一个字符。

voidconvertchard(void)

{char*p;

{p=xx[i];

while(*p++)

if(islower(*(p-1)))*(p-1)=(*(p-1)-'

;

30、下列程序的功能是:

把s字符串中的所有字母改写成该字母的下一个字符,字母z改写成字母a。

要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。

请编写函数chg(char*s)实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。

例如:

s字符串中原有的内容为:

Mn.123Zxy,则调用该函数后,结果为No.123Ayz。

请勿改动主函数main()和输出数据函数writeDat()的内容。

#include<

#include<

#defineN81

voidreadwriteDAT();

voidchg(char*s)

main()

{chara[N];

clrscr();

printf(\Enterastring:

\);

gets(a);

printf(\Theoriginalstringis;

puts(a);

chg(a);

printf)(\Thestringaftermodified:

readwriteDAT();

viodreadwriteDAT()

{inti;

chara[N];

FILE*rf,*wf;

rf=fopen(\in.dat\,\r\);

wf=fopen(\out.dat\,\w\);

10;

fscanf(rf,\%s\,a);

fprintf(wf,\%s\\n\,a);

fclose(rf);

fclose(wf);

该题的思路比较明显,先判断是否是'

或'

Z'

,若是则转成相应的'

,否则再判断是不是字母(已除'

)。

{inti,j,k;

k=strlen(s);

k;

{if(s[i]=='

//s[i]=='

s[i]-=25;

elseif(isalpha(s[i]))

s[i]+=1;

73、函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;

请编制函数CONVERTCHARA(),其函数功能是:

以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母Z,则改写成字母A.大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变.把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.例:

原文:

结果:

Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:

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

#include"

stdio.h"

string.h"

conio.h"

intreaddat(void);

voidwritedat(void);

voidconvertcharA(void)

if(readdat())

{printf("

Can'

topenthefileENG.IN!

\n"

convertcharA();

writedat();

intreaddat(void)

if((fp=fopen("

in.dat"

"

r"

))==NULL)

return1;

if(p)

*p=0;

voidwritedat(void)

fp=fopen("

out3.dat"

w"

%s\n"

fprintf(fp,"

/*注:

注意本题中不能将第一个if()的else去掉,若不用else则经过第一个if()后原来字符'

变成了'

,当再经过第二个if()时又将已变成'

的字符改成了'

b'

,即实际上字母'

变成了字母'

,这是不行的*/

while(*p)

{if(*p=='

)*p='

elseif(*p>

*p<

'

)*p=*p+1;

p++;

二、字符串左右排序和比较

2、函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。

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

以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

条件:

从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。

如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。

位置012345678源字符串 dcbahgfe432198765

则处理后字符串hgfeabcd876591234部分源程序已给出。

请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

charxx[20][80];

voidjsSort()

{readDat();

jsSort();

writeDat();

readDat()

{FILE*in;

in=fopen(\"

in.dat\"

while(i<

20&

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

fclose(in);

writeDat()

{FILE*out();

out=fopen(\"

out.dat\"

20;

fprintf(out,\"

fclose(out);

先采用冒泡法对左边部分进行升序排序,然后将排序后的左半与右半按对应位进行

调换。

{inti,strl,half,j,k;

charch;

{strl=strlen(xx[i]);

half=strl/2;

for(j=0;

half-1;

for(k=j+1;

k<

half;

k++)

if(xx[i][j]>

xx[i][k])

{ch=xx[i][j];

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

xx[i][k]=ch;

for(j=half-1,k=strl-1;

j>

=0;

j--,k--)

4、函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。

从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。

位置   0 1 2 3 4 5 6 7 8源字符串 abcdhgfe

123498765则处理后字符串hgfedcba876594321

f

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

当前位置:首页 > 经管营销 > 经济市场

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

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