본문 바로가기
흔한 학교 생활/든든한 C 프로그래밍

[C언어] 든든한 C 프로그래밍 3판 11장 워크북 답 풀이

by 흔한 학생 2023. 7. 12.
반응형

1. level 1-1

 

for (i = 0; i < 3; i++)
	std1.sum += std1.score[i];
std1.avg = std1.sum / 3.0;
printf("%s, %d, %d, %d, %d, %.2f", std1.name, std1.score[0], std1.score[1], std1.score[2], std1.sum, std1.avg);
return 0;

 
결과

홍길동, 68, 89, 80, 237, 79.00

 

2. level 1-2

struct STUDENT* ptr;
int i;
ptr = &std1;

for (i = 0; i < 3; i++)
	ptr->sum += ptr->score[i];
ptr->avg = ptr->sum / 3.0;
printf("%s, %d, %d, %d, %d, %.2f", ptr->name, ptr->score[0], ptr->score[1], ptr->score[2], ptr->sum, ptr->avg);
return 0;

3. level 2-1

두 점 사이의 거리를 구하는 프로그램
거리 구하는 과정 중 sqrt 과 double 사이 ( 하나가 빠져있음

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#pragma warning(disable:4996)

typedef struct point {
	int x;
	int y;
}POINT;
int main()
{
	double distance;
	POINT start;
	POINT end;

	printf("시작점의 좌표 x1 y1 ");
	scanf("%d%d", &start.x, &start.y);

	printf("끝점의 좌표 x1 y1 ");
	scanf("%d%d", &end.x, &end.y);

	distance = sqrt((double)((end.x - start.x) * (end.x - start.x) + (end.y - start.y) * (end.y - start.y)));

	printf("두 점 사이의 거리 : %lf \n", distance);

	return 0;
}

 결과

시작점의 좌표 x1 y1 3 5
끝점의 좌표 x1 y1 6 9
두 점 사이의 거리 : 5.000000

 

4. level 2-2

고객의 정보를 저장하는 프로그램
 

#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)

struct A_MEMBER {
	char name[20];
	int age;
	char gender;
	char grade;
	char mobTel[15];
	char custAddr[100];
};
int main()
{
	struct A_MEMBER cust;
	printf("성명? ");
	gets(cust.name);
	printf("나이? ");
	scanf("%d%*c", &cust.age);

	do {
		printf("성별? (남:m, 여:w) ");
		scanf("%c%*c", &cust.gender);
		cust.gender = toupper(cust.gender);
	} while (cust.gender != 'M' && cust.gender != 'W');
	do {
		printf("회원등급? (A,B,C) ");
		scanf("%c%*c", &cust.grade);
		cust.grade= toupper(cust.grade);
	} while (cust.grade != 'A' && cust.grade != 'B' && cust.grade != 'C');

	printf("휴대폰 번호? ");
	gets(cust.mobTel);

	printf("근무지역 주소? ");
	gets(cust.custAddr);

	printf("%s, %d, %c, %4c, %s, %s \n", cust.name, cust.age, cust.gender, cust.grade, cust.mobTel, cust.custAddr);

	return 0;
}

 
결과

성명? 홍길동
나이? 27
성별? (남:m, 여:w) t
성별? (남:m, 여:w) y
성별? (남:m, 여:w) m
회원등급? (A,B,C) p
회원등급? (A,B,C) x
회원등급? (A,B,C) b
휴대폰 번호? 010-001-0001
근무지역 주소? 서울시 강남구 역삼동
홍길동, 27, M,    B, 010-001-0001, 서울시 강남구 역삼동

name[20] 처럼 배열 형태라도 사용할때는 cust.name 처럼 쓰는구나
 
5. level 3-1
6. level 3-2
7. level 3-3
 

반응형