반응형

간단한 "찾아 바꾸기" 기능을 구현하여 보자. 첫 번째로 사용자에게 최대 80 문자의 문자열을 입력하도록 한다. 두 번째로 찾을 문자열을 입력받는다. 세 번째로 바꿀 문자열을 입력받는다. 문자열을 찾아서 바꾼 후에 결과 문자열을 화면에 출력한다.

//개인적으로 최고로 어려웠던 문제네요.. 오래걸렸습니다. 



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
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
char a[SIZE]="";
char find[15]="";
char change[15]="";
char seps[]=" ";
char b[10][20];
char *token;
int j,count;
count=0;
printf("문자열을 입력하세요: ");
gets(a);
printf("찾을 문자열: ");
gets(find);
printf("바꿀 문자열: ");
gets(change);
token=strtok(a,seps);
while(token!=NULL)
{
    strcpy(b[count],token);
    count++;
token=strtok(NULL,seps);
}
for(j=0;j<count;j++)
{
if(strcmp(b[j],find)==0)
    {strcpy(b[j],change);
break;}
}
printf("결과: ");
for(j=0;j<count;j++)
{
printf("%s ",b[j]);
}
printf("\n");
return 0;
}
cs




참고로 제 코드 말고도 인터넷에 찾아보니 좋은 코드가 있어서 공유하고자 합니다.

http://blog.naver.com/misoo12/100147994737


반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

포인터 평면 위의 점  (0) 2016.12.27
좌표 일치 확인  (0) 2016.12.27
전광판 만들기  (0) 2016.08.22
문자열로 연산하기  (0) 2016.08.22
구두점 개수 세기  (0) 2016.08.21
반응형

요즘 길거리에서는 글자들이 흘러가는 LED 전광판을 볼 수 있다. 이것을 프로그램으로 구현하여 보자.

나는 스크린샷을 찍으려고 count 변수를 이용하여 100번만 반복되게 하였지만, count 관련 줄들을 지우면 무한 반복하게 할 수 있다.

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
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
    char a[SIZE]="";
    char temp;
    int i,j,count;
    j=0; count=0;
    printf("광고하고 싶은 텍스트를 입력하세요: ");
    gets(a);
    strcat(a," ");
    while(count<=100)
    {
        for(i=0;i<strlen(a);i++)
        {printf("%c", a[i]);}
        printf("\n");
        for(i=0;i<strlen(a);i++)
        {
            if(i==0)
                {temp = a[strlen(a)];
                a[strlen(a)]=a[i];
                a[i]=a[i+1];}
            else if(i==strlen(a)-1)
                a[i]=temp;
        a[i]=a[i+1];
        }
    count++;
    }
return 0;
}
cs



반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

좌표 일치 확인  (0) 2016.12.27
찾아 바꾸기  (0) 2016.08.22
문자열로 연산하기  (0) 2016.08.22
구두점 개수 세기  (0) 2016.08.21
영어 이름 입력  (0) 2016.08.21
반응형

다음과 같이 연산의 이름을 문자열로 받아서 해당 연산을 실행하는 프로그램을 작성하라. 연산을 나타내는 문자열은 "add", "sub", "mul", "div"으로 하라.

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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 80
int compare(char *a);
int main(void)
{
    char a[SIZE]="";
    char seps[]=" ";
    char *ope, *x, *y;
    int i,j,k;
    printf("연산을 입력하세요: ");
    gets(a);
    ope=strtok(a,seps);
    x=strtok(NULL,seps);
    y=strtok(NULL,seps);
    i=compare(ope);
    j=atoi(x);
    k=atoi(y);
    printf("연산의 결과: ");
    if(i==0)
    printf("%d\n", j+k);
    else if(i==1)
    printf("%d\n", j-k);
    else if(i==2)
    printf("%d\n", j*k);
    else if(i==3)
    printf("%d\n", j/k);
    return 0;    
}
int compare(char *a)
{
if(strncmp(a,"add",3)==0)
    return 0;
else if(strncmp(a,"sub",3)==0)
    return 1;
else if(strncmp(a,"mul",3)==0)
    return 2;
else if(strncmp(a,"div",3)==0)
    return 3;
}
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

