问答题
编程题(24分)
【程序功能】
找出[a,b]区间内所有满足以下条件的整数:(1)该数是素数;(2)该数的十进制表示是4位数并且是降序数(即从高位到低位的各位数字依次减小或不增加的整数)。例如,4211既是素数又是4位降序数,因此4211是满足上述条件的整数。
【编程要求】
1.编写函数int decend(long n1,long n2,long x[])。函数功能:找出[n1,n2]区间内满足上述条件的所有整数并依次存放到x指向的一维数组中,函数返回满足条件的整数个数。
2.编写main函数。函数功能:声明变量a、b及一维数组c,键盘输入a、b的值,调用decend函数找出[a,b]区间内所有满足上述条件的整数并保存到c数组,输出c数组中的结果数据到屏幕及文件myf2.out中,最后将考生本人的准考证号输出到文件myf2.out中。
【测试数据与运行结果】
测试数据:a =1000 b=5000
屏幕输出:2111 2221 3221 3331 4111 4211 4421 4441
【要求】
1.源程序文件名为myf2.c,输出结果文件名为myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中的文件操作函数实现。
3.源程序文件和运行结果文件均需保存在T盘中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到T盘中。
【正确答案】 #include
#include
#include
int prime(long n)
{
int i =2;
while( n%i&&i<=n/2)i++;
if(i0&&a[k]>=a[k-1])k--;
if(k==0)
x[j++]=i;
}
}
return j;
}
int main()
{ FILE *fp;
int k,i;
long a,b,c[100];
printf( "a,b: ");
scanf("%ld%ld",&a,&b);
fp=fopen( "myf2.out","w");
if( fp==NULL)
{printf( "Create File myf2. out failed ! /n") ; exit(0) ;}
k = decend( a,b,c) ;
for(i = 0; i
【答案解析】