找出整型数组元素的最大值 和 字符串回文

第一题:
//设计一个函数,找出整型数组元素的最大值
#include <stdio.h>
int maxOfArray(int array[], int length)
{
int max = array[0];
for (int i = 1; i<length; i++)
{
// 如果当前元素大于max,就用当前元素覆盖max
if (array[i] > max)
{
max = array[i];
}
}
return max;
}
int main()
{
int ages[] = {11, 90, 67, 150, 78, 60, 70, 89, 100};
int ages2[] = {11, 90, 67, 150, 78, 60, 70, 89, 100};
int max = maxOfArray(ages, sizeof(ages)/sizeof(int));
printf("%d\n", max);
return 0;
}
请问:int maxOfArray(int array[], int length) 和 int max = maxOfArray(ages, sizeof(ages)/sizeof(int));,这两个的括号内的东西是怎么理解?

第二题:
原文是这样的:
/*
编写一个函数,判断某个字符串是否为回文。
回文就是从左边开始读 和 从右边开始读 都是一样的,比如"abcba"
*/
#include <string.h>
#include <stdio.h>
int isHuiwen(char *str);
int main()
{
printf("%d\n", isHuiwen("a"));
return 0;
}
/*
返回1代表是回文
返回0代表不是回文
*/
int isHuiwen(char *str)
{
// 1.定义一个指向变量left指向字符串的首字符
char *left = str;
// 2.定义一个指向变量right指向字符串的末字符
char *right = str + strlen(str) - 1;
while (left < right)
{
// 如果左边和右边的字符不一样
if (*left++ != *right--)
{
return 0;
}
}
return 1;
}
修改:我想把代码中的‘a’修改为可以输入字符的代码:
我只修改其中的这一部分:

int main()
{
printf("请用a~z输入一段字符串:\n");
scanf("%d",&num);
printf("%d\n", isHuiwen("num"));
return num;
}
这样子为什么返回值永远是0,我应该怎么修改才能达到检测输入的是否为回文?
最新回答
西瓜小姐

2024-09-30 00:25:58

  1. int maxOfArray(int array[], int length)中的int array[]和int length是为函数maxOfArray声明了两个形式参数;int max = maxOfArray(ages, sizeof(ages)/sizeof(int))中的ages, sizeof(ages)/sizeof(int)是用实参ages和sizeof(ages)/sizeof(int)调用函数maxOfArray,并把它的返回值赋给int型变量max。调用时实际上就是使形参array=ages,使形参length=sizeof(ages)/sizeof(int)——这一长串是计算数组的元素个数。在主调函数中maxOfArray(ages, sizeof(ages)/sizeof(int))这样一写就把数组的首元素地址和数组元素个数传给了被调函数maxOfArray。

  2. 主函数中printf("%d\n", isHuiwen("num"));一句是把字符串num的首元素地址(就是n的地址)传给了函数isHuiwen,num本就不是回文字符串,所以永远返回0。如下写主函数就可以了

    int main()
    {
        char s[100];

        printf("请用a~z输入一段字符串:\n");
        scanf("%s",s);
        printf("%d\n", isHuiwen(s));
        return 0;
    }

南語

2024-09-30 00:19:57

1。int maxOfArray(int array[], int length)
int array[]声明array是一个数组变量,就是你你调用maxOfArray()的时候第一个参数得是int型数组。第二个参数显然是int型。

int max = maxOfArray(ages, sizeof(ages)/sizeof(int));

sizeof()求括号里变量(如ages)或类型(如int)所占据的内存大小。
这里ages是int型数组,该数组所占据的空间大小 除以 int型变量的大小 等于 该数组的元素个数。

2.
isHuiwen("num")每次判断的是是“num”这个字符串,而不是你的输入。他不是回文,当然结果为0.

应改为
int main()
{
printf("请用a~z输入一段字符串:\n");
char buf[100];
scanf("%s", buf);
printf("%d\n", isHuiwen(buf));
return 0; // main函数最后一般都是return 0
}