这段代码为什么有一种情况不能始终不能输出来
本帖最后由 猪头少年.zm 于 2022-4-24 11:51 编辑这段代码是比较两个字符串的大小且不可以用比较大小的函数
话不多说上代码#include <stdio.h>
void main()
{
int i, j = 0, k;
char a, b;
gets(a);
gets(b);
printf("请输入字符串长度\n");
scanf("%d", &k);
for(i=0; i<80; i++)
{
if(a > b)
{
printf("数组a大\n");
break;
}
else if(a < b)
{
printf("数组b大\n");
break;
}
else
{
j++;
}
}
if(k == j)
printf("两个数组一样大!");
}
为什么两个数组一样大的结果始终不可以输出来
例如输入
as
as
2
就没有结果了,请问各位大佬是为什么呢?
你要是想比较字符串长度应该用strlen函数来获取,然后进行比较。 本帖最后由 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>
intmain()
{
int i, count = 0, flag = 0;
int len_a = 0, len_b = 0, len_min = 0;
char a, b;
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 > b)
{
printf("数组a大\n");
flag = 1;
break;
}
else if (a < b)
{
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
数组一样大! #include <stdio.h>
void main()
{
int i, j = 0, k;
char a, b;
gets(a);
gets(b);
printf("请输入字符串长度\n");
scanf("%d", &k);
for(i=0; a&&b; i++) //这里不要写i<80,写i<80肯定会出错啊,好好想想
{
if(a > b)
{
printf("数组a大\n");
break;
}
else if(a < b)
{
printf("数组b大\n");
break;
}
else
{
j++;
}
}
if(k == j)
printf("两个数组一样大!");
}
cjgank 发表于 2022-4-24 15:27
楼主代码有逻辑问题。
1.数组a和数组b实际输入有多长
2.若数组a比数组b长,但比较部分都相同,未比较部 ...
谢谢大佬 yzzc 发表于 2022-4-25 22:33
#include
void main()
{
感谢大佬的解答
页:
[1]