阅读以下说明和流程图8-11,完成程序(n)处的语句写在对应栏内。
[说明]
对于数学上一个猜想:任何自然数平方的36倍等于两对孪生素数的和。初始的情形如下:
12×36=(5+7)+(11+13)
22×36=(29+31)+(41+43)
32×36=(11+13)+(149+151)
再往下,N取4,5,6,时,只要N不太大,也都可以找到N(上标)2×36等于两对孪生素数的和。但是当N是一个任意的正整数时,证明N2×36总是等于两对孪生素数的和,这还是一个目前尚未解决的问题。甚至当考察的数较大时,找出一组符合条件的两对孪生素数都是计算量相当大的工作。每尝试一次,都要作4次是否是素数的判断,要作许多次的尝试,才可能找到一组解。下面流程图设计了一种优化算法来对这个猜想进行验证。仔细阅读流程图8-11,完成程序部分。
[程序部分]
main ()
{
int t, i, j, prime_index; is_p rime:
long n, p, p1, p2, p3, p4, s, s1;
long primes [ 16000 ];
for (n=1; n<98; ++n)
{
t=0;
s= n* n* 36;
prime_index= 2;
primes[0]=2; primes[1]=3;
for (p=5: p<=s/2; p=p+2)
{
is_p rime= 1;
for ( i=1;(1)++i)
if ( p%primes [i] = = 0 ) is_p rime= 0;
if ( is_p rime)
{
(2)
}
}
for ( i=1; (3)++i)
{
(4)
if ( p2=p1+ 2 )
{
s1=s- (p1+p2)
p3=sl/2-1; p4=p3+2:
for ( j=0; j<=prime_index-1; ++j )
if ((5))
{
printf ( "%d* % d*36= (%d+ %d) + (%d+%d) \n", \ n,n, p1, p2, p3, p4 ) ;
++t;
}
}
}
if ( t! = 0 ) printf ("%d\n", t )
else
printf ( "%d* %d*36=no so lution\n ", n, n ) ; }
}
}
第1题:
阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写在对应栏内。
【说明】
阅读下面几段C++程序回答相应问题。
比较下面两段程序的优缺点。
①for (i=0; i<N; i++ )
{
if (condition)
//DoSomething
…
else
//DoOtherthing
…
}
②if (condition) {
for (i =0; i<N; i++ )
//DoSomething
}else {
for (i=0; i <N; i++ )
//DoOtherthing
…
}
第2题:
阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。
[说明]
下面的流程图用于计算一个英文句子中最长单词的长度(即单词中字母个数)MAX。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。
[流程图]
第3题:
试题三(共 15 分)
阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
第4题:
阅读以下说明,回答问题,将解答填入对应的解答栏内。
. [说明] 请完成流程图以描述在数据A(1)至A(10)中求最大数和次大数的程序的算法。并将此改成PAD图。该算法的流程图如下图:
第5题:
阅读下列说明和流程图,将应填入(n)处的语句写在对应栏内。
【说明】
设学生(学生数少于50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组B[50]中。
【流程图】