以下是引用我叫沃恩在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;
}