各位C++大神,帮帮我这个小白看下这个简单的问题!!!感激不尽

我重新写了一个数组赋值给另一个数组的程序,程序如下:
#include
#include

int main ()
{
using namespace std ;

cout << " 数组赋值给数组: " << endl ;

const size_t Array_size = 10 ;

const size_t Array_size_2 = 20 ;

int Array1 [ Array_size ] = { 1, 2 , 3 , 4 , 5 , 6 , 7, 8 , 9 , 10 } ;
int Array2 [ Array_size_2 ] = { 0 }; // 此处不是 不只是 第一个元素被初始化为0,其余元素也被默认初始化为0了吗?

for ( size_t ix = 0 ;ix < Array_size_2 ; ++ ix )
{
Array2 [ ix ] = Array1 [ ix ] ;
}
for ( size_t ix = 0 ; ix < Array_size_2 ; ++ ix )
{
cout << setw(4) << Array2 [ix] ;
}
system("pause") ;
}

为什么运行的结果后10个数字是 “ 有趣 ” 的结果? 不是应该是0吗?后10个数字被没有被覆盖呀.
图片说明

因为你第一个for循环,循环了20次,从第11次开始,就是将内存中的垃圾值赋值给Array2数组的后10个元素了
所以输出了垃圾值,楼主的本意应该是循环10次吧?

 #include<iostream>
#include<iomanip>

int main()
{
    using namespace std;

    cout << " 数组赋值给数组: " << endl;

    const size_t Array_size = 10;
    const size_t Array_size_2 = 20;

    int Array1[Array_size] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int Array2[Array_size_2] = { 0 };    //   此处不是  不只是  第一个元素被初始化为0,其余元素也被默认初始化为0了吗?


    for (size_t ix = 0; ix < Array_size; ++ix)
    {
        Array2[ix] = Array1[ix];
    }
    for (size_t ix = 0; ix < Array_size_2; ++ix)
    {
        cout << setw(4) << Array2[ix];
    }
    system("pause");
}

第一个for循环时Array1数组有20个吗?

谢谢,我一直以为是怎么了.

谁能帮我看看这道题
题目描述
查看题目信息
五一期间,Tom老师带领爱思创的同学去爬香山,香山的景色实在是太美了,他们想在一起拍个照片。现在将这些同学进行编号 (1~n),Tom老师要求队伍中的男生全部在左且需要按照身高从矮到高的顺序从左到右排,女生全部在右且需要按照身高从高到矮的顺序从左到右排。注意,身高一样的时候需要让编号小的在前,那么聪明的你能不能帮他们排一下队伍呢?

输入格式
第一行为总人数 n(2 <= n <= 40) (数据保证队伍中最少有一个男生和一个女生)
其后 n 行,每行数据包含一位同学的性别(男 male 或女 female )和身高(整数,单位:厘米),两个数据之间以空格分隔,每个同学的编号按照输入顺序编号为 1~n 。

输出格式
输出 n 行,每一行两个数据。

这两个数据分别表示按照要求排好队伍以后每位同学排队之前的编号以及身高,用空格分开。

样例输入
6
male 172
male 178
female 161
male 165
female 173
female 156
样例输出
4 165
1 172
2 178
5 173
3 161
6 156