想用递归的方式处理:比较二维数组不同行的字符串大小,并选出字符串最大的那一行
请问:本题可以用递归解决吗?可以的话帮忙看一下代码
以下为我的代码与结果
以下为代码报错异常界面
想用递归的方式处理:比较二维数组不同行的字符串大小,并选出字符串最大的那一行
请问:本题可以用递归解决吗?可以的话帮忙看一下代码
以下为我的代码与结果
仅供参考
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 3
#define M 20
void my_strcmp(int line, char *string, char arr[N][M])
{
// 第一次进入比较第0行和第1行
if(line == 0)
{
if(strcmp(arr[0], arr[1]) > 0)
{
strcpy(string, arr[0]);
}
else
{
strcpy(string, arr[1]);
}
}
else
{
// 第二次递归进来比较上一次的最大行和当前行
if(strcmp(arr[line], string) > 0)
{
strcpy(string, arr[line]);
}
}
if(line == (N - 1))
{
// 比较到最后一行返回
return;
}
else
{
// 行数+1递归比较
if (line == 0)
{
// 第一次进来的时候比较了两行
my_strcmp(line + 2, string, arr);
}
else
{
// 后面再进来一次比较一行
my_strcmp(line + 1, string, arr);
}
}
}
int main()
{
char arr[N][M] = {0};
char string[20] = {0};
printf("Input Three Line:\n");
int i = 0;
for (i = 0;i < 3;i++)
{
gets(arr[i]);
}
my_strcmp(0, string, arr);
printf("the largest string is:%s\n", string);
system("pause");
}