⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search_number.cpp

📁 找一个最小的自然数
💻 CPP
字号:
#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>

struct num //定义结构体变量,q是三数立方和,a、b、c是三个自然数
{
   long q;
   int a;
   int b;
   int c;
};

void Initialize(struct num all[],int n)//对all[]数组赋值,n是三个自然数上限
{
	int i,j,k,m=0;//i,j,k是循环变量,m是用来依次给数组元素赋值

	for(i=0;i<n;i++)
	for(j=i;j<n;j++)
	for(k=j;k<n;k++)
	{
		all[m].a=i+1;
		all[m].b=j+1;
		all[m].c=k+1;
        all[m].q=all[m].a*all[m].a*all[m].a+all[m].b*all[m].b*all[m].b+all[m].c*all[m].c*all[m].c;
		m++;
	}
}

void Sort(struct num a[],int n1)//对数组a用冒泡法进行排序,n1是数组长度
{
	int i,j;
	struct num temp;

	for(i=0;i<n1-1;i++)
	for(j=0;j<n1-1-i;j++)
	{
		if(a[j].q>a[j+1].q)
		{
			temp = a[j];
			a[j] = a[j+1];
			a[j+1] = temp;
		}
	}
}

void Find_Report(struct num all[],int n)//找出满足条件的数并输出
{
	int i;
	FILE *fp;
	fp=fopen("result.txt","w");

	printf("   x \t  a\t  b\t  c\t\t  d\t  e\t  f\n\n");

	for(i=0;i<n-1;i++)
	{
		if(all[i].q==all[i+1].q)
		{
			//输出到屏幕
			printf("%5ld\t%3d\t%3d\t%3d\t\t%3d\t%3d\t%3d\n",all[i].q,all[i].a,all[i].b,all[i].c,all[i+1].a,all[i+1].b,all[i+1].c);
			//输出到文件
			fprintf(fp,"%5ld\t%3d\t%3d\t%3d\t\t%3d\t%3d\t%3d\n",all[i].q,all[i].a,all[i].b,all[i].c,all[i+1].a,all[i+1].b,all[i+1].c);
		}
	}
}

void main()
{
	struct num *all; //all[]储存所有立方和及三个因子
    int n,n1;        //n用来读入自然数上限,n1用来记录all数组的长度

	printf("请输入因子自然数的上限:");
	scanf("%d",&n);
	
	n1=n*(n+1)*(n+2)/6;//经过分析,上限为n时数组元素为n*(n+1)*(n+2)/6个

	all=(struct num *)malloc(n1*sizeof(struct num));//为数组开辟空间

	Initialize(all,n);  //对all[]数组赋值,n是三个自然数上限
	Sort(all,n1);	    //对数组a用冒泡法进行排序,n1是数组长度
	Find_Report(all,n1);//找出满足条件的数并输出
	free(all);          //释放内存空间
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -