问答题 编程题(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
【答案解析】