【发布时间】:2014-06-22 15:16:06
【问题描述】:
我最近接到了一个任务,要用 C 语言编写一个代码来确定单词列表是否已排序(“排序”= 所有单词在单词中按字母升序排列) 我们有许多必须遵循的准则,因此最终结果是完全愚蠢的,而不是简短而高效的代码。
我的代码出现 2 个错误:
“传递 'sortedsentance' 的参数 1 使指针从整数不进行强制转换”
预期为 'char *' 但参数是 'char' 类型
这是我的代码-
#include <stdio.h>
int sortedSentance(char *str)
{
int i;
for (i=1; str[i]!='0'; i++)
{
if ((str[i]>str[i-1])||(str[i]==33))
continue;
else
break;
}
if (str[i]=='\0')
return 1;
else
return 0;
}
int main()
{
int num=0, val=0;
char str1;
printf("Please enter the number of strings of length 5 (maximum 5)\n");
scanf("%d", &num);
printf("Please enter %d strings\n", num);
scanf("%s", &str1);
val= (sortedSentance(str1));
if (val==1)
printf("the string %s, is sorted.", str1);
else
printf("the string %s, is not sorted.", str1);
return 0;
}
注意事项:
- 我们的指导方针是,函数必须这样声明,我知道应该以不同的方式进行。
- 我知道变量
num没有做任何事情,但同样,为了愚蠢的指导方针。即使事先没有实际接收到字数,该算法也能实现所需的功能。
任何帮助都将不胜感激,我已经抓狂地试图弄明白为什么这个非常简单的代码不起作用,以及我会犯什么样的愚蠢错误。
【问题讨论】:
-
仅供参考
sortedSentance应该是sortedSentence -
您将
char str1声明为单个字符。您不能将多个字符串读入一个字符。 (而且我不确定您是否能够称您的指导方针“愚蠢”。) -
我还没有看到你的作业,但对我来说有问题。如果您要检查单词列表并获得
num,那么您为什么只阅读一个字符串? -
函数名称是从工作表中复制粘贴的。拼写错误最初就在那里(如果我修复它 - 自动检查系统会将其标记为错误,我会得到更少的分数)......这也是我没有得到的,我们的输入文件例如,通过空格分隔单词,而不是通过使用 scanf 读取每个单词然后输入。 num 几乎没有任何作用,因为该程序适用于任何数量的由空格分隔的单词。我忘记通过定义添加尺寸并将其包含在内,将尝试并报告。