C언어 기초: 문자열 예제(4)

kevinkim2586·2020년 4월 26일
0

C언어

목록 보기
23/23
post-thumbnail

4번 째 문제다.

왼쪽이 input, 오른쪽이 output이다.

왼쪽과 같이 이름, 그리고 행마다 점수 3개가 입력이 되면, 출력할 때 하나씩 출력하고 마지막에 각 점수의 합계를 출력하면 된다. 전 문제와 비교해서는 제법 간단해보여서 다행이다.

아래 손코딩을 먼저 보자:

name 배열을 선언하고, 각 점수를 korean, english, math 점수로 가정하고 배열을 각각 따로 설정해 주었다.

그리고 이전에 배운 delimiter 변수와 ptoken 변수를 사용해서, 문자열에서 단어 하나 하나를 추출하여 각 배열에 넣어주면 된다. 다만 입력 받은 점수는 int 형이 아니고 문자형이기 때문에 atoi()함수를 이용해서 문자형->정수형으로 꼭 반환 해주어야 한다.

최종 코드는 아래와 같다:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(){

    char name[5][100]; int korean[5]; int english[5]; int math[5];
    char div[]=" ";
    int sum[5]={0};
    char *ptoken=NULL;
    char temp[100];

    for(int i=0;i<4;i++){
        gets(temp);
        ptoken=strtok(temp,div);
        strcpy(name[i],ptoken);
        while(ptoken!=NULL){
            ptoken=strtok(NULL,div);
            sum[i]+=atoi(ptoken);
            korean[i]=atoi(ptoken);
            ptoken=strtok(NULL,div);
            sum[i]+=atoi(ptoken);
            english[i]=atoi(ptoken);
            ptoken=strtok(NULL,div);
            sum[i]+=atoi(ptoken);
            math[i]=atoi(ptoken);
            ptoken=strtok(NULL,div);
        }

    }
    for(int i=0;i<4;i++){
        printf("%s %d %d %d %d\n",name[i],korean[i],english[i],math[i],sum[i]);
    }



    return 0;
}
profile
공개적으로 학습하고자 만든 블로그

0개의 댓글