用c语言写一个简单程序

写一个程序,输入一行字符,将此字符串中最长的单词输出如:This is a book.

【我写的,主要内容看do循环里面!】

【用win-tc的话,记得在最后printf时getch()一下哦~】

void main()

{

    int j=0,k=0,len=0,longest;

    char c,word[100][100];

    do

    {

        c=getchar();

        if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

        {

            word[j][k]=c;

            k++;

        }

        else

        {

            word[j][k]='\0';

            if(k>len)

            {

                len=k;

                longest=j;

            }

            k=0;

            j++;

        }

    }while(c!='\n');

    printf("longest word: %s\n",word[longest]);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-17
char *FindMaxCharWord( char *str )
{
static char temp[128];
int MaxN;
int pos, n;
char *p;
int i, j;

MaxN = 0;

n = 0;
p = str;
for( i=0; *p; i++ ) {
if( *p == ' ' ) { /* assume that words are only separated by spaces */
if( n > 0 ) {
if( n > MaxN ) {
/* store */
for( j=0; j<n; j++ )
temp[j] = str[pos+j];
MaxN = n;

temp[j] = '\0';
}

/* reset */
n = 0;

}
} else {
if( n == 0 )
pos = i;
n ++;
}

p ++; // move to next char.
}

if( n > 0 ) {
if( n > MaxN ) {
/* store */
for( j=0; j<n; j++ )
temp[j] = str[pos+j];
MaxN = n;

temp[j] = '\0';
}
}

return temp;
}

int main(int argc, char* argv[])
{

char buffer[512];

printf( "Please input a line: " );
if( gets( buffer ) == NULL ) {

} else {
printf( "%s\n", FindMaxCharWord( buffer ) );
}

return 0;
}
第2个回答  2009-12-17
#include “stdio.h"
void max(int n,char x[n])
{
int i,j,k,l,m,n;char y[];
for(i=0;i<n;i++)
if((x[i]!=x[i+1])||(x[i]=' ')) {m=i; break;}
for(i>m;i<n;i++) if((x[i]!=x[i+1])||(x[i]=' '))
{n=i-m;m=i; break;
for(j>m;j<i;j++) for(k=0;k<i-m;k++) {y[k]=x[j];}
}
for(i>m;i<n;i++) if((x[i]!=x[i+1])||(x[i]=' '))
if(n<i-m)
{for(j>m;j<i;j++)
for(k=0;k<i-m;k++) {y[k]=x[j];}
for(l=0;l<k;l++) printf("%c",y[l]);
} } void main()
{
char a[30];
printf("input a string:")
gets(a);
max(30,a[30]);
}

用C++的话会简单些,因为有字符串变量,这个可能不对。我也是新手,费了好长时间。哎
相似回答