📄 search_number.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 + -