有以下程序: #include <iostream> using namespace std; int main() { int num[2][3],*p; int t,i,j,k

admin2010-03-29  23

问题 有以下程序:     #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

答案4

解析 本题考核数组与指针的关系。程序首先初始化指针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。
转载请注明原文地址:https://jikaoti.com/ti/lmW0FFFM
0

随机试题
最新回复(0)