返回信息流题目:输入字符串,以#结束,输出最长单词
附件(595B) jiujie.c
先谢谢了。
这是一条镜像帖。来源:北邮人论坛 / cpp / #32717同步于 2009/12/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
帮帮忙,解决一下这个程序的问题
Daybreaks
2009/12/4镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
【 在 Daybreaks 的大作中提到: 】
: 题目:输入字符串,以#结束,输出最长单词
: 先谢谢了。
初始化的时候,i=0,你输了一个字符,后来又让i=0,又输了一遍
【 在 a403961185 的大作中提到: 】
: 初始化的时候,i=0,你输了一个字符,后来又让i=0,又输了一遍
我是想每循环一次,数组string1从新赋一次值,覆盖前面的,所以i必须初始化啊
【 在 Daybreaks 的大作中提到: 】
: 题目:输入字符串,以#结束,输出最长单词
: 先谢谢了。
在你的基础上改了一点点
#include<stdio.h>
#include<string.h>
main()
{
char string1[100],string2[100];
int i=0,max=1,k;
printf("input the string('#' to end):\n");
// scanf("%c",&string1[i]);
string1[i] = string2[i] = ' ' ;
while(string1[i]!='#')
{
i=0;
scanf("%c",&string1[i]);//应该是这里出了问题,因为第一次输入的时候string1[0]输了两次,怎么解决呢?想不通
while( ( string1[i]!=' ' && string1[i] != '\n' ) &&string1[i]!='#')
{
i++;
scanf("%c",&string1[i]);
}
if(i>max)
{
max=i;
for(k=0;k<max;k++)//储存目前最长的单词
string2[k]=string1[k];
string2[k+1] = ' ' ;
}
}
printf("The longest word is:");
i = 0 ;
while ( string2[i] != ' ' )
{
printf("%c", string2[i]) ;
++i ;
}
printf("\n") ;
// system("pause") ;
return 0;
}
为什么不用 scanf("%s", string1); 啊?
随便改了改 不包正确
while(string1[i]!='#')
{
i=1;
scanf("%c",&string1[i]);
while(string1[i]!='\0'&&string1[i]!='#')
{
i++;
scanf("%c",&string1[i]);
}
if(i>max)
{
max=i;
for(k=0;k<max;k++)//储存目前最长的单词
string2[k]=string1[k];
}
i=0;
scanf("%c",&string1[i]);
}
最后还要加个'\0',不然又要segment fault了。
【 在 xiaodi25807 的大作中提到: 】
: 为什么不用 scanf("%s", string1); 啊?
: 随便改了改 不包正确
: while(string1[i]!='#')
: ...................
#include<stdio.h>
#include<string.h>
int main()
{
char string1[100];
int i=0;
printf("input the string('#' to end):\n");
scanf("%c",&string1[i]);
while(string1[i]!='#')
{
scanf("%c",&string1[++i]);
}
string1[i+1]=0;
printf("%s\n",string1);
return 0;
}
【 在 Daybreaks 的大作中提到: 】
: 我是想每循环一次,数组string1从新赋一次值,覆盖前面的,所以i必须初始化啊
这个题目我大一时做过,不过代码没保留。算法就是利用两个标记指针和length,当输入字符为字母时,把指针移到相应位置,length计数连续的字母数,然后保存数据,第二次计数时比较,如果大于原来那个熟,就将位置指针移位,最后根据指针和length就可以打出单词了
【 在 a403961185 的大作中提到: 】
: 这个题目我大一时做过,不过代码没保留。算法就是利用两个标记指针和length,当输入字符为字母时,把指针移到相应位置,length计数连续的字母数,然后保存数据,第二次计数时比较,如果大于原来那个熟,就将位置指针移位,最后根据指针和length就可以打出单词了
指针我们还没学