for循环里明明已经初始化了j可是下方还是报错,显示未定义j
int fun(int a[], int len1, int b[], int len2)
{
for (int i = 0;i//int j = 0;
for (int j = 0;j < len2;j++)
if (a[i] < b[j])
break;
if (j >= len2)
{
b[j] = a[i];
len2++;
}
else {
int k = len2;
for (int k = len2;k >j;k--)
b[k] = b[k - 1];
b[k] = a[i];
len2++;
}
}
return len2;//len1改成len2
}
未定义标识符"j"
加上int j=0;
了解报错原因
for (int j = 0;j < len2;j++)
if (a[i] < b[j])
break;
因为j是在for语句中定义的,其作用域只是在for的代码块内,也就是上述3行内。所以后面的j是找不到定义的。
#include
using namespace std;
void print(int* t, int n)
{
for (int i = 0;i < n;i++)
cout << *(t + i) << ' ';
cout << endl;
}
int fun(int a[], int len1, int b[], int len2)
{
for (int i = 0;i<len1;i++)
{
//int j = 0;
for (int j = 0;j < len2;j++)
if (a[i] < b[j])
break;
if (j >= len2)
{
b[j] = a[i];
len2++;
}
else {
int k = len2;
for (int k = len2;k >j;k--)
b[k] = b[k - 1];
b[k] = a[i];
len2++;
}
}
return len2;//len1改成len2
}
int main()
{
int a[10] = { 3,5,9,15,25,30 }, b[20] = { 1,2,3,8,10,16,18,20 };
int n;
cout << "数组a:";
print(a, 6);
cout << "数组b:";
print(b, 7);
n = fun(a, 6, b, 7);
cout << "合并后的数组为:";
print(b, n);
return 0;
}
答案:
数组a:3 5 9 15 25 30
数组b:1 2 8 10 16 18 20
合并后的数组为:1 2 3 5 8 9 10 15 16 18 20 25 30
for (int j = 0;j < len2;j++) 后面没有大括号,变量j的有效范围也就它下面那一句,后面的j都是未定义。加个花括号