有一道c,我想知道我错在哪里,

来源:百度知道 编辑:UC知道 时间:2024/06/07 13:38:02
输入一串字符,然后把最长英文单词的长度显示出来

#include<stdio.h>
#include<string.h>
#include<ctype.h>
extern int fx(int);
main()
{
char s[100];
char temp[100];
int i=0,j=0,len,z;

printf("请输入一串字符:\n");
gets(s);
do{
if(isalpha(s[i])){
temp[j++]=s[i];
}
else{
temp[j]='\0';
if(strlen(temp)>0){
len=strlen(temp);
z=fx(len);

}
j=0;
}

}while(s[i++]);
printf("%d",fx(z));

}

//-----------------------------------------

int fx(len1){
int p,q,k;
int inttem[100];
static x=0;
inttem[x++]=len1;

for(p=1;inttem[p];p++){

k=inttem[p];
q=p-1;
while(q>=0&&inttem[q]<k){
inttem[q]=inttem[q+1];
q--;
}
i

说句不是很好听的话;这代码太难读了;如果你过了一年你也肯定不知道自己为什么这么写了。养成好的编程风格是非常重要的,即使没有注释把程序贴出来的时候做一些格式化处理也是对读程序的 人的尊重。

你想在fx()中用inttem[]保存长度并对数组排序;不说方法怎么样,想法的确没有错。没有结果的原因是inttem[]数组是局部变量,存储在栈上,函数调用完毕栈恢复后就变成了垃圾。 你可以把inttem[]数组声明为全局,在main里初始化一下,如果其他的地方没有错那么就可以得到结果

挺难. 再看看吧