찾아 바꾸기  (0) 2016.08.22
전광판 만들기  (0) 2016.08.22
구두점 개수 세기  (0) 2016.08.21
영어 이름 입력  (0) 2016.08.21
문자열 역순 출력  (0) 2016.08.21
반응형

사용자에게 영어 이름을 성과 이름으로 나누어서 대문자로 입력하도록 하여서 성과 이름의 위치를 바꾸고 소문자로 변환하여 출력하는 프로그램을 작성하라.

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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void token1(char seps[], char *token);
#define SIZE 80
int main(void)
{
char a[SIZE]="";
char seps[]=" ";
char *family, *token;
int i;
printf("문자열을 입력하시오: ");
gets(a);
for(i=0;a[i]!=NULL;i++)
    a[i]=tolower(a[i]);
token=strtok(a,seps);
family=token;
token1(seps,token);
printf(", %s", family);
return 0;
}
void token1(char seps[], char *token)
{
    token=strtok(NULL,seps);
    if(token!=NULL)
    {printf("%s ", token);
    token1(seps,token);
    }
}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

문자열로 연산하기  (0) 2016.08.22
구두점 개수 세기  (0) 2016.08.21
문자열 역순 출력  (0) 2016.08.21
회문(palindrome)  (0) 2016.08.20
문장 교정  (0) 2016.08.20
반응형

엔터키가 눌려질 때까지 사용자로부터 문자열을 입력받아서 문자열에 포함된 단어들을 역순으로 배열하여 출력하는 프로그램을 작성하라.

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
#include <stdio.h>
#include <string.h>
#define SIZE 80
void token1(char seps[], char *token);
int main(void)
{
char a[SIZE]="";
char seps[]=" ";
char *token;
char *c;
int i,count;
count=0;
printf("문자열을 입력하세요: ");
gets(a);
printf("출력문자열 : ");
token=strtok(a,seps);
c=token;
token1(seps,token);
printf("%s",c);
printf("\n");
return 0;
}
void token1(char seps[], char *token)
{
    token=strtok(NULL,seps);
    if(token!=NULL)
    {
    token1(seps,token);
    printf("%s ", token);}
}
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

구두점 개수 세기  (0) 2016.08.21
영어 이름 입력  (0) 2016.08.21
회문(palindrome)  (0) 2016.08.20
문장 교정  (0) 2016.08.20
단어 수 계산  (0) 2016.08.20
반응형

회문(palindrome)이란 바로 읽거나 거꾸로 읽어도 같은 글이 되는 문구이다. 예를 들면 "Able was I ere I saw Elba"와 같은 문자열이 회문이다. 사용자로부터 문자열을 받아서 회문 여부를 판별하여 그 결과를 화면에 출력하는 프로그램을 작성하여 보라. strlen()와 같은 라이브러리 함수는 사용해도 좋다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define SIZE 80
int main(void)
{
    char a[SIZE]="";
    int i, check;
    check=1;
    printf("문자열을 입력하세요: ");
    gets(a);
    for(i=0;a[i]!=NULL;i++)
        a[i]=tolower(a[i]);
    for(i=0;i<=strlen(a)/2;i++)
        {if(a[i]!=a[strlen(a)-i-1])
    {check=0;break;}}
    if(check==0)
        printf("회문이 아닙니다.\n");
    else if(check==1)
        printf("회문입니다.\n");
    return 0;
}
cs





반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

영어 이름 입력  (0) 2016.08.21
문자열 역순 출력  (0) 2016.08.21
문장 교정  (0) 2016.08.20
단어 수 계산  (0) 2016.08.20
질문에 대한 답변  (0) 2016.08.20
반응형

