发布网友 发布时间:2024-10-24 19:06
共2个回答
热心网友 时间:2024-10-24 21:29
暂时没有VC 就在这写一下,自己调试一下:热心网友 时间:2024-10-24 21:21
#include <time.h>#include <stdio.h>#include <stdlib.h>//模拟 bool 类型#define BOOL int#define TRUE 1#define FALSE 0//交换两个数字的位置void swap(int *a, int *b){ *a ^= *b; *b ^= *a; *a ^= *b;}//数组排序void sort(int *array, int length){ for(int i=0; i<length; ++i) { for(int j=0; j<length-1-i; ++j) { if(array[j] > array[j+1]) { swap(&array[j], &array[j+1]); } } }}//判断一个数字是否为素数BOOL isPrimeNumber(int number){ for(int i=2; i<number; ++i) { if( ! (number % i) ) { return FALSE; } } return TRUE;}//获取数组中的素数,并返回有效数据长度int getPrimeNumber(int *source, int *target, int length){ int index = 0; for(int i=0; i<length; ++i) { if(isPrimeNumber(source[i])) { target[index++] = source[i]; } } return index;}//输出数组中的所有元素void print(int *data, int length){ for(int i=0; i<length; ++i) { printf("%d\n",data[i]); }}//传入一个数组和数组长度 用于保存产生的随机数void getRandomNumber(int *data, int length){ //以时间作为随机种子 srand( (unsigned)time( NULL ) ); //生成保存满足条件的length个随机数 for(int i=0; i<length; ++i) { data[i] = rand() % 4000 + 1000;// data[i] = rand() % 8 + 2; }}int main(int argc, char *argv[]){ int length = 10; int source[length]; int target[length]; //获取10个随机数 getRandomNumber(source, length); //count 有效数据的长度 int count = getPrimeNumber(source, target, length); //排序 sort(target, count); //输出 print(target, count);