1.参考《程序员面试宝典》
#include <iostream>
#include <stdio.h>
using namespace std;
int a[10][10];
void fun(int n)
{
int m=1,j,i;
for(i=0;i<n/2;i++)
{
for(j=0;j<n-i;j++)
{
if(a[i][j]==0)
a[i][j]=m++;
}
for(j=i+1;j<n-i;j++)
{
if(a[j][n-1-i]==0)
a[j][n-1-i]=m++;
}
for(j=n-1-i;j>i;j--)
{
if(a[n-1-i][j]==0)
a[n-1-i][j]=m++;
}
for(j=n-i-1;j>i;j--)
{
if(a[j][i]==0)
a[j][i]=m++;
}
}
if(n%2==1)
a[n/2][n/2]=m;
}
int main()
{
int n,i,j;
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
fun(n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
cout<<endl;
}
}
2.参考网上的代码
#include <iostream>
#include <vector>
#include <cstdio>
#include <stdlib.h>
#include <algorithm>
using namespace std;
bool comp(int a,int b)
{
return a>b;
}
void read_file(vector<int> &data);
void sort(vector<int> &data);
void write_file(const vector<int> &data);
int main()
{
vector<int> data;
read_file(data);
sort(data);
write_file(data);
return 0;
}
void read_file(vector<int> &data)
{
FILE *fp = fopen("E:\f.txt", "r");
if(NULL == fp)
{
cout<<"file does not exist"<<endl;
exit(1);
}
while(!feof(fp))
{
char word[100];
fgets(word, 20, fp);
int i = atoi(word); //将字符串转换成整数型
data.push_back(i);
}
fclose(fp);
}
void sort(vector<int> &data)
{
sort(data.begin(), data.end(),comp);
}
void write_file(const vector<int> &data)
{
char buff[1024];
FILE *fp = fopen("E:\f.txt", "w");//文件的路径,写入的方式
vector<int>::const_iterator it = data.begin();
while(it != data.end())
{
sprintf(buff, "%d\n", *it);
fputs(buff, fp);
++it;
}
fclose(fp);
}