作业帮 > 综合 > 作业

求编写源程序1:输出500至1000之间的所有素数之和2:求分数序列:2/1,3/2,5/3,8/5,13/8 ……的前

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/27 22:29:27
求编写源程序
1:输出500至1000之间的所有素数之和
2:求分数序列:2/1,3/2,5/3,8/5,13/8 ……的前20项的和值并输出
3:编写一个判断素数的函数.调用该函数,计算并输出区间[1000,2000]内所有素数的平均值,结果保留2位小数.
4:求一维数组中最大的三个元素的平方根之和,A数组的数据位56,78,98,45,58,34,12,90,26,88(思路:先排序确定最大三元素位置,然后计算输出)
5.编写程序,计算下面数列的和,当第一次出现的和值能被7整除且大于1000时求和终止并输出结果.
1*3,3*5,5*7,7*9,……,(2*n-1)*(2*n+1) ……
6.设计一个过程(函数或子程序):计算n!=1×2×3×…×n.用主调函数过程调用这个过程并计算n=20时的值
7.由程序随机产生一个一维数组,并且使每个数组元素n为10到100之间的正整数,把小于所有元素平均值的数据存放到一个新的一维数组中输出之.
8.编写程序,求下面数列的前若干项的积,直到第一次出现积小于0.0001为止,并输出此时的积为多少.结果保留6位小数.
1/(1×2),1/(3×4),1/(5×6),……,1/((2n-1)×(2n)),……
9.编程输出300至500之间能同时被5和7整除的所有数据的和
10.设计一个函数,求任意两个正整数的最大公约数.在主函数中调用此函数,并计算3696和2352的最大公约数
11.利用随机函数为一个15个元素的一维数组(10-99)赋值并输出原始数据,将该数组按从大到小的顺序进行排序,输出排序后的数组
求编写源程序1:输出500至1000之间的所有素数之和2:求分数序列:2/1,3/2,5/3,8/5,13/8 ……的前
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int is_prime(int n){
int m;
for(m=2 ; m <= (int)sqrt(n); m++){
if(n%m == 0){
return 0;
}
}
return 1;
}

void timu_1(){

int min = 500;
int max = 1000;
int sum = 0;
int i;
for(i = min ; i <= max ; i++){
if(is_prime(i)){
sum = sum + i;
}
}
printf("the sum of prime numbers between %d - %d is %d \n" , min , max , sum);
}

void timu_2(){
int count = 20;
int i ;
float sum = 0.0;
float a = 2.0;
float b = 1.0;
float c = 0.0;
for(i = 0 ; i < count ; i++){
sum += a / b;
//printf("%d %f/%f\n" , i , a , b);
c = a;
a = a + b;
b = c;
}
printf("the sum is %f \n" , sum);
}

void timu_3(){
float sum = 0.0;
int min = 1000;
int max = 2000;
int count = 0;
int i ;
for(i = min ; i <= max ; i++){
if(is_prime(i)){
sum += i;
count++;
}
}
printf("prime numbers average between %d - %d is %.2f\n" , min , max , sum/count);
}

void timu_4(){
int ary[] = {56,78,98,45,58,34,12,90,26,88};
int i , j , len;
int count = 3;
float sum = 0.0;
for(i = 0 , len = sizeof(ary)/sizeof(int); i < len ; i++){
for(j = i+1 ; j < len ; j++){
if(ary[j]>ary[i]){
ary[j]   = ary[i] ^ ary[j];
ary[i]   = ary[i] ^ ary[j];
ary[j]   = ary[i] ^ ary[j];
}
}
}
for(i = 0 ; i < count; i++){
sum += sqrt(ary[i]);
}
printf(" %f \n" , sum); 
}

void timu_5(){
int sum = 0;
int i = 1;
do{
sum += (2*i-1)*(2*i+1);
if(((sum%7)==0) && (sum > 1000)){
printf("sum : %d n=%d\n" , sum , i);
break;
}
i++;
}while(1);
}

