Post

08. C-Programming(Convert the pointer of a common code)

08. C-Programming(Convert the pointer of a common code)

[toc]

C Programming 실습8

1번 문제

1
문자열의 길이를 검사하는 함수 int length(char str[])을 작성하시오.
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
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>

int length(char str[]);

int main(void)
{
  char str[100];
  int ans;

  printf("문자열을 입력하세요.\n");
  scanf("%s", str);

  ans = length(str);

  printf("문자열의 길이는 %d입니다.\n", ans);

  return 0;
}

int length(char str[])
{
  int c = 0; // 변수 초기화 해줘야함

  for (int i = 0; str[i] != '\0';i++) // \0은 문자열의 끝을 의미함
  {
    c++;
  }
  return c;
}

2번 문제

1
문자열 안에 포함되어 있는 'a'의 개수를 검사하는 함수 int search(char str[])을 작성하시오.
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
32
33
34
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>

int search(char str[]);

int main(void)
{
  char str[100];
  int ans;

  printf("문자열을 입력하세요.\n");
  scanf("%s", str);

  ans = search(str);

  printf("%s 안에 a는 %d개가 있습니다.\n", str, ans);

  return 0;
}

int search(char str[])
{
  int c = 0;

  for (int i = 0; str[i] != '\0'; i++) {
    if (str[i] == 'a')
    {
      c++;
    }
    else
      continue;
  }
  return c;
}

3번 문제

1
2
문자열을 비교하는 함수 int compare(char str1[], char str2[])을 작성하시오.<br>
문자열 str1과 str2를 비교해서 일치하면 1, 그렇지 않으면 -1을 반환한다.
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
32
33
34
35
36
37
38
39
40
41
42
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>

int compare(char str1[], char str2[]);

int main(void)
{
  char str1[100];
  char str2[100];
  int ans;

  printf("1번째 문자열을 입려하세요.\n");
  scanf("%s", str1);

  printf("2번째 문자열을 입려하세요.\n");
  scanf("%s", str2);

  ans = compare(str1, str2);

  if (ans == 1)
  {
    printf("2개의 문자열은 같습니다.\n");
  }
  else if (ans == -1)
  {
    printf("2개의 문자열을 다릅니다.\n");
  }

  return 0;
}

int compare(char str1[], char str2[])
{
  for (int i = 0; str1[i] == str2[i]; i++)
  {
    if (str1[i] == '\0')
    {
      return 1;
    }
  }
  return -1;
}

4번 문제

1
1 ~ 3번 문제 포인터 연산으로 바꿔라

1번 포인터 변환

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
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>

int length(char *str);

int main(void)
{
  char str[100];
  int ans;

  printf("문자열을 입력하세요.\n");
  scanf("%s", str);

  ans = length(str);

  printf("문자열의 길이는 %d입니다.\n", ans);

  return 0;
}

int length(char *str)
{
  int c = 0; // 변수 초기화 해줘야함

  while (*str){
    c++;
    str++;
  }
  return c;
}

2번 포인터 변환

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
32
33
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>

int search(char *str);

int main(void)
{
  char str[100];
  int ans;

  printf("문자열을 입력하세요.\n");
  scanf("%s", str);

  ans = search(str);

  printf("%s 안에 a는 %d개가 있습니다.\n", str, ans);

  return 0;
}

int search(char *str)
{
  int c = 0;

  while (*str) {
    if (*str == 'a')
    {
      c++;
    }
    str++;
  }
  return c;
}

3번 포인터 변환

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
32
33
34
35
36
37
38
39
40
41
42
43
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>

int compare(char *str1, char *str2);

int main(void)
{
  char str1[100];
  char str2[100];
  int ans;

  printf("1번째 문자열을 입려하세요.\n");
  scanf("%s", str1);

  printf("2번째 문자열을 입려하세요.\n");
  scanf("%s", str2);

  ans = compare(str1, str2);

  if (ans == 1)
  {
    printf("2개의 문자열은 같습니다.\n");
  }
  else if (ans == -1)
  {
    printf("2개의 문자열을 다릅니다.\n");
  }

  return 0;
}

int compare(char *str1, char *str2)
{
  while (*str1 == *str2) {
    if (*str1 == '\0')
    {
      return 1;
    }
    str1++;
    str2++;
  }
  return -1;
}

5번 문제

1
2
표준 라이브러리 <ctype>의 영문자를 대문자로 변환하는 toupper() 함수,<br>
소문자로 변환하는 tolower() 함수를 검사해서 변환하는 코드를 작성하시오.
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
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include <ctype.h>

int main(void)
{
  char str[100];
  int ans;

  printf("문자열을 입력하세요.\n");
  scanf("%s", str);

  for (int i = 0; str[i] != '\0'; i++)
  {
    str[i] = toupper(str[i]);
  }
  printf("대문자로 변환하면 %s입니다.\n", str);

  for (int j = 0; str[j] != '\0'; j++)
  {
    str[j] = tolower(str[j]);
  }
  printf("소문자로 변환하면 %s입니다.\n", str);

  return 0;
}