C语言设计程序计算一段英语中最长的单词,这个程序为什么不行?

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ void findlongest(char [][],int);
char dan[20][15];
int i,j;
i=0;
j=-1;
printf("Please input a scentence:");
do
{j++;
scanf("%c",&dan[i][j]);
if(dan[i][j]==32)
{ i++;
j=-1;}

}
while(dan[i][j]!=10);
findlongest(dan,i);
system("PAUSE");
return 0;
}
void findlongest(char dan[][15],int num)
{int findmax(int [],int);
int jilu[num];
int i,j,k,l;
for(i=0;i<num;i++)
{for(j=0;dan[i][j]!=10&&dan[i][j]!=32;j++)
jilu[i]=j;}
k=findmax(jilu,num);
for(l=0;l<15;l++)
printf("%c",dan[k][l]);
printf("/n");
}

int findmax(int jilu[],int num)
{int max,j,k;
max=jilu[0];
for(j=1;j<num;j++)
{if(max<jilu[j])
{max=jilu[j];
k=j;}
}
return k;
}
最新回答
青柠香味

2024-11-25 10:01:43

三个函数里都要改:

  1. main里声明findlongest,char[][]改成char[][15],还有声明dan,char dan[20][15]改成char dan[20][15]={32}。

  2. findlongest里int jilu[num]改成int *jilu=(int*)malloc(num*sizeof(int)),for循环里i<num改成i<=num,for(l=0;l<15;l++)改成for(l=0;l<15 && dan[k][l]!=32;l++),printf("/n");改成printf("\n");。

  3. findmax里int max,j,k改成int max,j,k=0,for(j=1;j<num;j++)改成for(j=1;j<=num;j++)。

这么多小错误,好好反省吧。

深情是罪

2024-11-25 10:34:15

光是输入那里就不行,%c是字符,而你要输入字符串。还有你用二位数组干嘛
离山道寺

2024-11-25 09:40:07

用一维数组,char a[100];int lengh;
scanf("%s",a[100]);
lengh=strlena[100];//获得语句总长度,用来控制循环
阅读句子用指针来读取单词长度