void timu_6(){
static int ary[20] = { 1 };
int i, j;
int width; /*---表示结果的"宽度"---*/
int current_num; /*--- 当前数字 ---*/
/*--- 从大到小进行阶乘计算 ---*/
for( width = 0 , current_num = 20 ; current_num > 1; current_num-- ){
/*--- 对每一个‘分段’进行运算 ---*/
for( i = j = 0; i <= width; i++ ){
/*--- 当前运算的‘有效数值’ ---*/
ary[i] = ( (j += ary[i] * current_num) ) % 10000;   
/*--- 当前运算的‘进位数值’ ---*/
j /= 10000;   
}  
if ( ary[i] = j ){ /*如果有进位,则索引向前推进*/
width++;   
}
}  
printf ( "%d", ary[width] );  
/*--- 将求的数值输出 ---*/
for( j = width - 1; j >= 0; j-- ){
printf( "%04d", ary[j] );/*--- 这里的6跟10000的位数有关 ---*/
}  
printf("\n");
}

void timu_7(){
srand(time(NULL));
int len = 10;
int* ary = (int* )malloc(sizeof(int)*len);
if(ary == NULL){
printf("malloc  error !\n");
exit(1);
}
int sum = 0;
int num , i;
float ave = 0.0;
int count = 0;

for(i = 0 ; i < len ; i++){
num = (rand()%90)+10;
*(ary+i) = num; 
sum += num; 
}
ave = 1.0*(sum/len);
for(i = 0 ; i < len ; i++){
if(*(ary+i) < ave){
count++;
}
printf("ary[%d]=%d " , i , *(ary+i));
}
printf("average=%.1f\n" , ave); 
int* out = (int*)malloc(sizeof(int)*count);
if(out == NULL){
printf("malloc  error !\n");
exit(1);
}
int j;
for(i = 0 , j = 0 ; i < len ; i++){
if(*(ary+i) < ave){
*(out+j)=*(ary+i);
printf("ary[%d]=%d " , j , *(out+j));
j++;
}
}
printf("\n");
for(i = 0 ; i < count ; i++){
printf("out[%d]=%d " , i , *(out+i));
}
free(ary);
free(out);
printf("\n");
}

void timu_8(){
int n;
int max;
for(n = 1 , max = (2*n-1)*(2*n) ; max < 10000 ; n++){
max = (2*n-1)*(2*n)*max;
}
printf("%d\n" , n);
}

void timu_9(){
int min = 300;
int max = 500;
int sum = 0;
int i;
for(i = min ; i <= max ; i++){
if((i%5)==0 && (i%7)==0){
printf("[%d]" , i);
sum += i;
}
}
printf(" sum = %d\n" , sum);
}

int gy(int a , int b){
int r;
while(r = a%b){
a = b;
b = r;
}
return b;
}
void timu_10(){
printf("%d | " , gy(2352 , 3696));
}

void timu_11(){
int count = 15;
srand(time(NULL));
int* ary = (int*)malloc(sizeof(int)*count);
if(ary == NULL){
printf("malloc error!\n");
exit(1);
}
int i;
for(i = 0 ; i < count ; i++){
*(ary+i) = (rand() % 89) + 10;
}
for(i = 0 ; i < count ; i++){
printf("ary[%d]=%d " , i , *(ary+i));
}
int j;
for(i = 0 ; i < count ; i++){
for(j=i+1 ; j < count ; j++){
if(*(ary+i) < *(ary+j)){
*(ary+i) = *(ary+i) ^ *(ary+j);
*(ary+j) = *(ary+i) ^ *(ary+j);
*(ary+i) = *(ary+i) ^ *(ary+j);
}
}
}
printf("\nsort:\n");
for(i = 0 ; i < count ; i++){
printf("ary[%d]=%d " , i , *(ary+i));
}
free(ary);
}

void echo_t(int i){
printf("\n%-4d:----------------------------:^^^:\n" , i);
}
int main(int argc , char ** argv){

echo_t(1);timu_1();
echo_t(2);timu_2();
echo_t(3);timu_3();
echo_t(4);timu_4();
echo_t(5);timu_5();
echo_t(6);timu_6();
echo_t(7);timu_7();
echo_t(8);timu_8();
echo_t(9);timu_9();
echo_t(10);timu_10();
echo_t(11);timu_11();
return 0;
}
再问: 这是一个程序吗?
再答: 一个程序,,里面11个函数分别解决了你的11个问题。
再问: 可以拆成11个程序吗谢谢。。。这样的我看不懂。。。
再答: 这已经是我认为你能看懂的最最最最最简单的形式了,,,如果这都看不懂, ,,换了 你又何尝看的懂呢????你该不会是看不懂 for 和 if 还有main 的吧???