C Program to Convert Kilometers to Miles
You can convert kilometers to miles in C by multiplying the kilometers value by
0.621371. For example, use miles = kilometers * 0.621371; to get the miles equivalent.Examples
Input1
Output0.621371 miles
Input5
Output3.106855 miles
Input0
Output0.000000 miles
How to Think About It
To convert kilometers to miles, understand that 1 kilometer equals approximately 0.621371 miles. So, multiply the input kilometers by 0.621371 to get miles. Then display the result.
Algorithm
1
Get input value in kilometers from the user2
Multiply the kilometers by 0.621371 to convert to miles3
Display the miles valueCode
c
#include <stdio.h> int main() { double kilometers, miles; printf("Enter distance in kilometers: "); scanf("%lf", &kilometers); miles = kilometers * 0.621371; printf("%.6f kilometers = %.6f miles\n", kilometers, miles); return 0; }
Output
Enter distance in kilometers: 5
5.000000 kilometers = 3.106855 miles
Dry Run
Let's trace the input 5 kilometers through the code
1
Input kilometers
User enters 5, so kilometers = 5
2
Calculate miles
miles = 5 * 0.621371 = 3.106855
3
Print result
Output: '5.000000 kilometers = 3.106855 miles'
| kilometers | miles |
|---|---|
| 5 | 3.106855 |
Why This Works
Step 1: Reading input
The program uses scanf to read the kilometers value from the user.
Step 2: Conversion calculation
It multiplies kilometers by 0.621371 because 1 kilometer equals approximately 0.621371 miles.
Step 3: Displaying output
The program prints the result using printf with 6 decimal places for clarity.
Alternative Approaches
Using a function for conversion
c
#include <stdio.h>
double km_to_miles(double km) {
return km * 0.621371;
}
int main() {
double km;
printf("Enter kilometers: ");
scanf("%lf", &km);
printf("%.6f kilometers = %.6f miles\n", km, km_to_miles(km));
return 0;
}This approach separates conversion logic into a function, improving readability and reusability.
Using float instead of double
c
#include <stdio.h> int main() { float km, miles; printf("Enter kilometers: "); scanf("%f", &km); miles = km * 0.621371f; printf("%.3f kilometers = %.3f miles\n", km, miles); return 0; }
Using float saves memory but reduces precision; suitable for less precise needs.
Complexity: O(1) time, O(1) space
Time Complexity
The program performs a fixed number of operations regardless of input size, so it runs in constant time O(1).
Space Complexity
It uses a fixed amount of memory for variables, so space complexity is O(1).
Which Approach is Fastest?
All approaches run in constant time; using a function adds clarity but no significant overhead.
| Approach | Time | Space | Best For |
|---|---|---|---|
| Direct calculation | O(1) | O(1) | Simple quick conversion |
| Function-based | O(1) | O(1) | Reusable and clear code |
| Float precision | O(1) | O(1) | Memory-limited environments |
Always use double for more precise distance conversions in C.
Forgetting to use the correct format specifier (%lf) for double in scanf causes input errors.