对于最大的-l和最小的-s,如果用户输入无效选项,程序应显示错误消息。我必须编码功能。
当前错误是第一个和第二个if()语句中指针和整数的比较。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *numbers[])
{
//variables needed
int i,temp,max,min;
//find largest (-1)
if (!(strcmp(numbers[1],"-1")))
{
max = atoi(numbers[2]);
for (i=2;i<argc;i++)
{
if(numbers[i] >= 'a' && numbers[i] <= 'z')
{
printf("bad input");
}
else if(numbers[i] >= 'A' && numbers[i] <= 'Z')
{
printf("bad input");
}
else
{
temp = atoi(numbers[i]);
if (max<temp)
{
max = temp;
}
}
}
//output after loop
printf("\nThe largest number is %d\n",max);
}
else if (!(strcmp(numbers[1],"-s")))
{
min = atoi(numbers[2]);
for (i=2;i<argc;i++)
{
temp = atoi(numbers[i]);
if (min>temp)
{
min = temp;
}
}
printf("\nThe smallest number is %d\n",min);
}
else
{
}
return 0;
}
答案 0 :(得分:2)
char * numbers []
您的numbers
是一个指向char的指针数组(请注意,[]
的优先级高于*
- 这就是为什么它的数组为指针的原因),所以比较if(numbers[i] >= 'a' && numbers[i] <= 'z')
没有意义。
您需要的是if(numbers[i][0] >= 'a' && numbers[i][0] <= 'z')
。同样对于以下条件,它应该是if(numbers[i][0] >= 'A' && numbers[i][0] <= 'Z')
。因为char *numbers[]
是指向char的指针数组,所以numbers[i]
是指向char的指针,因此可以通过numbers[i][0]
答案 1 :(得分:1)
numbers [i]是一个指针。您无法将数字[i]与单个字符进行比较。