|
发表于 2022-4-24 15:27:35
|
显示全部楼层
本帖最后由 cjgank 于 2022-4-24 15:29 编辑
楼主代码有逻辑问题。
1.数组a和数组b实际输入有多长
2.若数组a比数组b长,但比较部分都相同,未比较部分没有体现。例如:123 和1234
3.数组串长度不是人为输入的,应该利用strlen()计算输入字符串的长度
4.字符串比较不要80次,除非你输入的两个字符串字符都有80个
代码如下
#include <stdio.h>
#include <string.h>
int main()
{
int i, count = 0, flag = 0;
int len_a = 0, len_b = 0, len_min = 0;
char a[80], b[80];
printf ("请输入数组a(max_size:80):");
gets(a);
len_a = strlen (a);
printf ("请输入数组b(max_size:80):");
gets(b);
len_b = strlen (b);
if (len_a > len_b)
len_min = len_b;
else
len_min = len_a;
for (i = 0; i < len_min; i++)
{
if (a[i] > b[i])
{
printf("数组a大\n");
flag = 1;
break;
}
else if (a[i] < b[i])
{
printf("数组b大\n");
flag = 1;
break;
}
else
{
count++;
}
}
if (!flag) //若for语句比较结束还未有结果,则还需要比较数组a和数组b的长度。其中flag作结果标志位
{
if (count == len_min && len_a > len_b)
printf("数组a大!");
else if (count == len_min && len_a < len_b)
printf("数组b大!");
else
printf("数组一样大!");
}
return 0;
}
验证结果
PS D:\temp\Project\src> cd "d:\temp\Project\src\" ; if ($?) { gcc 数组大小比较.c -o 数组大小比较 } ; if ($?) { .\数组大小比较 } ; if ($?) { rm .\数组大小比较.exe }
请输入数组a(max_size:80):1234
请输入数组b(max_size:80):123
数组a大!
PS D:\temp\Project\src> cd "d:\temp\Project\src\" ; if ($?) { gcc 数组大小比较.c -o 数组大小比较 } ; if ($?) { .\数组大小比较 } ; if ($?) { rm .\数组大小比较.exe }
请输入数组a(max_size:80):123
请输入数组b(max_size:80):1234
数组b大!
PS D:\temp\Project\src> cd "d:\temp\Project\src\" ; if ($?) { gcc 数组大小比较.c -o 数组大小比较 } ; if ($?) { .\数组大小比较 } ; if ($?) { rm .\数组大小比较.exe }
请输入数组a(max_size:80):1234
请输入数组b(max_size:80):5678
数组b大
PS D:\temp\Project\src> cd "d:\temp\Project\src\" ; if ($?) { gcc 数组大小比较.c -o 数组大小比较 } ; if ($?) { .\数组大小比较 } ; if ($?) { rm .\数组大小比较.exe }
请输入数组a(max_size:80):1234
请输入数组b(max_size:80):1234
数组一样大! |
|