#include <stdio.h>
#include <string.h> //문자열 길이를 구하는 strlen 함수를 사용하기 위해서
#include <stdlib.h> //  atoi 함수를 사용하기 위해



int main(int argc, const char * argv[]) {
    //배열포인터
    
    //data 배열은 1 - 5 까지의 값을 저장하고 있다.
    char data[5] = {1,2,3,4,5};
    
    //합산에 사용할 result 변수는 0으로 초기화 한다.
    int result = 0, i;
    
    char *p = data; // data배열의 시작위치를 포인터 변수 p에 저장한다.
    
    //5번 반복하면서 포인터 p를 사용하여 배열의 각 항목을 result 변수에 합산
    
    for (i = 0; i < 5; i++) {
        result = result + *p;
        p++;   //data 배열의 다음 항목으로 주소를 이동 data[0] -> data[1] -> ...
    }
    
    //합산한 결과를 출력한다.
    printf("data 배열의 각 요소의 합은 %d 입니다. \n" , result);
    return 0;
}

do it c 언어 입문 참고

'ios 뽀개기 > C언어' 카테고리의 다른 글

c언어 기초4  (1) 2019.05.22
c언어 기초 3  (0) 2019.05.21
c언어 기초2  (0) 2019.05.17
c언어 기초1  (0) 2019.05.16
  1. 2019.07.26 12:27

    비밀댓글입니다

#include <stdio.h>
#include <string.h> //문자열 길이를 구하는 strlen 함수를 사용하기 위해서
#include <stdlib.h>   //  atoi 함수를 사용하기 위해

 //14 - 10 문자를 정수로 변환
int ArrayToInteger(char string[]){
    
    int count = 0, num = 0;
    //문자열이 끝날때 까지 반복
    while (string[count] != 0) {
        //반복할 때마다 이전 값에 10을 곱해서 자릿수를 증가시킴
        num = num * 10 + string[count] - '0';
        count++;
        
    }
    return num;
}


/*
 buffer : 사용자가 입력한 문자열을 저장할 배열
 limit : 최대 입력 가능한 문자개수
 1반환 : 정상입력
 0반환 : 제한된 개수만 받았다
 */
int GetMyString(char buffer[] , int limit ){
    
    int i;
    for (i = 0; i <= limit; i++) {   //최대 개수만큼만 반복
        buffer[i] = getchar();
        if (buffer[i] == '\n') {    //엔터키가 체크되면 사용자의 입력이 완료되었다는 뜻, 문자열 완성, 함수 종료.
        
            buffer[i] = 0;            //엔터키 위치에 0을 넣어서 문자열 완성
            return 1;                   //정상적으로 입력이 완료됨
        }
    }
    
    //반복문을 빠져 나왔다는 뜻은 입력 개수 제한을 초과했다는 뜻
    //현재 위치에 0을 넣고 문자열 구성 완료
    buffer[i] = 0;
    rewind(stdin); //표준 입력 버퍼에 남아있는 문자들을 제거함.
    return 0;          //입력 초과 현상이 발생했음을 알림.
}


