donchanee

문자열에 대한 3문제 본문

프로그래밍/C언어

문자열에 대한 3문제

donchanee 2018. 12. 7. 13:27
728x90


#include <stdio.h>

#include <string.h>

#include <stdlib.h>


int vowel (char ch) {

    char vowel[6] = "aeiou";

    char *x;

    

    for (x = vowel; x<vowel + 6; x++) {

        if ( *x == ch )

            return 1;

    }

    return 0;

}


int main() {

    char str[101]="", Cword[101]="", Vword[101]="";

    char *p1, *p2, *p3 = str, *q, *r1=Cword, *r2=Vword;

    int Cmax =0, Ccnt =0;

    int Vmax =0, Vcnt =0;

    

    gets(str);

    

    while (*p3) {

        Ccnt =0;

        Vcnt =0;

        

        p1 = p3;

        p2 = p3;

        

        for(q=p3;(*q != ' ') && *q; q++) {

            if (vowel(*q))

                Vcnt++;

            else

                Ccnt++;

        }

        *q = '\0';

        

        if (Cmax < Ccnt) {

            Cmax = Ccnt;

            r1 = Cword;

            strcpy(r1, p1);

        }

            

        if(Vmax < Vcnt) {

            Vmax = Vcnt;

            r2 = Vword;

            strcpy(r2, p2);

        }

        p3 = q+1;

    }

    printf("%s %d\n", Cword, Cmax);

    printf("%s %d", Vword, Vmax);

    

    

    return 0;

}




#include<stdio.h>

#include<string.h>

#include<stdlib.h>


int main()

{

    char arr[100]="", *cal, *a, *b;

    int ai=0, bi=0; // 변수 선언부.

    

    gets(arr);

    

    cal = strtok(arr, " "); // strtok 함수를 사용했다.

    a = strtok(NULL, " "); 

    b = strtok(NULL, " "); 

    ai = atoi(a);

    bi = atoi(b); // atoi 함수로 문자를 숫자로 변경

    

    

    if(!strcmp("add", cal))

        printf("%d", ai+bi); // 비교하여 add 문자일 경우 출력

    else if(!strcmp("sub", cal))

        printf("%d", ai-bi); // 비교하여 sub 문자일 경우 출력

    else if(!strcmp("mul", cal))

        printf("%d", ai*bi); // 비교하여 mul 문자일 경우 출력

    else if (!strcmp("div", cal))

        printf("%d", ai/bi); // 비교하여 div 문자일 경우 출력

    

    return 0;

}



#include<stdio.h>

#include<string.h>

#include<stdlib.h>


void del (char *arr) { // 공백을 지우는 함수

    char tmp[300]={'\0'}, *p; // 넉넉하게 선언합니다.

    

    for(p=arr; *p; p++) {

        if(*p == ' ' && *(p+1) != ' ') { // 공백을 발견할경우

            strcpy(tmp, p+1); // 포인터 위치 +1 부터 복사하고

            *p='\0'; // 포인터 위치를 널 문자로 만든뒤

            strcat(arr, tmp); // 병합시킵니다.

        }

        else if (*p == ' ' && *(p+1) == ' ') { // 공백이 연속될경우

            strcpy(tmp, p+1);

            *p='\0';

            strcat(arr, tmp); // 마찬가지이지만

            p--; // 포인터 위치를 하나 줄여서 나머지 공백도 다시 지울수 있게합니다.

        }

    }

}


int main() {

    

    char arr[100];

    

    gets(arr);

    

    del (arr); // 함수 선언부

    

    printf("%s", arr); // 출력

    

    return 0;

}


'프로그래밍 > C언어' 카테고리의 다른 글

동적할당에 대한 4문제  (0) 2018.12.07
구조체에 대한 5문제  (0) 2018.12.07
포인터에 대한 4문제  (0) 2018.10.02
배열 문제 #7.  (0) 2018.05.22
배열 문제 #6.  (0) 2018.05.20