c언어 질문, 출력이 되지 않습니다
소스 코드
#define _CRT_SECURE_NO_WARNINGS
#include
void print_menu(void);
//메뉴를 화면에 출력하는 함수.
int select_menu(void);
//키보드로부터 메뉴의 번호를 입력받아서 반환하는 함수.
int calc_total(int score[5]);
//정수가 저장된 배열을 매개변수로 전달받고 총점을 구해서 반환하는 함수.
double calc_average(int total, int cnt);
//총점(total)과 갯수(cnt)를 매개변수로 전달받고 평균을 구해서 반환하는 함수.
double print_star(double avg, double s);
//평균(avg)을 매개변수로 전달받고 별표(*)의 갯수를 계산해서 별표를 화면에 출력하는 함수.
int a;
//메뉴 번호를 입력받는 변수
int score[5];
// 5개의 숫자를 입력 받는 변수
int total = 0;
//총점을 저장하는 변수
double avg;
//평균을 저장하는 변수
int cnt = 5;
//갯수를 저장하는 변수
double s = 0;
//별표의 갯수를 저장하는 변수
int j = 0;
//별표가 출력된 갯수를 나타내는 변수
int main(void)
{
print_menu();
return 0;
}
void print_menu(void)
{
printf("----- 메뉴 -----\n1. 입력\n2. 총점\n3. 평균\n4. 그래프\n5. 종료\n\n");
printf("메뉴를 입력하시오 : ");
scanf("%d", &a);
printf("\n");
select_menu();
}
int select_menu(void)
{
if (a == 1)
{
printf("5개의 숫자를 입력하시오 : ");
for (int i = 0; i < 5; i++)
scanf("%d", &score[i]);
printf("\n");
}
else if (a == 2)
{
total = calc_total(score);
printf("총합 : %d\n", total);
printf("\n");
}
else if (a == 3)
{
avg = calc_average(total, cnt);
printf("평균 : %.1lf\n", avg);
printf("\n");
}
else if (a == 4)
{
double print_star(double avg, double s);
s = print_star(avg, s);
printf("%.0lf:", &s);
int j=0;
for (j = 0; j < s; j++)
printf("*");
printf("\n");
}
else if (a == 5)
return a;
print_menu();
return a;
}
int calc_total(int score[5])
{
int total = 0;
for (int i = 0; i < 5; i++)
total = total + score[i];
return total;
}
double calc_average(int total, int cnt)
{
double avg = (double) total / cnt;
return avg;
}
double print_star(double avg, double s)
{
double calc_average(int total, int cnt);
if (0 <= avg < 10)
s = 1;
else if (10 <= avg < 20)
s = 2;
else if (20 <= avg < 30)
s = 3;
else if (30 <= avg < 40)
s = 4;
else if (40 <= avg < 50)
s = 5;
else if (50 <= avg < 60)
s = 6;
else if (60 <= avg < 70)
s = 7;
else if (70 <= avg < 80)
s = 8;
else if (80 <= avg < 90)
s = 9;
else if (90 <= avg < 100)
s = 10;
else if (avg == 100)
s = 11;
return avg, s;
}
출력 결과
----- 메뉴 -----
1. 입력
2. 총점
3. 평균
4. 그래프
5. 종료
메뉴를 입력하시오 : 1
5개의 숫자를 입력하시오 : 90 80 70 100 77
----- 메뉴 -----
1. 입력
2. 총점
3. 평균
4. 그래프
5. 종료
----- 메뉴 -----
1. 입력
2. 총점
3. 평균
4. 그래프
5. 종료
메뉴를 입력하시오 : 1
5개의 숫자를 입력하시오 : 90 80 70 100 77
----- 메뉴 -----
1. 입력
2. 총점
3. 평균
4. 그래프
5. 종료
메뉴를 입력하시오 : 4
0:*
----- 메뉴 -----
1. 입력
2. 총점
3. 평균
4. 그래프
5. 종료
메뉴를 입력하시오 : 4
0:*
----- 메뉴 -----
1. 입력
2. 총점
3. 평균
4. 그래프
5. 종료
메뉴를 입력하시오 :
질문 사항
"메뉴를 입력하시오 : 4" 다음에서 "0:*"가 아닌 "9:*********"으로 출력하고 싶습니다.
Total을 계산하지 않은 것 같습니다.
Total을 계산하지 않은 것 같습니다.
2번을 실행시키고 4번을 선택하시거나,
4번에 2번 내용을 포함 시키는 것이 필요할 것 같습니다.
수정하였지만 결과가 같습니다, 제가 잘못한 부분 지적해주시면 정말 감사하겠습니다
else if (a == 4)
{
total = calc_total(score);
printf("총합 : %d\n", total);
printf("\n");
double print_star(double avg, double s);
s = print_star(avg, s);
printf("%.0lf:", &s);
int j = 0;
for (j = 0; j < s; j++)
printf("*");
printf("\n");
}
메뉴 선택 후 프로그램을 다시 수행 시키시는 건가요?
메뉴 선택 후 프로그램을 다시 수행 시키시는 건가요?
그럼 입력받은 점수를 잃게 될텐데요..
int main(void)
{
print_menu();
return 0;
}
if (0 <= avg < 10) 식으로 돼있는
if (0 <= avg < 10)
식으로 돼있는 조건문들도 모두if (0 <= avg && avg < 10)
식으로 두 개의 비교조건으로 쪼개셔야 합니다.그리고, select_menu() 끝에서 또 print_menu()를 호출하는 꼬리물기를 하지 말고, main에서 loop를 만들어 select_menu()를 반복실행하도록 고치시는게 좋겠네요.
정말 감사합니다
정말 아쉽게도 수정하였지만 출력은 그대로네요.
메뉴를 1, 2, 3, 4 순서로 차례로 실행해보시길
메뉴를 1, 2, 3, 4 순서로 차례로 실행해보시길.
지금의 코드에서는,
1은 입력만 받고 있고
2는 총합만 계산하며
3은 평균만 계산하고
4는 (총합계산후) 출력만 하고 있거든요.
댓글 달기