int main(int argc, const char * argv[]) {

    /*
    //14 - 1 표준 입력 함수를 사용하여 문자를 한개 입력 받음
    int input_data;
    input_data = getchar();
    // 입력받은 문자를 출력
    printf("input : %c \n" , input_data);
    //input : d
 
    
     //14 - 2 표준 입력 함수를 사용하여 문자를 한개 입력 받음
    int input_data2;
    input_data2 = getchar();
    printf("첫문자 : %c \n" , input_data2);
    input_data2 = getchar();
    printf("둘째문자 : %c \n" , input_data2);
  
    
    //14 - 3
    int input_data3 = getchar();
    rewind(stdin);      //표준 입력 버퍼에 있는 모든 입력값을 제거함.
    printf("first input : %c\n", input_data3);
    input_data3 = getchar();
    rewind(stdin);
    printf("second input : %c\n", input_data3);
    
    
    
    //14 - 4 마지막에 0을 포함해야 하므로 최대 9개의 문자까지 저장 가능
    char input_string[10];
    gets(input_string);
    printf("input string : %s \n" , input_string);
    
    
    
    //14 - 5 반환값이 NULL이 아니라 문자열을 입력 받아서 input_string에 저장함
    char input_string2[10];
    if (NULL != gets(input_string2)) {
        printf("input_string2 : %s \n" , input_string2);
    }else{
        printf("input => canceled \n");
    }
    
    
    
    //14 - 6 입력할 문자열 개수 지정
    char temp[10];
    int state;
    //최대 9개까지만 입력받겠다고 제안함.
    state = GetMyString(temp, 9);
    if (state == 1) {
        printf("input : %s \n", temp);                          //정상입력
    }else{
        printf("input : %s -> out of range\n", temp); // 범위를 초과
    }
    
    
    //14 - 7 문자를 정수로 변환
    
     //pos_num은 각 자릿수에 곱할 숫자, num은 정수로 변환될 숫자를 저장할 변수
     
    int pos_num = 100, num = 0 , i, temp_num;
    //정수로 변환할 문자열
    char num_string[4] = "423";
    
    for (i = 0; i < 3; i++) {
        
        //배열의 각 항목을 문자에서 정수로 변경
        temp_num = num_string[i] - '0';
        printf(" temp_num -> %d \n"  , temp_num);
        //정수화된 숫자에 자릿수에 해당하는 숫자를 곱해서 합산
        num = num + temp_num * pos_num;
        
        //다음 자릿수를 구성하기 위해서 10을 나눔. 100 -> 10 -> 1
        pos_num = pos_num / 10;
    }
    printf(" %s -> %d \n" , num_string , num);
     
    
    
    
    //14 - 8 문자를 정수로 변환
    int pos_number = 1, number = 0, i , countNum;
    char number_string[4] = "123";
    //문자열의 길이를 구해서 countNum 변수에 3이저장
    countNum = strlen(number_string);
    
    //문자열의 길이보다 1만큼 작게 반복하기 위해
    //10 * 10 * 10 = 1000  이 아니라 10 * 10 해서 100이 되어야 한다.
    printf("countNum -  : %d \n" , countNum);       //3
    //반복 1회마다 10씩 증가 1-> 10 -> 100
    for (i = 0; i < countNum - 1; i ++) {
        pos_number = pos_number * 10;
        printf("pos_num -  : %d \n" , pos_number);    // 10, 100
    }
    
    //문자열의 길이 만큼 반복
        for (i = 0; i < countNum; i++) {
            number = number + (number_string[i] - '0' ) * pos_number;
            pos_number = pos_number / 10;
            printf("number - v  : %d \n" , number);                 //100    , 120
            printf("pos_num - v  : %d \n" , pos_number);        //10,    1
        }
        printf(" %s -> %d \n", number_string , number);     // 123 -> 123
    
    
     //14 - 9 문자를 정수로 변환
    int num = 0, count = 0;
    char num_string[4] = "123";
    //문자열이 끝날 때까지 반복
    while (num_string[count] != 0) {
        //반복할 때마다 이전 값에 10을 곱해서 자릿수를 증가시킴
        //num의 변화 : 1 * 10 + 1 -> 12 * 10 + 2 -> 123
        num = num * 10 + (num_string[count] - '0');
        count++;    //다음문자로 이동
        printf(" num : %d \n" , num);
        // num : 1
        //num : 12
        //num : 123
    }
    printf(" %s -> %d \n" , num_string , num);
    
    
      //14 - 10 문자를 정수로 변환 - gets
    int first_num, second_num;
    char first_string[16] , second_string[16];
    
    printf("input first number : ");
    gets(first_string);     //첫번째 숫자를 입력받음
    printf("input second number : ");
    gets(second_string);  //두번째 숫자를 입력받음
    
    first_num = ArrayToInteger(first_string);               // 문자열 -> 정수
    second_num = ArrayToInteger(second_string);    //문자열 -> 정수
    
    printf("%d + %d = %d \n" , first_num, second_num , first_num+second_num);
    
    
    
    //14 - 11 문자를 정수로 변환 - atoi
    int first_num, second_num;
    char first_string[16] , second_string[16];
    printf("input first number : ");
    gets(first_string); // 첫 번째 숫자를 입력받음
    printf("input second number : ");
    gets(second_string);   //두 번째 숫자를 입력받음
    
    first_num = atoi(first_string);
    second_num = atoi(second_string);
    // 정수로 변환된 두 수를 합산한 결과 출력
    printf("%d + %d = %d\n", first_num, second_num, first_num + second_num);
    
     
    
    //14 - 12 입력    -  scanf
    int int_data;
    float float_data;
    
    scanf("%d" , &int_data);        //정수 값을 입력 받는다.
    scanf("%f" , &float_data);      //실수 값을 입력받는다.
    printf("input : %d, %f\n", int_data, float_data);       // 5 , 55.5
    
   
    
    
     //14 - 13 입력
    char temp[32];
    scanf("%s" , temp); //문자열을 입력받음. 배열 변수 이름을 사용하면 해당 배열의 시작 주소를 의미하기 때문에 &연산자를 쓰면안된다.
    printf("input string : %s \n", temp);
    
    
     //14 - 14 진수 변환
    int num1, num2, num3;
    scanf("%o %d %x", &num1, &num2 , &num3); // 8, 10, 16진수 입력받는다.
    printf("input : %d, %d, %d \n" , num1, num2, num3);
    //10
    //10
    //10
    //input : 8, 10, 16
    
     
    
    
    //14- 15 응용
    
    int num = 0;
    //정상적인 나이를 입력할 때까지 무한 반복
    while (1) {
        printf("input age : ");
        scanf("%d" , &num);     //한개의 정수 값을 입력 받음
        
        if (num > 0 && num <= 130) {
            break;  //정상입력 -> 반복문 빠져나감
        }else{
            //나이 범위 잘못되었다고 알림
            printf("잘못된 나이! \n");
        }
    }
    
    printf("당신의 나이는 : %d  입니다.\n" , num);   //문자열 입력하면 무한반복
    
     */
    
     //14- 16 응용
    
    int num = 0;
    while (1) {
        printf("input age : ");
        
        // scanf 함수는 실패하면 0을 반환한다.
        if (scanf("%d" , &num) ==0) {
            rewind(stdin);      //입력 버퍼를 모두 비운다.
            printf("enter digit number ! \n");
        }else{
            
            
            if (num > 0 && num <= 130) {
                break;
            }else{
                printf("잘못된 나이! \n");
            }
        }
    }
    printf("당신의 나이는 %d  입니다. \n" , num);
    
    
    
    
    
    return 0;
}

