11장 Exercise & Programming
11장 Exercise
1. a) *(list+6)
b) *(name+3)
c.) cost[8]
d) *message
2. char * p; , p = &code; , p = ‘a’;
3. 3번
4. 3번
5. 55(세로출력)
6. 1008
2008
7.011(세로출력)
8. a) void print_array(double b[]);
b) void print_array(double *b);
9. 값을 넘겼으므로 ip값은 변경되지 않음.
11장 programming
1.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
void get_frac(double f, int* pi, double* pd) {
*pi = (int)f;
*pd = f - *pi;
}
int main(void){
double d;
double f;
int i;
printf("실수를 입력하시오: ");
scanf("%lf", &d);
get_frac(d, &i, &f);
printf("\n");
printf("get_frac(3.14)이 호출되었습니다\n", d);
printf("정수부는 %d입니다.\n", i);
printf("소수부는 %.2lf입니다.\n", f);
return 0;
}
2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int arr[3];
for (int i = 0; i < 3; i++) {
printf("정수를 입력하시오: ", i + 1);
scanf("%d", &arr[i]);
}
printf("=======================\n");
printf("주소\t\t값\n");
printf("=======================\n");
for (int i = 0; i < 3; i++) {
printf("%08x\t%03d\n", &arr[i], arr[i]);
}
return 0;
}
3.
#include <stdio.h>
#include <stdlib.h>
void array_fill(int* A, int size);
void array_print(int* A, int size);
void array_fill(int* A, int size){
int i;
for (i = 0; i < size; i++) {
A[i] = rand();
}
}
void array_print(int* A, int size){
int i;
for (i = 0; i < size; i++) {
printf("%d ", A[i]);
}
printf("\n");
}
int main(){
int data[10];
array_fill(data, 10);
array_print(data, 10);
return 0;
}
4.
#include <stdio.h>
int my_strlen(char* p) {
int count = 0;
while (*p != '\0') {
count++;
p++;
}
return count;
}
int main() {
char arr[] = "HELLO";
int length = my_strlen(arr);
printf("저장된 문자열 = %s\n", arr);
printf("문자열의 길이 = %d\n", length);
return 0;
}
5.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char buffer[1000];
char* p;
int* pi;
float* pf;
p = buffer;
*p = 'a';
pi = p + 1;
*pi = 100;
pf = p + 5;
*pf = 3.14;
printf(" ", *p);
printf("%d ", *pi);
printf("%.2f \n", *pf);
return 0;
}
6.
#include<stdio.h>
#include<stdlib.h>
void array_print(int* A, int size) {
int i;
printf("A[] = { ");
for (i = 0; i < size; i++) {
printf("%d ", A[i]);
}
printf("}\n");
}
int main() {
int a[] = { 1,2,3,4,0,0,0,0,0,0 };
array_print(a, 10);
}
7.
#include <stdio.h>
void reverse_print(int* p, int size) {
if (size <= 0) {
return;
}
printf("A[] = ");
for (int i = size - 1; i >= 0; i--) {
printf("%d ", *(p + i));
}
putchar('\n');
}
int main() {
int A[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int size = sizeof(A) / sizeof(A[0]);
printf("A[] = ");
for (int i = 0; i < size; i++) {
printf("%d ", A[i]);
}
putchar('\n');
reverse_print(A, size);
return 0;
}
8.
#include <stdio.h>
double* get_max(double* A, int size) {
if (size <= 0) {
return NULL;
}
double* max_ptr = A;
for (int i = 1; i < size; i++) {
if (A[i] > *max_ptr) {
max_ptr = &A[i];
}
}
return max_ptr;
}
int main() {
double A[] = { 1.23, 3.14, 9.16, 100.90 };
int size = sizeof(A) / sizeof(A[0]);
double* max_ptr = get_max(A, size);
if (max_ptr != NULL) {
printf("A[] = ");
for (int i = 0; i < size; i++) {
printf("%.2f ", A[i]);
}
printf("\n");
printf("최대값은 %.2f입니다.\n", *max_ptr);
}
return 0;
}
9.
#include<stdio.h>
void convert(double* grades, double* scores, int size) {
for (int i = 0; i < size; i++) {
scores[i] = (100 / 4.3) * grades[i];
}
}
int main() {
double g[] = { 00.00, 00.50, 01.00, 01.50, 02.00, 02.50, 03.00, 03.50, 04.00, 04.30 };
double s[10];
convert(g, s, 10);
for (int i = 0; i < 10; i++) {
printf("%5.2lf ", g[i]);
}
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%5.2lf ", s[i]);
}
}
10.
#include<stdio.h>
void array_copy(int* A, int* B, int size) {
for (int i = 0; i < size; i++) {
B[i] = A[i];
}
}
int main() {
int a[] = { 1,2,3,0,0,0,0,0,0,0 };
int b[10];
array_copy(a, b, 10);
printf("A[] = ");
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
printf("B[] = ");
for (int i = 0; i < 10; i++) {
printf("%d ", b[i]);
}
printf("\n");
}
11.
#include <stdio.h>
#define N_DATA 10
void array_add(int a[], int b[], int c[], int size);
void array_print(char* name, int* a, int size){
int i;
printf("%s[] = ", name);
for (i = 0; i < size; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
void array_add(int a[], int b[], int c[], int size){
int i;
for (i = 0; i < size; i++) {
c[i] = a[i] + b[i];
}
}
int main(void){
int A[N_DATA] = { 1, 2, 3, 0, 0, 0, 0, 0, 0 };
int B[N_DATA] = { 4,5,6,0,0,0,0,0,0 };
int C[N_DATA] = { 0 };
array_print("A", A, N_DATA);
array_print("B", B, N_DATA);
array_add(A, B, C, N_DATA);
array_print("C", C, N_DATA);
return 0;
}
12.
#include<stdio.h>
int array_sum(int* A, int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += A[i];
}
return sum;
}
int main() {
int a[] = { 1,2,3,0,0,0,0,0,0,0 };
int res = array_sum(a, 10);
printf("A[] = ");
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n월급의 합=%d", res);
}
13.
#include <stdio.h>
int search(const int* A, int size, int search_value) {
int i;
for (i = 0; i < size; i++) {
if (A[i] == search_value) {
return i;
}
}
return -1;
}
int main() {
int A[] = { 150, 180, 220, 200, 190 }; // 월급 배열 A
int size = sizeof(A) / sizeof(A[0]); // 배열의 크기 계산
int search_value = 200; // 찾을 값
int result = search(A, size, search_value);
if (result != -1) {
printf("월급 %d만원인 사람의 인덱스 = %d\n", search_value, result);
}
return 0;
}
14.
#include<stdio.h>
void get_sum_diff(int x, int y, int* p_sum, int* p_diff) {
*p_sum = x + y;
*p_diff = x - y;
}
int main() {
int x = 100, y = 200;
get_sum_diff(x, y, &x, &y);
printf("원소들의 합 = %d\n원소들의 차 = %d", x, y);
}
15.
#include<stdio.h>
void convert(double* grades, double* scores, int size) {
for (int i = 0; i < size; i++) {
scores[i] = (100 / 4.3) * grades[i];
}
}
int main() {
double g[] = { 00.00, 00.50, 01.00, 01.50, 02.00, 02.50, 03.00, 03.50, 04.00, 04.30 };
double s[10];
convert(g, s, 10);
for (int i = 0; i < 10; i++) {
printf("%5.2lf ", g[i]);
}
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%5.2lf ", s[i]);
}
}
16.
#include<stdio.h>
void merge(int* A, int* B, int* C, int size) {
int j = 0;
int k = 0;
for (int i = 0; i < size; i++) {
if (j < size / 2 && k < size / 2) {
if (A[j] < B[k]) C[i] = A[j++];
else C[i] = B[k++];
}
else if (j == size / 2)
C[i] = B[k++];
else if (k == size / 2)
C[i] = A[j++];
}
}
int main() {
int i;
int a[] = { 2,5,7,8 };
int b[] = { 1,3,4,6 };
int c[10];
merge(a, b, c, 8);
printf("A[]=");
for (i = 0; i < 4; i++) {
printf("%d ", a[i]);
}
printf("\nB[]=");
for (i = 0; i < 4; i++) {
printf("%d ", b[i]);
}
printf("\nC[]=");
for (i = 0; i < 8; i++) {
printf("%d ", c[i]);
}
}
12장 Exercise & Programming은 아래 클릭하시면 됩니다
[쉽게 풀어쓴 C언어 Express] 12장 Exercise & Programming
[쉽게 풀어쓴 C언어 Express] 12장 Exercise & Programming
12장 Exercise & Programming 12장 Exercise 1. 3번 2. 2번 3. a) strcat() b) strcpy() c) strtok() d) gets() e) strlen() 4. a) ‘?’을 “?”로 변경 b) if( strcmp(s, “value”)==0) c) strcpy(a, “Hello World!”); 5. s1이 의미하는 것은 문
gomszone.tistory.com
'프로그래밍 > C언어' 카테고리의 다른 글
[쉽게 풀어쓴 C언어 Express 개정4판] 13장 Exercise & Programming (10) | 2024.02.12 |
---|---|
[쉽게 풀어쓴 C언어 Express 개정4판] 12장 Exercise & Programming (4) | 2024.02.12 |
[쉽게 풀어쓴 C언어 Express 개정4판] 10장 Exercise & Programming (2) | 2024.02.12 |
[쉽게 풀어쓴 C언어 Express 개정4판] 9장 Exercise & Programming (4) | 2024.02.12 |
[쉽게 풀어쓴 C언어 Express 개정4판] 8장 Exercise & Programming (6) | 2024.02.11 |
댓글