📄 sam.c
字号:
#include <stdio.h>
#define N 20
// N表示城市的最大数目
int num; // 实际的城市数目
typedef struct
{ // 定义城市的结构
int id; // 城市的唯一标志号
char name[30]; // 城市名称
float population; // 城市人口,单位:万人
float area; // 城市面积,单位:平方公里
} city_info;
city_info city[N]; // 城市的基本信息
float cost[N][N]; // 城市间的代价矩阵
float link[N][N]; // 城市间的连通邻接矩阵
float length[N][N]; // 城市间的里程信息
void readdata();
void showdata();
void sortbypopulation();
main()
{
readdata();
showdata();
sortbypopulation();
}
void readdata()
{
int i = 0, j;
FILE *fp;
if( ( fp = fopen("base.txt", "rt" ) ) != NULL )
{ // 读出城市的基本信息
while( !feof( fp ) )
{
fscanf( fp, "%d", &city[i].id );
fscanf( fp, "%s", city[i].name );
fscanf( fp, "%f", &city[i].population );
fscanf( fp, "%f", &city[i].area );
i++;
if( i == N ) break;
}
num = i;
fclose( fp );
}
if( ( fp = fopen("link.txt", "rt" ) ) != NULL )
{ // 读出城市间的距离和代价
while( !feof( fp ) )
{
fscanf( fp, "%d%d", &i, &j );
fscanf( fp, "%f", &link[i][j] );
link[j][i] = link[i][j];
fscanf( fp, "%f", &cost[i][j] );
cost[j][i] = cost[i][j];
}
fclose( fp );
}
}
void showdata()
{
int i, j;
for( i = 0; i < num; i++ )
{
printf( "%3d %10s %7.2f %7.2f\n", city[i].id,
city[i].name, city[i].population, city[i].area );
}
for( i = 0; i < num; i++ )
{
printf( "%5.1f", link[i][0] );
for( j = 1; j < num; j++ )
printf( " %5.1f", link[i][j] );
putchar('\n');
}
for( i = 0; i < num; i++ )
{
printf( "%5.1f", cost[i][0] );
for( j = 1; j < num; j++ )
printf( " %5.1f", cost[i][j] );
putchar('\n');
}
}
void sortbypopulation()
{
int i,j,loc;
city_info t;
for( i = 0; i < num; i++ )
{ // select sort
for( j = i+1; j < num; j++ )
if( city[j].population < city[loc].population ) loc = j;
if( loc != i )
{ // exchange data
t = city[i]; city[i] = city[loc]; city[loc] = t;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -