有以下程序:
#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;
程序运行后的输出结果是()
A. 19
B. 11
C. 29
D. 23
参考答案: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。