?? 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 + -