请求大佬帮忙 ,帮忙,写一个纯c的程序。

安柒柒 2019-06-25 11:23:35
已知一个数列的前三项分别是0,0,1,以后的各项都是其相邻的前三项之和。编写一个C语言程序实现以下功能:1、任意输入该数列的总项数N(N>=21,N必须为7的倍数,当N不是7的倍数的时候,会输出错误信息:“数列的总项数不是7的倍数”,并要求重新输入);2、按照数列的规律依次自动生成该N个数;3、计算并输出该数列前n项的平方根之和;4、并按行输出该数列的所有项的值,每行输出7个数,每个数之间用“------”隔开。 1
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
安柒柒 2019-06-27
  • 打赏
  • 举报
回复
引用 1 楼 jsx_SEVEN的回复:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

//1、输入N
int InputN()
{
	int N;
	printf("输入N:");
	scanf("%d", &N);
	while (N % 7 != 0)
	{
		printf("数列的总项数不是7的倍数,请重新输入:");
		scanf_s("%d", &N);
	}
	return N;
}

//2、数列通式
//这类题目也可以用递归,但是这道题会溢栈
//所以用了迭代
int Series(int res_2, int res_1, int res, int count, int n)   //第count-2项、第count-1项、第count项、迭代变量count、n
{
	if (n < 1)
		return 0;
	else if (n == 1 || n == 2)
		return 0;
	else if (n == 3)
		return 1;
	else if (count < n)
		return Series(res_1, res, res_2 + res_1 + res, count + 1, n);  //迭代计算下一个(count+1)、直到第n个
	else 
		return res;
}
int getSeriesN(int n)
{
	return Series(0, 0, 1, 3, n);
}

//3、计算并输出数列前n项的平方根之和
//有疑问:一个数的平方根应该是两个,且互为相反数,求和没意义
void Sum(int n)
{
	float sum = 0.0;
	int i = 1;
	while (i <= n)
	{
		sum += sqrt(getSeriesN(i));
		i++;
	}
	printf("%f\n", sum);
}

//4、按行输出
void Output(int n)
{
	int i;
	int cnt = 0;
	for ( i = 1; i <= n; i++)
	{
		printf("%d", getSeriesN(i));

		cnt++;
		if (cnt % 7 == 0)           //每打印7个换行
			printf("\n");
		else
			printf("------");
	}
}

int main()
{
	int n;
	n = InputN();
	Sum(n);
	Output(n);
	return 0;
}
谢谢,谢谢大佬🌚🌚🌚🌚🌚
安柒柒 2019-06-27
  • 打赏
  • 举报
回复
感谢大佬,非常感谢。。。。。。
周末ZhouMo 2019-06-26
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

//1、输入N
int InputN()
{
	int N;
	printf("输入N:");
	scanf("%d", &N);
	while (N % 7 != 0)
	{
		printf("数列的总项数不是7的倍数,请重新输入:");
		scanf_s("%d", &N);
	}
	return N;
}

//2、数列通式
//这类题目也可以用递归,但是这道题会溢栈
//所以用了迭代
int Series(int res_2, int res_1, int res, int count, int n)   //第count-2项、第count-1项、第count项、迭代变量count、n
{
	if (n < 1)
		return 0;
	else if (n == 1 || n == 2)
		return 0;
	else if (n == 3)
		return 1;
	else if (count < n)
		return Series(res_1, res, res_2 + res_1 + res, count + 1, n);  //迭代计算下一个(count+1)、直到第n个
	else 
		return res;
}
int getSeriesN(int n)
{
	return Series(0, 0, 1, 3, n);
}

//3、计算并输出数列前n项的平方根之和
//有疑问:一个数的平方根应该是两个,且互为相反数,求和没意义
void Sum(int n)
{
	float sum = 0.0;
	int i = 1;
	while (i <= n)
	{
		sum += sqrt(getSeriesN(i));
		i++;
	}
	printf("%f\n", sum);
}

//4、按行输出
void Output(int n)
{
	int i;
	int cnt = 0;
	for ( i = 1; i <= n; i++)
	{
		printf("%d", getSeriesN(i));

		cnt++;
		if (cnt % 7 == 0)           //每打印7个换行
			printf("\n");
		else
			printf("------");
	}
}

int main()
{
	int n;
	n = InputN();
	Sum(n);
	Output(n);
	return 0;
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