这是一个c prog,它用空格分隔5个单词,并按字母顺序给出第一个和最后一个单词。例如,输入5个字:banana ap pa kiwi orange。第一个单词= ap last word = pa.No错误显示但是prog没有工作,就像接受了超过5个单词。这是我的代码:
void findWord(char word[][20], char *first, char *last);
int main()
{
char word[5][20];
char *first, *last;
printf("Enter 5 words separated by spaces: \n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 20; j++)
scanf("%c", &word[i][j]);
}
first = word[0][0];
last = word[0][0];
findWord(word, &first, &last);
printf("The first word is: %s and the last word is: %s ", first, last);
}
void findWord(char word[][20], char *first, char *last)
{
int k, l;
for (k = 0; k < 5; k++)
{
for (l = 0; l < 20; l++)
{
while ((word[k][l] != '\0') && (word[k][l] == ' '))
{
if (word[k][l + 1]< *first)
*first = word[k][l + 1];
else
*last = word[k][l + 1];
}
}
}
}
答案 0 :(得分:0)
比较您可以使用strcmp()
家庭功能的字符串并按字母顺序排序。
而不是使用循环
for (l = 0; l < 20; l++)
{
while ((word[k][l] != '\0') && (word[k][l] == ' '))
{
if (word[k][l + 1]< *first)
*first = word[k][l + 1];
else
*last = word[k][l + 1];
}
}
使用strcmp()
比较单词并对其进行排序或获得第一个和最后一个vaule。 strcmp
可以使程序简单直接地解决。
答案 1 :(得分:0)
在while循环中你应该使用&#39; ||&#39;而不是&#39;&amp;&amp;&#39;这里。尝试逐步调试您的程序。
答案 2 :(得分:0)
试试这个
#include<stdio.h>
#include<string.h>
void findWord(char word[][20], char *first, char *last);
int main()
{
char word[5][20];
char first[20], last[20];
int i,j;
printf("Enter 5 words separated by spaces: \n");
for (i = 0; i < 5; i++)
{
scanf("%s", word[i]);
}
strcpy(first,word[0]);
strcpy(last,word[0]);
findWord(word, first, last);
printf("The first word is: %s and the last word is: %s ", first, last);
}
void findWord(char word[][20], char *first, char *last)
{
int k;
for (k = 0; k < 5; k++)
{
if(strcmp(word[k], last)>0)
strcpy(last,word[k]);
else if(strcmp(word[k],first)<0)
strcpy(first,word[k]);
}
}