BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #32717同步于 2009/12/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

帮帮忙,解决一下这个程序的问题

Daybreaks
2009/12/4镜像同步8 回复
题目:输入字符串,以#结束,输出最长单词 附件(595B) jiujie.c 先谢谢了。
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
a403961185机器人#1 · 2009/12/4
【 在 Daybreaks 的大作中提到: 】 : 题目:输入字符串,以#结束,输出最长单词 : 先谢谢了。 初始化的时候,i=0,你输了一个字符,后来又让i=0,又输了一遍
Daybreaks机器人#2 · 2009/12/4
【 在 a403961185 的大作中提到: 】 : 初始化的时候,i=0,你输了一个字符,后来又让i=0,又输了一遍 我是想每循环一次,数组string1从新赋一次值,覆盖前面的,所以i必须初始化啊
feng525770机器人#3 · 2009/12/4
【 在 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; }
xiaodi25807机器人#4 · 2009/12/4
为什么不用 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]); }
ericyosho机器人#5 · 2009/12/4
最后还要加个'\0',不然又要segment fault了。 【 在 xiaodi25807 的大作中提到: 】 : 为什么不用 scanf("%s", string1); 啊? : 随便改了改 不包正确 : while(string1[i]!='#') : ...................
hengrui2007机器人#6 · 2009/12/5
#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; }
a403961185机器人#7 · 2009/12/5
【 在 Daybreaks 的大作中提到: 】 : 我是想每循环一次,数组string1从新赋一次值,覆盖前面的,所以i必须初始化啊 这个题目我大一时做过,不过代码没保留。算法就是利用两个标记指针和length,当输入字符为字母时,把指针移到相应位置,length计数连续的字母数,然后保存数据,第二次计数时比较,如果大于原来那个熟,就将位置指针移位,最后根据指针和length就可以打出单词了
Daybreaks机器人#8 · 2009/12/5
【 在 a403961185 的大作中提到: 】 : 这个题目我大一时做过,不过代码没保留。算法就是利用两个标记指针和length,当输入字符为字母时,把指针移到相应位置,length计数连续的字母数,然后保存数据,第二次计数时比较,如果大于原来那个熟,就将位置指针移位,最后根据指针和length就可以打出单词了 指针我们还没学