以下是题目
我写的:
#include
#include
int main()
{
char a[3][20];
char b[20],c[20],d[20];
b[20]=a[0][20];
c[20]=a[1][20];
d[20]=a[2][20];
gets(b);
gets(c);
gets(d);
char largest[20];
if(strcmp(b,c)>0)
if(strcmp(d,b)>0)
strcpy(largest,d);
else strcpy(largest,b);
else {if(strcmp(d,c)>0)
strcpy(largest,d);
else strcpy(largest,c);}
printf("the largest string is %s\n",largest);
return 0;
}
无法运行,帮忙找找错,谢谢
7、8、9行下标越界了。
/*
下标20本身就是越界了,
就算不越界这样赋值也没有任何意义,
因为把二维数组当摆设了
b[20]=a[0][20];
c[20]=a[1][20];
d[20]=a[2][20];
*/
#include <stdio.h>
#include <string.h>
int main()
{
char a[3][21];
char largest[21] = {'\0'};
fgets(a[0], 20, stdin);
fgets(a[1], 20, stdin);
fgets(a[2], 20, stdin);
if (strcmp(a[0], a[1]) > 0)
{
if (strcmp(a[0], a[2]) > 0)
strcpy(largest, a[0]);
else
strcpy(largest, a[2]);
}
else
{
if (strcmp(a[1], a[2]) > 0)
strcpy(largest, a[1]);
else
strcpy(largest, a[2]);
}
printf("the largest string is %s\n", largest);
return 0;
}