간단한 철자 교정 프로그램을 작성하여 보자. 문자열을 입력으로 받아서 문자열 안에 마침표가 있으면 문자열의 첫 번째 문자가 대문자인지를 검사한다. 만약 대문자가 아니면 대문자로 변호나한다. 또한 문장의 끝에 마침표가 존재하는지를 검사한다. 역시 마침표가 없으면 넣어준다. 즉 입력된 문자열이 "pointer is easy"라면 

"Pointer is easy."로 변환하여 화면에 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
char a[SIZE]="";
printf("텍스트를 입력하세요: ");
gets(a);
if(a[0]>='a'||a[0]<='z')
    a[0]=a[0]-'a'+'A';
if(a[strlen(a)-1]!='.')
    {a[strlen(a)]='.';
a[strlen(a)+1]=NULL;}
printf("결과 텍스트 출력:%s\n", a);
return 0;
}
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

문자열 역순 출력  (0) 2016.08.21
회문(palindrome)  (0) 2016.08.20
단어 수 계산  (0) 2016.08.20
질문에 대한 답변  (0) 2016.08.20
대소문자 변환기  (0) 2016.08.20
반응형

영문 문자열 안에 포함된 영단어의 개수를 계산하여 화면에 출력하는 프로그램을 작성하여 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#define SIZE 80
int main(void)
{
    char a[SIZE]="";
    int i, count;
    count=1;
    printf("문자열을 입력하세요: ");
    gets(a);
    for(i=0;a[i]!=NULL;i++)
        if(a[i]==' ')
            count++;
    printf("단어의 수는 %d입니다.\n", count);
    return 0;
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
    char a[SIZE]="";
    char seps[]=" ";
    int count;
    char *token;
    count=0;
printf("문자열을 입력하세요: ");
gets(a);
token=strtok(a,seps);
while(token!=NULL)
{
    count++;
    token=strtok(NULL,seps);
}
printf("단어의 수는 %d입니다.\n", count);
return 0;
 
}
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

회문(palindrome)  (0) 2016.08.20
문장 교정  (0) 2016.08.20
질문에 대한 답변  (0) 2016.08.20
대소문자 변환기  (0) 2016.08.20
문자열내 문자 빈도수  (0) 2016.08.20
반응형

사용자에게 질문을 제시하고 답변을 받아서 긍정이면 1을 반환하고 부정이면 0을 반환하는 함수 get_response(char *prompt)를 작성하고 테스트하라. 여기서 매개변수 prompt는 사용자에게 제시하는 질문이다. 긍정을 의미하는 문자열은 "yes", "ok"로 가정하라. 부정을 의미하는 문자열은 "no"로 가정하라. 대소문자는 구별하지 않도록 하라.

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
#include <stdio.h>
#include <string.h>
#define SIZE 30
int get_response(char *prompt);
int main(void)
{
    char a[SIZE]="";
    int x=0;
    while(1)
    {
printf("게임을 하시겠습니까?(나가기는 quit)");
x=get_response(a);
if(x==1)
printf("긍정적인 답변\n");
else if(x==0)
    printf("부정적인 답변\n");
else if(x==-1)
    break;
else
    printf("잘못된 입력입니다.\n");
    }
return 0;
}
int get_response(char *prompt)
{
gets(prompt);
if(strcmp("yes",prompt)==0||strcmp("YES",prompt)==0||strcmp("ok",prompt)==0||strcmp("OK",prompt)==0)
    {return 1;}
else if(strcmp("no",prompt)==0||strcmp("NO",prompt)==0)
    {return 0;}
else if(strcmp("quit",prompt)==0)
    return -1;
else
    return -2;
}
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

문장 교정  (0) 2016.08.20
단어 수 계산  (0) 2016.08.20
대소문자 변환기  (0) 2016.08.20
문자열내 문자 빈도수  (0) 2016.08.20
문자열 속의 문자 개수 세기  (4) 2016.08.19

+ Recent posts