滨海中等专业学校 韩立超
程序设计训练
一、
程序填空
题目:下面的程序首先随机产生20个大于或等于900且小于1000的 素数,然后将这些素数保存在数组array中,并将这些素数 在屏幕上以每行打印5个的格式输出,请将程序补充完整。 --------------------------------------------------------- 注意:请勿改动主函数main()中的其他内容 且不能使用C语言的库函数。
-------------------------------------------------------*/ #include
/*函数isPrime(int m)用于判断整数m是否为素数*/ int isPrime(int m) {
int flag=0; int i=2,k; k=(int)sqrt(m);
/***********SPACE***********/ while (i<=k && 【?】) i++; if(i>k) flag=1; return flag; }
void main() {
int array[20]; int i,t; i=0; while(i<20) {
t=rand()0+900; /***********SPACE***********/ if (【?】) {
array[i]=t; printf(\ i++;
if (!(i%5)) printf(\ } }
printf(\}
二、 程序改错
- 1 -
滨海中等专业学校 韩立超
题目:主函数main()中调用count()函数统计子串substr在字符串 str中出现的次数。例如字符串str为”abdrgabdd”,子串 substr为”ab”,则子串在该字符串出现的次数为2。 下面给定的程序存在错误,请改正。
--------------------------------------------------------- 注意:不得增行或删行,也不得更改程序的结构。
--------------------------------------------------------*/ #include
int count(char str[],char substr[]) {
/***********FOUND***********/ int i,j,k,num;
for(i=0;str[i]!='\\0';i++) {
/***********FOUND***********/
for(j=0,k=0;substr[k]==str[j];k++,j++) if(substr[k+1]=='\\0') { num++;break; } }
return(num); }
int main() {
char str[80],substr[80]; int num=0;
printf(\ gets(str);
printf(\ gets(substr);
/***********FOUND***********/ num=count(str[80],substr[80]); if(num)
printf(\ else
printf(\ return 0; }
三、程序设计
题目:主函数main()中一维数组a为测试数据,程序将测试数据进 行加密,加密后的数据存入数组b中,判断数组b中是否存 在素数,将所有素数存入数组c中,并输出。 编写程序:
1. 编写函数void encode(int x[],int n,int y[]),将数
- 2 -
滨海中等专业学校 韩立超
组x中n个不超过3位的正整数逐个做加密处理, 并将加密后的数据存入数组y中。加密方法如下:将正 整数的每一位用该位数字加该位序号的值替换(序号 规定:个位为3,十位为2,百位为1),若结果大于9, 则用该数除以10的余数替换。
2. 编写函数int CheckPrime(int y[],int n,int c[]), 判断数组y中n个整数是否是素数,并将所有素数存入数 组c中,函数返回素数个数。 例如: 测试数据:
25,90,89,24,125 运行结果:
c[0]=13 is prime c[1]=2 is prime c[2]=47 is prime
--------------------------------------------------------- 注意:请勿改动主函数main()中的任何语句。
-------------------------------------------------------*/
#include
void encode(int x[],int n,int y[]) {
/**********Program**********/
/********** End **********/ }
int CheckPrime(int y[],int n,int c[]) {
/**********Program**********/
/********** End **********/ }
- 3 -
滨海中等专业学校 韩立超
int main() {
int i,a[10]={25,90,89,24,125},b[10]={0},c[10]={0}; int num=0,n; FILE *fp;
if((fp=fopen(\ {
printf(\ exit(0); } n=5;
encode(a,n,b);
num=CheckPrime(b,n,c);
for(i=0;i printf(\ fprintf(fp,\ } fclose(fp); getch(); return 0; } - 4 -

