一个C语言的问题
编写一个函数,输入一行字符,将字符串中最长的单词输出 我看了标准答案下,标准答案是以下代码: #include<conio.h> #include<stdio.h> #include<string.h> void main() { int alphabetic(char); int longest(char []); int i; char line[100]; printf("input onr line:\n"); gets(line); printf("The longest word is:"); for(i=longest(line);alphabetic(line[i]);i++) printf("%c",line[i]); printf("\n"); getch(); } int alphabetic(char c) { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return (1); else return (0); } int longest(char string[]) {int len=0,i,length=0,flag=1,place=0,point; for(i=0;i<=strlen(string);i++) if(alphabetic(string[i])) if(flag) {point=i; flag=0; } else len++; else { flag=1; if(len>=length) { length=len; place=point; len=0; } } return(place); } 这个代码在alphabetic(string[i])返回0的时候,并且len<length的情况下根本没有初始化len,所以我觉得是错的,但是我运行了下,发现这个代码是正确的,谁能告诉下是怎么回事啊? 哪个大哥能解决我的疑问啊?我完全是自学,非常需要你们的帮助,谢谢了啊
诚如你所说,这个程序是有问题的. 测试用例如下: mysql java jsp 则运行结果为:jsp 运行结果与要求的结果不符合. 你指出的就是这个程序问题的所在:当丢弃一个短单词时,没有将单词长度的记数器归0. 修改如下: int longest(char string[]) { int len=0,i,length=0,flag=1,place=0,point; for(i=0;i=length) { length=len; place=point; } len=0; //<=将这个语句移出if之外 } return(place); } 通过对各if条件的测试, 均未发现异常. 若测试出现异常,请提供测试用例.
前两天登录过一个网站,里面也好多关于IT行业的知识提供,去那试试吧
答:#include int main() { char a[100]=""; char c=''; char * p=a; char * q=a; scanf(...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>