'ios 뽀개기 > C언어' 카테고리의 다른 글

c언어 기초4  (1) 2019.05.22
c언어 기초 3  (0) 2019.05.21
c언어 기초2  (0) 2019.05.17
c언어 기초1  (0) 2019.05.16
#include <stdio.h>
#include <string.h>
int result; //전역변수, 특별한 초기화 값이 없으면 0으로 초기화됨


 //배열 길이 구하기- 5
//매개변수 data의 [ ] 의 숫자는 적지 않아도 된다. 전달되는 배열의 크기에 영향을 받기 때문에 어떤 숫자를 적어도 무방하다.
int GetStringLength(char datas[]){
    int count = 0;
     /* 0이 나올 때까지 문자의 개수를 더한다 */
    while (datas[count]) {
        printf("배열안의 글자는 : %c \n" , datas[count]);
        /*
         배열안의 글자는 : h
         배열안의 글자는 : a
         배열안의 글자는 : p
         배열안의 글자는 : p
         배열안의 글자는 : y
         */
        count++;
    }
    return count;
}


//step3
void Test(){
    int data = 0;
    printf("%d  \n" , data++);
}

//*step2 전역변수
void Sum2(int data1, int data2){
    result = data1 + data2;
}


//*step1 지역변수 함수
int Sum(int data1, int data2){  // data1, data2는 지역변수 이다. 5와 3으로 초기화 된다.
    int result = data1 + data2; // 지역 변수, data + data2 값으로 초기화 됨.
    return result;
}






