以下是引用我叫沃恩在2013-6-16 00:18:50的发言:
for(;num(a)==1;i++)
{
printf("%c",a);
}感觉这里有问题!!
for(;num(a)==1;i++)
{
printf("%c",a);
}感觉这里有问题!!
不光有问题,还很大,他准是以为这是字符数组了
#include<stdio.h> #include<string.h> #define bool int //c不支持bool,想使用必须定义以下三行的宏 #define true 1 #define false 0 int longest(char x[]); int num(char); int main() { char a[50]; int i; printf("putin line:\n"); gets(a); printf("the longest word is:\n"); i= longest(a); for(;num(a[i])==1;i++) { printf("%c",a[i]); } printf("\n"); return 0; } int longest(char x[]) { int k=0; int l=0; int m=0; int n=0; int i; bool Inti=false; bool L_start; bool M_start; int result; for(i=0;(x[i])!='\0';i++) //在for里 int i会报错 { //始化,将第一个遇到的字母记录 if((!Inti) && num(x[i])) //!inti第一次为true执行 { k=1; l=i; L_start=true; Inti=true; //之后为false不执行 } if(num(x[i])) { if(L_start) k++; //k控制字母长度 if(M_start) m++; } else { if(k<m) { L_start=true; M_start=false; } else { L_start=false; M_start=true; } if(num(x[i+1])) //下一个是字母 { if(L_start) //k<m { k=0; //k清零 l=i+1; //l重新记录下一个单词首字母位置 } if(M_start) // k>=m { m=0; // m清零 n=i+1; //n重新记录下一个单词首字母位置 } } } (k>m)?(result=l):(result=n); } return result; } int num(char a) { if ((a>='a')&&(a<='z')||(a>='A')&&(a<='Z')) { return 1; } else return 0; }