#include <iostream>
#include "cmath"
using namespace std;
int f(int n, int a[], int idx)
{
if(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]+a[3]*a[3]==n) return 1; // 填空1——这行代码用来判断四个数的平方和是否等于n
if(idx==4) return 0;
for(int i=(int)sqrt(n); i>=1; i--)
{
a[idx] = i;
if(f(n, a, idx+1)) return 1; // 填空2——这行代码运用递归给数组的四个元素赋值
}
return 0;
}
int main(int argc, char* argv[])
{
int number=1;
for(;;)
{
printf("输入整数(1~10亿):");
scanf("%d",&number);
if(number<1) break;
int a[] = {0,0,0,0};
int r = f(number, a, 0);
printf("%d: %d %d %d %d\n", r, a[0], a[1], a[2], a[3]);
}
return 0;
}
#include <iostream>
#include <fstream>
using namespace std;
struct student{//定义一个结构体
char name[20];
int num;
int age;
char sex;
};
void fun(){//写入函数
student stud[3] = {"li",1001,18,'f',"fu",1002,19,'m',"wu",1004,17,'f'};//定义结构体数组
ofstream outfile("stud.dat",ios::binary);//以二进制形式打开文件
if(!outfile){//若文件打开失败,程序终止
cerr<<"open error!"<<endl;
abort();
}
for(int i=0;i<3;i++){//向文件内写入
outfile.write((char*)&stud[i],sizeof(stud[i]));
}
outfile.close();//关闭文件
}
void fum(){//读出函数
student stud[3];
int i;
ifstream infile("stud.dat",ios::binary);//以二进制形式打开文件
if(!infile){//若打开文件失败,程序终止
cerr<<"open error!"<<endl;
abort();
}
for(i=0;i<3;i++){//以二进制的形式读入文件
infile.read((char*)&stud[i],sizeof(stud[i]));
}
infile.close();//关闭文件
for(i=0;i<3;i++){//将读出的信息打印出来
cout<<"NO."<<i+1<<endl;
cout<<"name"<<stud[i].name<<endl;
cout<<"num"<<stud[i].num<<endl;
cout<<"age"<<stud[i].age<<endl;
cout<<"sex"<<stud[i].sex<<endl;
}
}
int main(){//主函数
fun();
fum();
return 0;
}