刷题5

43 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情


题目描述

点击直达题目链接 在这里插入图片描述 在这里插入图片描述

解题思路

对于A1到A5,我们用5个函数分别求。 在下面的代码中,用find表示是否查找到出现过该种类型的数字,出现过赋值为1,没有出现为0. 具体实现看下面的代码

代码

#include <stdio.h>
#include <stdlib.h>
int find = 0;
int f1(int* a, int n)
{
	find = 0;
	int i = 0,sum=0;
	for (; i < n; i++)
	{
		if (a[i] % 5 == 0&&a[i]%2==0)
		{
			find = 1;
			sum += a[i];
		}
	}
	return sum;
}
int f2(int* a, int n)
{
	find = 0;
	int i = 0, sum = 0, x = 1;
	for (; i < n; i++)
	{
		if (a[i] % 5 == 1)
		{
			find = 1;
			sum += x * a[i];
			x = -1*x;
		}
	}
	return sum;
}
int f3(int* a, int n)
{
	find = 0;
	int i = 0, sum = 0;
	for (; i < n; i++)
	{
		if (a[i] % 5 == 2 )
		{
			find = 1;
			sum++;
		}
	}
	return sum;
}
double f4(int* a, int n)
{
	find = 0;
	int i = 0, sum = 0,count=0;
	for (; i < n; i++)
	{
		if (a[i] % 5 == 3 )
		{
			find = 1;
			sum += a[i];
			count++;
		}
	}
	return (double)sum/count;
}
int f5(int* a, int n)
{
	find = 0;
	int i = 0, max = 0;
	for (; i < n; i++)
	{
		if (a[i] % 5 == 4)
		{
			find = 1;
			if(max<a[i])
			max = a[i];
		}
	}
	return max;
}
int main()
{
	int n,i;
	scanf("%d", &n);
	int* a = (int*)malloc(n * sizeof(int));
	if (a == NULL)
	{
		return 0;
	}
	for (i = 0; i < n; i++)
	{
		scanf("%d", a + i);
	}
	
	int ret=f1(a, n);
	if (find == 0)
	{
		printf("N ");
	}
	else
	{
		printf("%d ",ret);
	}
	
	ret=f2(a, n);
	if (find == 0)
	{
		printf("N ");
	}
	else
	{
		printf("%d ", ret);
	}
	
	ret = f3(a, n);
	if (find == 0)
	{
		printf("N ");
	}
	else
	{
		printf("%d ", ret);
	}
	
	double b=f4(a, n);
	if (find == 0)
	{
		printf("N ");
	}
	else
	{
		printf("%.1lf ", b);
	}
	
	ret = f5(a, n);
	if (find == 0)
	{
		printf("N ");
	}
	else
	{
		printf("%d ", ret);
	}
	free(a);
	a=NULL:
	return 0;
}

题目描述

点击直达题目链接 在这里插入图片描述

解题思路

就是求素数 先动态开辟一个区域,开辟为n个整型的大小的空间。 注意: 用count记录是第几个素数。 打印的时候注意每一行的结尾不能有空格。 因为我是从0处开始存储素数的,打印的时候,m,n都有减一哦! 具体实现看代码:

代码

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
	int m, n,i,count=1,x;
	scanf("%d%d", &m, &n);
	int* a = (int*)malloc(n * sizeof(int));
	if (a == NULL)
	{
		return 0;
	}
	a[0] = 2;
	for (i = 3;count<=n; i++)
	{
		for (x = 2; x <= (int)sqrt(i); x++)
		{
			if (i % x == 0)
			{
				break;
			}
		}
		if (x > (int)sqrt(i))
		{
			a[count++] = i;
		}
	}
	x = 0;
	for (i = m-1; i < n; i++)
	{
		printf("%d", a[i]);
		x++;
		if (x != 10&&i!=n-1)
		{
			printf(" ");
		}
		else if (x == 10)
		{
			x = 0;
			printf("\n");
		}
		
	}


	free(a);
	a = NULL;
	return 0;
}