C语言编程求一个英文句子中的单词数和最长单词的位置、长度及输出这个单词。 c++编程 从键盘输入一个英文
时间: -11-23
我刚做了一关于英文句子里面每个单词平均字长的。与你问题很近。
#include "stdio.h"
#include
#include "ctype.h"
#define MAX 1000000
char buf[MAX],s[MAX];
char p[MAX];
int main(){
int n = 0;
int m = 1;
int cout = 0;
float ave = 0;
int i;
fgets(buf,sizeof(s),stdin);
n = strlen(buf)-1;//字符串的末尾有一个结束字符
for( i =0;i < n; i++)
if(isalpha(buf[i]) == 0 && isalpha(buf[i+1])!=0)
{
m ++;
}
printf("%d
",m);
for(i = 0; i < n; i++)
{
if(isalpha(buf[i]) !=0)
cout++;
}
printf("%d
",cout);
ave = cout /m;
printf("%f",ave);
return 0;
}
下面这段程序有问题:
int max=wordNo[0];
for(int k=0;k
{
if(wordNo[k]>wordNo[0])
max=wordNo[k];
else
max=wordNo[0];
}
改成这样就行:
int max=wordNo[0];
int k=0;
for(i=0;i
{
if(wordNo[i]>max)
{
k=i;
max=wordNo[i];
}
}
#include #include #include #include #define SIZE 100void readin(char str[]);//读取输入,一行开头ctr+z,然后回车,结束输入int countWords(char *p);//数单词个数void longest(char str[]);//最长单词开始的字符位置,int main(void){ char str[SIZE]; int counter; readin(str);//读取输入 counter=countWords(str);//数出单词个数 printf("在这段英文里一共有%d个单词.
",counter); longest(str);//最长单词是第几个字母处开始,及字母单词长度 printf("Done.
"); return 0;}void readin(char str[]){ char ch; int index=0; printf("请输入一段英文:
"); while((ch=getchar())!=EOF&&indexmaxlenth) { maxid=header; maxlenth=lenth; } } } } if(maxlenth==0) { printf("所以,最长单词的长度就是0.
"); } else { for(index=0;index<=maxid;index++)//计算最长单词开始与 第几个字母数字 { if(isalnum(str[index])) { counter++; } } printf("最长的单词从第%d个数字字母开始,此单词长度为%d.
",counter,maxlenth); }}这是我写的,还望指教
for (i=0;i<100;i++)
{
if (s[i]=='0'||s[i]==' '||s[i]==',')
{
flag++;
n++;
a[n]=i;//此行记录每个单词末尾的最后一个字母位于第几个字符
b[n]=a[n]-a[n-1]-1;//此行有错,原意是为了新建b[n]存储每一个单词的最后一个字节在第几个字 节,但是似乎当n=1时,a[0]不存在,此时有逻辑错误
printf("%d
",a[n]);
printf("%d
",b[n]);
}
}
干嘛非得这么干,a[n]第一个位置,b[n]存最后一个位置就好了呀。
int flag = 0;
for (i=0;i<100;i++)
{
if((s[i]>='a'&&s[i]='A'&&s[i]<='Z'))
{
if(flag ==0) a[n]=i;//每一个新单词的第一个位置
flag =1;
}
else
{
if(flag ==1)//说明出现过字母。
{
n++;
b[n-1] = i-1;//每个单词最后位置
}
flag =0;//重新标记。
}
}
//注意。
if(flag==1)//for循环结束要判断是否最后一位是字母。
{
n++;
b[n-1]=i-1;
}
希望能帮到你。
b[1]-a[1]就是这个字母的长度。
可能是字符串没加\0吧,数组b[80]没显示0初始化,find函数里也没有显式的加\0。没看懂你的算法,所以只能这样猜了。写了个标准库的方法,可以参考下:
#include
#include
#include
using namespace std;
int main()
{
typedef string::size_type ST;
//存放所有单词的长度、单词本身、单词出现的位置
multimap > m;
string line;
cout<
getline(cin,line);
ST pos=0;
while((pos=line.find(','))
line[pos]=' ';//替换掉所有逗号
istringstream ins(line);
string token;
pos=0;
while(ins>>token)
m.insert(pair >(token.size(),
pair(token,pos=line.find(token,pos)+1)));
ST t=m.rbegin()->first;
//map容器默认是按照key排序的,最后的长度最大,往前找
for(multimap >::reverse_iterator it=m.rbegin();
it!=m.rend();++it)
if(it->first==t)
coutsecond.first<
second.second<
else break;
}
如果有长度一样的词,按照倒序显示,这样简单些。起始位置从1开始算的。
C语言编程求一个英文句子中的单词数和最长单词的位置、长度及输出这个单词._
: #include #define n 100char *maxlenword(char statement[],char maxword[]) { int i = 0,j; char word[n]; maxword[0] = '\0'; for(i = 0; statement[i]; i++) { if(!isalpha(statement[i++])) continue; --i; j = 0; while(statement[i] && isalpha(statement[i])) word[j++] = ...
c语言 写一个函数,找出一个英文句子中最长的单词_
: #include #include #include #define N 100 char *maxlenword(char statement[],char maxword[]) { int i = 0,j; char word[N]; maxword[0] = '\0'; for(i = 0; statement[i]; i++) { if(!isalpha(statement[i++])) continue; --i; j = 0; while(...
C语言 输入一个英文句子 找出其中最长的英文单词 输出长度和单词_
: #include #define n 100 char *maxlenword(char statement[],char maxword[]) { int i = 0,j; char word[n]; maxword[0] = '\0'; for(i = 0; statement[i]; i++) { if(!isalpha(statement[i++])) continue; --i; j = 0; while(statement[i] && isalpha(statement[i])) word[j++] = ...
编写程序.用C语言通过函数调用方式统计一个英文句子中最长单词的字符数_
: #include int main() { char sztext[100] = {0}; int nmaxbegin = 0, nmaxlen = 0, ncurlen = 0; gets(sztext); sztext[strlen(sztext)] = ' '; for (int i = 0; i { if (sztext[i] != ' ') { ncurlen ++; } else { if (nmaxlen { nmaxbegin = i - ncurlen; nmaxlen = ncurlen; } ncurlen = 0; ...
C语言:统计最长单词长度和在字符串中的位置,请能讲讲具体思路和这些空都是怎么得出来的么?谢谢!
: 第一空,按照注释return 1第二空,按照注释return 0第三空,扫描字符串string,直到字符串结束符'\0',故string[i]!='\0'第四空,按照注释flag=0第五空,alph函数return0, 故当前一个空格字符,len计算单词数,故len++, length是用来计算每个单词的长度
输入一个英文句子,统计其中单词的个数,输出最长单词在文本中的位置(是文本中的第几个字符)和长度;_
: 这个好像有例子
用c语言编程:输入一段英文句子,计算该句子的单词个数_
: #include "stdio.h" main() { char *s; int cnt = 0; printf("please enter the sentence\n"); gets(s); while(*s) { if(*s==' ') cnt++; s++; } printf("the sectence have %d word\n",cnt+1); }
C语言程序设计,输入一个英文句子,统计单词的个数._
: #includeint main(){ char str[256]; int i,count=0; printf("Please input an English sentence:\n"); gets(str); for(i=0;str[i]!='\0';i++) { if(str[i]==' ') count++; //你这只是算有几个空格字符数 } count+=1; //单词数=空格数+1 printf("The number of words are:%d\n",count); return 0; //main()函数是有返回值的}...
1.输入一段英文,将其中最长的一个单词打印出来.求c语言程序_
: //输入一段英文,将其中最长的一个单词打印出来.求c语言程序#include //这里的单词之间以空格分开,否则不能知道那个是单词啊.#includeint main(){ char ch[200]; gets(ch); char str[200]; //用以存放最大的单词,假设就是一...
c语言编程,实现计算一个英文文本文件中段落数,单词数以及出现次数最多的十个单词?_
: 先将文件指针移到文件的最后,在将次数输出fseek(fp,0,SEEK_END);fprintf(fp,"%s%d","word出现",occur);
python输入一个英文句子 统计单词个数_C语言编程求一个英文句子中的单词数和最长单词的位置 长度及输出这个单词。c++编程 从键盘输入一个英文...