| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1880 人关注过本帖
标题:c编程 字母排序
只看楼主 加入收藏
winma2000
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-11-23
收藏
 问题点数:0 回复次数:4 
c编程 字母排序
最近有道题做不出来,是三级数据库还请高手指教 英文文章存放在xx数组中,函数StrOL()的功能以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,最后把已处理的字符串,按行重新存入字符串xx中,最后调用函数输出。 例: You He Me I am a student. 结果: Me He You student a am I void StrOL(void) { inti,j,k,str1,l; char c; for(j=0;j<strlen(xx[i]);j++) { c=xx[i][j]; if((c>='A'&&c<='Z')||(c>='a'&&c<='z')||c==' '&&(c>=0&&c<=9)); else xx[i][j]==' '; } } for(l=0;l<maxlime;l++) { char ch[80]={0}; char pp[80]={0}; strl=strlen(xx[l]); i=str1-1; k=1; while(l) { while(((xx[l][i]>='a'&&xx[l][i]<='z')||(xx[l][i]>='A'&&xx[l][i]<='Z')||xx[l] [i]>='0'&&xx[l][i]<='9'))&&i>=0) /*处理字母和数字*/ { for(j=k;j>=0;j--) /*从当前行的最后一个字母开始取字符,直到遇到空格*/ pp[j+1]=pp[j]; pp[0]=xx[l][i]; /*这两句我有点看不懂,还请高手指教*/ k++;i--; } strcat(ch,pp); /*把该单词存放到数组中*/ strcpy(pp,""); /*清空数组pp*/ k=1; if(i==-1)break; /* 如果处理完了一行,则退出循环 */ while((xx[l][i]<'0'||xx[l][i]>'9')&&(xx[l][i]<'A'||xx[l][i]>'z')&&i>=0) /*处理空格*/ { for(j=k;j>=0;j--) pp[j+1]=pp[j]; pp[0]=xx[l][i]; k++; i--; } strcat(ch,pp); /*把空格加到数ch中*/ strcpy(pp,""); /*清空数组pp*/ k=0; if(i==-1)break; /*如果处理完了一行,则退出循环*/ } strcpy(xx[l],ch); /*把己处理的字符串仍按行重新存入字符串数组xx中*/ } }
搜索更多相关主题的帖子: 字母 数据库 void student 
2005-03-26 19:56
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
"You He Me"
You和Me??
好强的E文!!!

这题好像不用三级数据库的知识吧,任何一个过二级C语言的学生都可以弄得出来.
 

淘宝杜琨
2005-03-26 21:25
形影随从
Rank: 1
等 级:新手上路
威 望:1
帖 子:188
专家分:0
注 册:2005-3-15
收藏
得分:0 
这是计算机三级考试的题目。

2005-03-26 22:22
winma2000
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-11-23
收藏
得分:0 
哎哟!这位大哥这是三级里的题,是在我买的上机题库的书里带着的,就这么一道题,难道我还会闲着没事蒙大家不成。至于you me这是题目里自带的例子,只是说明这个函数要完成的功能,不是我的e文强!其实我的e文也不怎么样!如果明白的话,指点一下,救救我吧!
2005-03-27 08:54
形影随从
Rank: 1
等 级:新手上路
威 望:1
帖 子:188
专家分:0
注 册:2005-3-15
收藏
得分:0 

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。

例如:原文:You He Me

I am a student.

     结果:Me He You

student a am I

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

部分源程序存在文件prog1.c中。

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

#include <stdio.h>

#include <string.h>

#include <conio.h>

#include <ctype.h>

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReadDat(void);

void WriteDat(void);

/*在无忧及捷成版模拟系统中都通过测试(输入文件句末有标点的在输出文件中句前有空格*/

void StrOL(void)

{ int i,j,k,s,m,strl;

char str[80];

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

{ strl=strlen(xx[i]);

memset(str,0,80);

s=k=0;

for(j=strl-1;j>=0;j--)

{ if(isalpha(xx[i][j])) k++;

else { for(m=1;m<=k;m++)

str[s++]=xx[i][j+m];

k=0;

}

if(!isalpha(xx[i][j])) str[s++]=' ';

}

for(m=1;m<=k;m++)

str[s++]=xx[i][j+m];

str[s]='\0';

strcpy(xx[i],str);

}

}

void main()

{

clrscr();

if(ReadDat()){

printf("数据文件IN.DAT不能打开!\n\007");

return;

}

StrOL();

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("OUT6.DAT","w");

for(i=0;i<maxline;i++){

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

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

}

fclose(fp);

}

捷成版模拟系统中的解法

/*在无忧模拟系统中没通过测试(输入文件句末有标点的在输出文件中句前无空格*/

void StrOL(void)

{

int i, j ;

char word[21], yy[80], zz[80], *p ;

for(i = 0 ; i < maxline ; i++) {

p = xx[i] ;

j = 0 ;

memset(word, 0, 21) ;

memset(yy, 0, 80) ;

while(*p) {

if(isalpha(*p)) {

word[j++] = *p++ ;

if(*p) continue ;

}

strcpy(zz, yy) ;

sprintf(yy, "%s %s", word, zz) ;

j = 0 ;

memset(word, 0, 21) ;

while(*p && (!isalpha(*p))) p++ ;

}

strcpy(xx[i], yy) ;

}

}

2005-03-27 09:38
快速回复:c编程 字母排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012013 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved