2017-02-05 4 views
0

Программа должна запускать и распечатывать площадь поверхности, количество лун и расстояние от солнца. Я не могу понять, как заставить определенные числа работать в программе. Любые советы помогут. СпасибоНевозможно получить заданные числа

#include <stdio.h> 
#include <stdlib.h> 
#define Mercury_diameter 4879 
#define Venus_diameter 12104 
#define Earth_diameter 12756 
#define Mars_diameter 6792 
#define Mercury_distance 57.9 
#define Venus_distance 108.2 
#define Earth_distance 149.6 
#define Mars_distance 227.9 
#define Mercury_moons 0 
#define Venus_moons 0 
#define Earth_moons 1 
#define Mars_moons 2 
#define PI 3.1415926535 

int main() 
{ 

char planet; 
printf("Please enter the first letter of the planet whose information you'd  like to see.\n"); 
printf("Use lower-case letters. Use 'a' for Mars Please! \n"); 
scanf("%c", &planet); 

float m_rad = Mercury_diameter/2.; 
float v_rad = Venus_diameter/2.; 
float e_rad = Earth_diameter/2.; 
float a_rad = Mars_diameter/2.; 


float m_surf = 4 * PI * m_rad * m_rad; 
float v_surf = 4 * PI * v_rad * v_rad; 
float e_surf = 4 * PI * e_rad * e_rad; 
float a_surf = 4 * PI * a_rad * a_rad; 


switch (planet) 
{ 
    case 'm': 
m_surf = 4. * PI * m_rad * m_rad; 
printf("The surface area of Mercury = %f \n", m_surf); 
printf("Mercury has Mercury_moons moons. \n"); 
printf("The distance between Mercury and the sun is Mercury_distance \n"); 
break; 

    case 'v': 
v_surf = 4. * PI * v_rad * v_rad; 
printf("The surface area of Venus = %f \n", v_surf); 
printf("Venus has Venus_moons moons. \n"); 
printf("The distance between Venus and the Sun is Venus_distance \n"); 
break; 

    case'e': 
e_surf = 4. * PI * e_rad * e_rad; 
printf("The surface area of Earth = %f \n", e_surf); 
printf("Earth has Earth_moons moons. \n"); 
printf("The distance between Earth and the Sun is Earth_distance \n"); 
break; 

    case 'a': 
a_surf = 4. * PI * a_rad * a_rad; 
printf("The surface area of Mars = %f \n", a_surf); 
printf("Mars has Mars_moons moons. \n"); 
printf("The distance between Mars and the Sun is Mars_distance \n"); 
break; 

    default: 
printf("You have entered an invalid entry!"); 

} 

return 0; 
} 

ответ

3

Проблема в том, что #defines не подставляются под строки. Попробуйте сделать что-то подобное для лун:

printf("Mars has %d moons. \n", Mars_moons); 
1

Макросы не расширены внутри строк. Вы можете сделать это - написать

printf("The distance between Mercury and the sun is %f\n",Mercury_distance); 

Также смотрите здесь Вопрос How to use macros in printf function.

+0

Ваша последняя ссылка - технический вопрос, который не имеет ничего общего с этим вопросом. –

+0

@ M.M Я удалил его. Теперь мы можем удалить комментарии здесь. –

Смежные вопросы