c语言的问题 tk22

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:50:45
一、程序改错题。
gc22.c程序是输入一个字符串, 将此字符串中最长的单词输出,程序在注释行附近有两个错误,请试调试改正,但调试改正中不得增删语句。
int alph(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else
return(0); /* find 1 */
}
int longest(char str)
{
int len=0,i,length=0,flag=1,point,place;
for(i=0;i<=strlen(str);i++)
if(alph(str[i]))
if(flag)
{
flag=0;
point=i;
}
else
len++;
else /* Find 2 */
{
flag=0;
if(len>length)
{ length=len;
place=point;
len=0; }
}
return(place);
}
main( )
{
int i;
char line[100];
printf("Enter string\n");
gets(line);
printf("the longest is:");

(1)int longest(char str) 改为:int longest(char *str)

(2)else /* Find 2 */
{
flag=0; // 此处 flag=1;

...

另外这是哪里的题目,因为除了这两个错误外 还有其他逻辑错误

我将自己调试后的源程序发上来 供参考:

#include <stdio.h>

#include<string.h>

int alph(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else
return(0); /* find 1 */
}

int longest(char *str)//。。。。。。。。。。。改正
{
int len=0,i,length=0,flag=1,point,place;
for(i=0;i<=strlen(str);i++)
if(alph(str[i]))
if(flag)
{
flag=0;
point=i;
len++; // 改正
}
else
len++;
else /* Find 2 */
{

flag=1; //改正
if(len>length)
{ length=len;
place=point;
}
len=0; // 改正
}

return(place);
}