12주차 퀴즈

문제1

다음 프로그램의 출력 결과에 대해서 설명하세요(2점).

#include <stdio.h>

int main()
{
    int a[3] = { 1, 2 };
    int *p = a;

    printf("%ld\n", sizeof(a));
    printf("%ld\n", sizeof(a + 1));
    printf("%ld\n", sizeof(a[0]));

    printf("%ld\n", sizeof(p));
    printf("%ld\n", sizeof(*p));
}

문제2

다음 프로그램의 출력 결과에 대해서 설명하세요(2점).

#include <stdio.h>

int main()
{
    char s[4] = { 'a', 'b', 'c', 'd' };
    printf("%c%c%c%c\n", s[0], s[1], s[2], s[3]);
    printf("%s\n", s);
}

문제3

다음 프로그램의 문제점에 대해서 설명하세요(2점).

#include <stdio.h>

int main()
{
    char s[4] = "abcd";
    printf("%s\n", s);
}

문제4

입력된 두 문자열을 이어 붙이는 strcat() 함수를 완성하세요(2점).

#include <stdio.h>

// s3 = s1 + s2, s3에 s1과 s2를 이어 붙인다.
void strcat(char* s1, char* s2, char* s3)
{
    // insert code here
}

int main()
{
    char s1[10], s2[10], s3[20];

    scanf("%s %s", s1, s2);
    strcat(s1, s2, s3);
    printf("%s\n", s3);
}

문제5

첫번째 문자열(str1)에서 두번째 문자열(str2)이 처음 나타나는 위치를 반환하는 함수 strstr() 함수를 완성하세요. 예를 들어, str1 = “Tom likes to eat Jerry”이고, str2 = “like”이면 str1+4가 반환된다. 나타나지 않으면 NULL을 반환한다.

#include <stdio.h>

// str1에서 str2가 나타나는 위치를 반환한다.
char* strstr(char* str1, char* str2)
{
    // insert code here
}

int main()
{
    char s1[100], s2[100];

    scanf("%s %s", s1, s2);
    char* s3 = strstr(s1, s2);
    printf("%s\n", s3);
}

문제6

추가 설명이 필요한 것을 알려주세요.

댓글남기기