int main(int argc, const char * argv[]) {

    //지역변수 함수 *step 1
    int result;     //지역변수, 초기화 되지 않아서 어떤 값이 들어있을지 모름
    result = Sum(5, 3);
    printf("5 + 3 = %d \n" , result);
    //5 + 3 = 8
    
    
    //전역 변수 함수;
    Sum2(6, 4);
    printf("6 + 4 = %d \n", result); // ! 주의! 전역변수 result 를 참조하지 않고 지역변수 result 를 참조한다.
    //6 + 4 = 8
    
    
    //step3
    int i ;
    for (i=0; i<5; i++) {
        Test();
    }
    /*
     0
     0
     0
     0
     0  
     */
    
    
    //step 12
    
    //배열 - 1
    short student[20];
    student[1] = 10;
   printf("%d %d\n", student[1], student[2]);
    //10 0
    
    
    //배열 - 2
    short mystudent[20], ii;
    for (ii = 0; ii < 20; ii++) mystudent[ii] = 0;
    mystudent[1] = 10;
     printf("%d %d\n", mystudent[1], mystudent[2]);
    //10 0
    

    //배열 - 3
    short yourstudent[20] = {0,};
    yourstudent[1] = 10;
     printf("%d %d\n", yourstudent[1], yourstudent[2]);
    //10 0
    
    
    char data[5] = {1,2,3,4,5};
    int resultdata = 0, iii;
    for (iii = 0; iii<5; iii++) {
        resultdata = resultdata + data[iii];
    }
    printf("data 배열의 각 요소의 합은 %d 입니다. \n" , resultdata);
    //data 배열의 각 요소의 합은 15 입니다.
    
    
    
    //배열 - 4
    char dataArray[6] = {'h' , 'a' ,'p' ,'p' , 'y', 0};
    char ment[] = "C programming~";
    printf("%s \n" , dataArray);
    //happy
    printf("%s \n" , ment);
    //C programming~
    
    
    //배열 길이 구하기- 5
    int data_length; //문자열 길이를 저장할 변수
    char dataChars[10] = {'h' , 'a' , 'p'  , 'p'  , 'y' , 0 , };
    data_length = GetStringLength(dataChars);
    printf("data length = %d \n" , data_length);
    //data length = 5
    
    
    //배열 길이 구하기- 6
    int my_data_length;
    char mydatas[10] = {'h' , 'a', 'p', 'p' , 'y' , 0, };
    my_data_length = strlen(mydatas);
    printf("data length = %d \n" , my_data_length);
    //data length = 5
    
    
    
    //배열 더하기 , 복사 - 7
    char sdata[10] = {'a' , 'b' ,'c' , 0, };
    char sresult[16] ;  //새로운 문자열을 저장할 변수
    strcpy(sresult, sdata); //sdata에 저장된 문자열을 sresult로 복사
    strcat(sresult, "def");  /* result에 “def”를 덧붙임 */
    printf("%s + \"def\" = %s\n" ,sdata , sresult);
    //abc + "def" = abcdef
    
    
    //2차원 배열 - 8
    char doublearray[3][4] = {  {0,0,2,0} ,  {1,1,0,0} , {2,1,0,2} };
    int x, y;
    
    for (y = 0;  y < 3;  y++) {
        for (x = 0; x < 4; x++) {
            printf("%d행에 %d열에" , y + 1 , x + 1);
            if (doublearray[y][x] == 1) {
                printf("검은돌이 놓여있습니다. \n");
            } else if(doublearray[y][x] == 2){
                printf("흰돌이 놓여 있습니다. \n");
            }else{
                printf("는 돌이 놓여 있지 않습니다. \n");
            }
        
        }
    }
    /*
     1행에 1열에는 돌이 놓여 있지 않습니다.
     1행에 2열에는 돌이 놓여 있지 않습니다.
     1행에 3열에흰돌이 놓여 있습니다.
     1행에 4열에는 돌이 놓여 있지 않습니다.
     2행에 1열에검은돌이 놓여있습니다.
     2행에 2열에검은돌이 놓여있습니다.
     2행에 3열에는 돌이 놓여 있지 않습니다.
     2행에 4열에는 돌이 놓여 있지 않습니다.
     3행에 1열에흰돌이 놓여 있습니다.
     3행에 2열에검은돌이 놓여있습니다.
     3행에 3열에는 돌이 놓여 있지 않습니다.
     3행에 4열에흰돌이 놓여 있습니다.
     */
    
    
    
    
    
    return 0;
}

do it c언어 도서 참고

'ios 뽀개기 > C언어' 카테고리의 다른 글

c언어 기초4  (1) 2019.05.22
c언어 기초 3  (0) 2019.05.21
c언어 기초2  (0) 2019.05.17
c언어 기초1  (0) 2019.05.16

+ Recent posts