2.在美国通常是以英里每加仑来计算油耗,在欧洲是以升每百公里来计算。下面是某程序的一部分该程序让用户选择一个模式(公制的或美制的),然后收集数据来计算油耗。
// pe12-2b.c
#include<stdio.h>
#include"pe12-2a.h"
int main()
{
int mode;
printf("Enter 0 for metric mode,1 for US mode :");
scanf_s("%d", &mode);
while (mode >= 0)
{
set_mode(mode);
get_info();
show_info();
printf("Enter 0 for metric mode,1 for US mode ,");
printf("(-1 to quit):");
scanf_s("%d", &mode);
}
printf("Done");
getchar();
return 0;
}
下面是一些输出示例:
Enter 0 for metric mode, 1 for US mode: 0
Enter distance traveled in kilometers: 600
Enter fuel consumed in liters: 78.8
Fuel consumption is 13.13 liters per 100 km.
Enter fuel consumed in gallons: 12.7 Fuel consumption is 34.2 miles per gallon.
Enter distance traveled in miles: 388
Fuel consumption is 25.4 miles per gallon.
Enter 0 for metric mode, 1 for US mode (-1 to quit): -1 Done.
//pe12-2a.h
void set_mode(int mode);
void get_info();
void show_info();
//pe12-2a.cpp
#include<stdio.h>
float Long;
int m; //全局变量
void set_mode(int mode)
{
m = mode; //赋值
if (mode > 1 || mode< -1)
{
m = int(mode%2);
switch (m)
{
case 0:
printf("Invalid mode specified.Mode 0 used.\n");
break;
case 1:
printf("Invalid mode specified .mode 1(US) used.\n");
break;
default:
break;
}
return;
}
}
void get_info()
{
switch (m)
{
case 0:
printf("Enter distance traveled in kilometers:");
scanf_s("%f", &Long);
break;
case 1:
printf("Enter distance traveled in miles;");
scanf_s("%f", &Long);
break;
default:
break;
}
}
void show_info()
{
switch (m)
{
case 0:
printf("Enter fuel comsumed in liters:%5.1f\n",13.13*(Long/100));
printf("Fuel consumption is 13.13 liters per 100 km.\n");
break;
case 1:
printf("Enter fuel comsumed in gallons:%5.1f\n",Long/34.2);
printf("Fuel consumption is 34.2 miles per gallon.\n");
break;
default:
break;
}
}