问题 问答题

程序test.c的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请考生编写函数num(int m,int k,int xx[])实现程序的要求,最后调用函数readwriteDAT()把结果输出到out.dat文件中。
例如,若输入17,5,则应输出:19,23,29,31,37。
注意:部分源程序存在test.c文件中。
请勿改动数据文件in.dat中的任何数据以及主函数main()和输出函数readwriteDAT()的内容。
#include <stdio.h> //include语句说明各程序中包含vc6.0中的标准输入输出库函数stdio.h
void readwriteDAT();//函数readwriteDAT()说明语句
int isP(int m) //函数isP(int m)判断m是否为素数,如果是素数则返回1,否则返回0

int i; //定义变量i
for (i=2; i<m; i++) //变量i从2依次递增到m-1
if (m % i==0) return 0; //如果m能被i整除,返回0
return 1; //否则返回1

void num(int m, int k, int xx[])


main()

int m, n, xx[1000]; //定义变量m,n和数组xx[1000]
printf("\nPlease enter two integers:");
scanf("%d, %d", &m, %n); //从键盘读入两个数赋给变量m,n
num (m,n,xx); //调用函数num(int m,int k,int xx[])实现将大于整数m且紧靠m的k个素数存入数组xx
for (m=0; m<n; m++) //变量m从0依次递增到n-1
printf("%d",xx[m]); //输出数组元素xx[m]
printf("\n"); //输出一个回车换行符
readwriteDAT();//调用函数readwriteDAT()把结果输出到out.dat文件中

void readwriteDAT()//函数readwriteDAT()的定义语句

int m,n,xx[1000],i; //定义整型变量m,n,i和数组xx[1000]
FILE *rf,*wf; //定义文件指针变量rf,wf
rf=fopen("in.dat","r"); //以只读的方式的打开文件in.dat,并用rf指向这个文件
wf=fopen("out.dat","w"); //以只写的方式的打开文件out.dat,并用wf指向这个文件
for (i=0; i<10; i++) //循环变量i从0依次递增到9

fscanf (rf,"%d%d",&m,&n); //从文件in.dat读入两个数值赋给m,n
num (m,n,xx);//调用函数函数num(m,k,xx[])实现将大于整数m且紧靠m的k个素数存入数组xx
for(m=0;m<n; m++) //循环变量m从0依次递增到n-1
fprintf (wf,"%d",xx[m]); //把数组元素xx[m]写入到文件out.dat中
fprintf (wf,"\n"); //把回车换行符写入到文件out.dat中

fclose (rf); //关闭输入文件in.dat
fclose (wf); //关闭输出文件out.dat

答案

参考答案:int cnt=0; //定义变量cnt并初值等于0
while (cnt<k) //当cnt的值小于k时
{
m++; //变量m加1
if (isP (m)) xx[cnt++]=m; //如果m为素数,则把其赋给数组元素xx[cnt],并且数组的下标cnt加1
}

解析: 将大于整数m且紧靠m的k个素数存入数组。
[解题思路]
①首先定义一个计数变量cnt并赋初值为0。
②利用while循环统计大于整数m且紧靠m的k个素数,当计数变量cnt的值与变量k的值相等的时候,则退出while循环。每执行一次循环时,变量m的值加1,然后调用函数isP()判断当前的m值是否为素数,如果是素数,则将m的值赋给数组xx[cnt],同时计算变量cnt的值加1,即当数组xx[0]中保存了一个素数之后,在下一次素数判断成立时将保存到xx[1]的位置上,依次类推。

看图题:

(牢记历史不是为了延续仇恨)仔细观察下面三个条约签订时的情景,回答相关问题:

材料一:

图一
图二
图三

材料二:“由于中国人民闭关自守,骄傲自满,19世纪中期到20世纪初的灾难性战争使他们受到巨大的刺激,在这些战争中所遭到的耻辱性失败,迫使中国人打开大门,结束他们对西方的屈尊态度,重新评价自己的传统文明。其结果是入侵和反入侵的连锁反应……” ——《全球通史》 (1)材料一分别是签订的什么条约?条约:____________、____________、____________(2)结合所学知识从上述三图看近代外国侵略者侵略中国的趋势如何?出现这种趋势的内在主要原因是什么?____________________________________(3)请你将下列一系列条款结合图片进行归类:①划定北京东交民巷为使馆界②允许日本在通商口岸开设工厂③英商进出口货物缴纳的税款,中国需同英国商定④增开重庆等地为通商口岸

⑤开放广州、上海等地为通商口岸⑥清政府保证严禁人民参加反帝活动

图1:____________;图2:____________;图3:____________

(4)三个条约分别给中国带来了怎样的影响?

____________________________________

(5)对文中所说的“灾难性战争”中国人民“反侵略”的斗争有哪些?请列举出来。(答出三个即可)

____________________________________

(6)针对上面两则材料,你有什么感想和看法?请说说看。

____________________________________

单项选择题