일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- メソッド
- DART
- 반다이몰
- vscode
- ruby
- jsp
- Web
- 디지몬
- html
- springboot
- Python
- rails
- 건담베이스
- javascript
- 一日一つメソッド
- 日本語
- 인프런
- 건담
- 일본어
- 자바
- 연습문제
- java
- Spring
- nico
- 비즈니스일본어
- C로 시작하는 컴퓨터 프로그래밍4판
- Flutter
- CSS
- rails7
- 単語
- Today
- Total
AR삽질러
C로 시작하는 컴퓨터 프로그래밍4판 - 8장 함수 본문
혼자해보기8-1
다음 내용에 맞는 함수를 각각 작성하시오.
1) 정수 2개를 입력받아 나눗셈을 하는 Division()함수
#include<stdio.h>
#pragma warning(disable:4996)
double Division(double a, double b) {
double result;
result = a / b;
printf("나눗셈 결과 : %1.f", result);
return result;
}
int main()
{
double a, b;
printf("a값 입력 : ");
scanf("%lf", &a);
printf("\nb값 입력 : ");
scanf("%lf", &b);
Division(a, b);
return 0;
}
2) 정수 1개를 입력받아 그 절댓값을 반환하는 Absolute()함수
#include<stdio.h>
#pragma warning(disable:4996)
int Absolute(int num) {
if (num < 0) {
return -num;
}
else {
return num;
}
}
int main(void) {
int num;
printf("숫자를 입력해주세요 : ");
scanf("%d", &num);
printf("%d의 절대값은 : %d입니다.", num, Absolute(num));
return 0;
}
혼자해보기8-2
다음 소스코드에서 틀린 부분을 수정하시오.
#include<stdio.h>
int main(void) {
double x = 10.5, y = 20.5;
double result;
result = SumTwo(x, y);
return 0;
}
int SumTwo(int a, int b)
{
return a + b;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
double SumTwo(double a, double b) {
return a + b;
}
int main(void) {
double x = 10.5, y = 20.5;
double result;
result = SumTwo(x, y);
printf("결과 : %f", result);
return 0;
}
혼자해보기8-3
다음 배열에서 10보다 큰 값만 더하는 SelectSum()함수를 만드시오.
int a[] = {20, 10, 5, 8, 28};
#include<stdio.h>
#pragma warning(disable:4996)
int SelectSum(int a[]);
int main(void) {
int a[] = { 20, 10, 5, 8, 28 };
int Sum;
Sum = SelectSum(a);
printf("배열에서 10보다 큰 값을 더한 합 : %d", Sum);
}
int SelectSum(int a[]) {
int result = 0;
for (int i = 0; i < 5; i++) {
if (a[i] > 10) {
result += a[i];
}
}
return result;
}
01 다음 프로그램의 문법적인 오류나 논리적인 오류를 수정하시오.
1)
#include<stdio.h>
#pragma warning(disable:4996)
int SumTwo(int, int, int);
int main() {
int x = 10, y = 20;
int result;
result = SumTwo(x, y);
printf("합은 %d\n", result);
return 0;
}
int SumTwo(int a, int b) {
return a + b;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
int SumTwo(int a, int b);
int main() {
int x = 10, y = 20;
int result;
result = SumTwo(x, y);
printf("합은 : %d\n", result);
return 0;
}
int SumTwo(int a, int b) {
return a + b;
}
2)
#include<stdio.h>
#pragma warning(disable:4996)
int Big(int, int);
int main() {
int x = 10, y = 20;
printf("두 수 중에 큰 값은 %d\n", Big(a, b));
return 0;
}
int Big(int a, int b) {
a > b ? return a; : return b;
수정
#include<stdio.h>
#pragma warning(disable:4996)
int Big(int a, int b);
int main() {
int x = 10, y = 20;
printf("두 수 중에 큰 값은 %d\n", Big(x, y));
return 0;
}
int Big(int a, int b) {
a > b ? a : b;
}
3)
#include<stdio.h>
#pragma warning(disable:4996)
double Average(int, int);
int main() {
int x = 10, y = 20;
int result;
result = Average(x, y);
printf("두 수의 평균은 %d\n", result);
return 0;
}
double Average(int a, int b) {
double result;
result = (double)a * b / 2.0;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
double Average(int a, int b);
int main() {
int x = 10, y = 20;
double result = Average(x, y);
printf("두 수의 평균은 %.1f\n", result);
return 0;
}
double Average(int a, int b) {
double result = (double)(a + b) / 2.0;
return result;
}
4)
#include<stdio.h>
#pragma warning(disable:4996)
void cube(int);
int main() {
int x = 10;
printf("x의 세제곱은 %d\n", cube(x));
return 0;
}
void Cube(int a) {
return a * a * a;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
void Cube(int a);
int main() {
int x = 10;
Cube(x);
return 0;
}
void Cube(int a) {
int result = a * a * a;
printf("세제곱의 값 %d", result);
}
02 영어 알파벳 한 문자를 입력받아 소문자로 출력하는 lower_case()함수를 만드시오(예제8-5참조).
#include<stdio.h>
#pragma warning(disable:4996)
char lower_case(char ch);
int main(void) {
char ch;
printf("영어알파벳소문자입력 : ");
scanf("%c", &ch);
printf("%c", lower_case(ch));
return 0;
}
char lower_case(char ch) {
if (ch >= 'A' && ch <= 'Z') {
return ch + ('a' - 'A'); // 대문자를 소문자로 변환
}
else {
return ch;
}
}
03 정수형(int)변수 3개를 입력받아 그중에 가장 작은 값을 출력하는 MinThree()함수를 만드시오.
#include<stdio.h>
#pragma warning(disable:4996)
int MinThree(int a, int b, int c);
int main(void) {
int a, b, c;
printf("숫자3개입력 : ");
scanf("%d %d %d", &a, &b, &c);
printf("가장 작은 값 : %d", MinThree(a, b, c));
return 0;
}
int MinThree(int a, int b, int c) {
int min = a;
if (b < min) {
min = b;
}
if (c < min) {
min = c;
}
return min;
}
04 양의 정수를 입력받아 이 정수가 소수인지 확인하는 CheckPrime()함수를 만드시오.
#include<stdio.h>
#pragma warning(disable:4996)
int CheckPrime(int num);
int main(void) {
int num;
printf("양의 정수 입력 : ");
scanf("%d", &num);
if (CheckPrime(num) == 1) {
printf("입력하신 %d양의 정수는 소수입니다.", num);
}
else {
printf("입력하신 %d양의 정수는 소수가 아닙니다.", num);
}
return 0;
}
int CheckPrime(int num) {
if (num <= 1) {
return 0; // 1보다 작거나 같으면 소수가 아니다.
}
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
06 비밀번호를 확인하는 CheckPw()함수를 만드시오. 이 함수는 문자열을 입력받고, 프로그램에 이미 저장되어 있는 비밀번호와 입력 문자열을 비교한다.
#include<stdio.h>
#pragma warning(disable:4996)
void CheckPw();
int main(void) {
CheckPw();
return 0;
}
void CheckPw() {
char pw[] = "12345gg";
int input[20];
printf("비밀번호를 입력하세요 : ");
scanf("%s", input);
if(strcmp(pw, input) == 0){ // strcmp함수로 문자열을 비교하여 일치하면 로그인
printf("로그인 되었습니다.");
}
else {
printf("비밀번호가 틀렸습니다ㅡ.ㅡ;;");
}
}
07 정수형 배열을 입력으로 받아 최대값을 출력하는 Max()함수를 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
void Max(int ary[]);
int main(void) {
int ary[5];
printf("정수5개를 입력해주세요 : ");
for (int i = 0; i < 5; i++) {
scanf("%d", &ary[i]);
}
Max(ary);
return 0;
}
void Max(int ary[]){
int max = ary[0];
for (int i = 1; i < 5; i++) {
if (ary[i] > max) {
max = ary[i];
}
}
printf("입력하신 정수중 최대값은 %d입니다.", max);
}
08 정수형 배열을 입력으로 받아 최소값을 출력하는 Main()함수를 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
void Min(int ary[]);
int main(void) {
int ary[5];
printf("정수5개를 입력해주세요 : ");
for (int i = 0; i < 5; i++) {
scanf("%d", &ary[i]);
}
Min(ary);
return 0;
}
void Min(int ary[]){
int min = ary[0];
for (int i = 1; i < 5; i++) {
if (ary[i] < min) {
min = ary[i];
}
}
printf("입력하신 정수중 최소값은 %d입니다.", min);
}
09 정수형 배열을 입력으로 받아 평균(실수형)을 출력하는 Average()함수를 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
void Average(int ary[]);
int main(void) {
int ary[5];
printf("정수5개를 입력해주세요 : ");
for (int i = 0; i < 5; i++) {
scanf("%d", &ary[i]);
}
Average(ary);
return 0;
}
void Average(int ary[]){
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += ary[i];
}
double result = (double)sum / 5;
printf("입력하신 정수의 평균은 %.1f입니다.", result);
}
11 정수형 배열 b[] = {20, 34, 12, 24, 54, 91, 9, 40, 81, 10}의 최대값, 최소값, 평균, 표준편차를 앞의 연습문제에서 만들었던 함수들을 사용하여 계산하고 화면에 출력하는 프로그램을 작성하시오.
#include<stdio.h>
#include<math.h> // sqrt 함수
#pragma warning(disable:4996)
void Max(int b[]);
void Min(int b[]);
void Avg(int b[]);
void Stdev(int b[], int n);
int main(void) {
int b[] = { 20, 34, 12, 24, 54, 91, 9, 40, 81, 10 };
Max(b);
Min(b);
Avg(b);
Stdev(b, n);
return 0;
}
void Max(int b[]) {
int max = b[0];
for (int i = 1; i < 10; i++) {
if (b[i] > max) {
max = b[i];
}
}
printf("정수형배열중 최대값은 %d입니다.\n", max);
}
void Min(int b[]) {
int min = b[0];
for (int i = 1; i < 10; i++) {
if (b[i] < min) {
min = b[i];
}
}
printf("정수형배열중 최소값은 %d입니다.\n", min);
}
void Avg(int b[]) {
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += b[i];
}
double result = (double)sum / 10;
printf("정수형배열중 평균은 %.1f입니다.\n", result);
}
void Stdev(int b[], int n) {
double sum = 0.0;
double mean = 0.0;
double stdev = 0.0;
// 평균 계산
for (int i = 0; i < n; i++) {
mean += b[i];
}
mean = mean / n;
// 분산 계산
for (int i = 0; i < n; i++) {
sum += pow(b[i] - mean, 2);
}
stdev = sqrt(sum / n);
printf("정수형배열중 표준편차는 %.1f입니다.\n", stdev);
}
'C' 카테고리의 다른 글
C로 시작하는 컴퓨터 프로그래밍4판 - 10장 Pointer (0) | 2023.04.25 |
---|---|
C로 시작하는 컴퓨터 프로그래밍4판 - 9장 변수영역 (0) | 2023.04.10 |
C로 시작하는 컴퓨터 프로그래밍4판 - 7장 배열 (0) | 2023.03.31 |
C로 시작하는 컴퓨터 프로그래밍4판 - 6장 반복문 (0) | 2023.03.27 |
C로 시작하는 컴퓨터 프로그래밍4판 - 5장 선택문 (0) | 2023.03.21 |