选择题 20.  有以下程序:
    #include  <iostream>
    using  namespace  std;
    int  main()
    {
        int  num[2][3],*p;
        int  t,i,j,k=10;
        p=num[0];
        for(i=0;i<2;i++)
        {
            for(j=0;j<3;j++)
            {
                k++;
                *p=k;
                for(t=2;t<*p;t++)
                {
                    if(!(*p%t))
                    {
                          j--;  *p--;
                          break;
                    }
                    *p++;
            }
        }
        cout<<*(p-1)<<end1;
        return  0;
    }
    程序运行后的输出结果是   
【正确答案】 C
【答案解析】 本题考核数组与指针的关系。程序首先初始化指针p,让其指向二维数组 num的首元素,即num[0][0]。程序中,第1个for循环是为二维数组的每行元素赋值而设置的循环,第2个for循环是为二维数组的每列元素赋值而设定的,第3个for循环是为判断数组元素是否是素数而设置的。在第3个for循环中,如果*p的值能被小于它的数整除(即不是素数),则执行“j--;*p--;”,然后跳出第3个for循环。j--的含义是让其前面的赋值语句重新赋值,而*p--的含义是使指针指向前一个单元。语句“*p++;”将指针移到下一个单元,在下一次循环时,k加1,并k赋给*p,看*p是否为素数,这样一直到满足条件为止,即数组num[2][3]中的数都为素数。最后数组num中各元素的值分别为大于10的素数,即分别为:11,13;17,19,23,29。
   程序最后要求输出*p的值,由于此时指针已指向数组num的最后一个元素,即 num[1][2]。所以输出的值是29。