본문 바로가기
비트 단기/c

9 c

by woohyun22 2018. 11. 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
// ConsoleApplication5.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다.
#include "stdafx.h"
#pragma warning(disable:4996)//_s없을떄 오류잡는거
#include <windows.h>
//표준함수
//제공되어있는 함수
//printf(),scanf_s(),rand(),strlen(),strcmp(),sleep(),cls()
void func81() {
    char ar[10= "apple";
    printf("%d %d\n"sizeof(ar), strlen(ar)); //sizeof는 배열의 크기 strlen는 문자열의 크기
    char br[10= "호랑이";
    printf("%d %d\n"sizeof(br), strlen(br)); //sizeof는 배열의 메모리크기 strlen는 문자열의 크기 //한글은 2btye 영문은 1btye
    char *name[5];
    int num = 0;
    while (1)
    {
        //num++;
        //int num = 0; while문에서 계속 재초기화되기때문에 밖에서 써야된다.
        char ar[16]; //2의 배수형식을 주로 사용한다
        printf("이름을 입력하시오 종료하실려면 종료라고 입력하세요\n");//간단한 ui
        scanf("%s"&ar[0]); //&ar이나 &ar[0] _s를 안썻을떄 오류 //#pragma warning(disable:4996)//_s없을떄 오류잡는거 warning 제거
        //scanf_s("%s", &ar[0], sizeof(ar));
        if (strcmp(ar, "종료"== 0) {//strcmp(a,b) //"문자열a,b를 비교",return값이 있다 문자열의값이 같으면0 . 주요 15함수중 하나
            printf("프로그램을 끝냅니다.\n");
            break;
        }
    int size = strlen(ar);
    printf("%d"size);
    name[num] = new char[size+1];//이름을 배열에 하나씩 저장 NULL = +1
    printf("%s %d\n", ar,strlen(ar));    
    strcpy(name[num++],ar);
    printf("num 은 %d\n", num);
    }
    printf("입력된 이름들은 다음과 같습니다.\n");
    for (int i = 0; i < num; i++)
    {
        printf("%s ",name[i]);
        delete[] name[i];//해제 앞에 배열을 돌릴만큼
    }
}
void func77() {
    int a = strcmp("토끼""호랑이");//같을떄 0 다르면 다른값.
    int b = strcmp("토끼""토끼");
    printf("%d %d\n", a,b);
    printf("%d\n",strcmp("토끼""토끼"));
    if (strcmp("토끼""토끼"== 0)
        printf("같다\n");
    else
        printf("다르다\n");
}
//strcmp와 같은 함수를 직접만들기
//쓰는 세가지 방식
//int a= func78("토끼", "호랑이");
//printf("%d\n", a);
//printf("%d\n", func78("토끼", "토끼"));
//func78("토끼", "호랑이");
int func78(const char *a, const char *b) {//const char *a ="tiger" - const뺴면 안됨.
    printf("콜\n");
    int s1 = strlen(a);//길이가 다르면 일단 문자열이 다르다(길이만 봤을때)
    int s2 = strlen(b);
    if (s1 != s2) {
        return -1;
    }
    for (int i = 0; i < s1; i++)
    {
        if (a[i]!=b[i]) {//각각의 배열값이 같은지
            return -1;
        }
    }        
    return 0;
}
void func79() {
    //밑에 여러가지방법 쓰는법
    char *p;//%s는 메모리몇개를 가지고 출력하라는지 모름,메모리NULL을만나면 멈춘다.- 주소출력
    p = new char[4+1];//이 방식이 가장 선호되는 방식이다.
    p[0= 'A';
    p[1= 'B';
    p[2= 'C';
    p[3= 'D';
    p[4= NULL;
 
    printf("%s\n", p);
    const char *= "ABCD";//*문자열에 넣어주려면 const써줘야된다.
    printf("%s\n",t);//얘는 자동으로 t[4]번에 NULL값을 넣어준다.
    char b[4+1= "ABCD";//NULL넣어줄 공간을 +1해주던가 아니면 아예 비워둬야된다.
    printf("%s\n", b);
    char f[] = { 'A','B''C''D',NULL};//NULL넣어주면 쓰레기값안나온다.
    printf("%s\n", f);
 
}
void func80() {
    const char *= "Apple";
    char ar[10];
    for (int i = 0; i < 5; i++)
    {
        ar[i] = s[i];
    }
    ar[5= NULL;
    printf("%s %s\n", s, ar);//ar배열에 apple넣고 남는 쓰레기값을 출력 ar[5] = NULL; 써주면 정상적으로 가능
 
    char br[10];
    strcpy(br, s);//s가 가지고있는 내용을 br에다가 copy한다. 복사를 하고 NULL조차도 같이 넣어줘서 쓰레기값이 안나온다!
    printf("%s\n", br);
 
    char *= new char[5+1];
    strcpy(d, s);
    printf("%s\n", d);
 
    const char *ss = "무궁화 꽃이 피었습니다.tiger";
    char *dd = new char[strlen(ss)+1];//길이대로 넣어주고+1 NULL넣어주면된다
    strcpy(dd, ss);
    printf("%s", dd);
}
void func82() {
    //타입->(int *)으로 본다  (*c)<-뒤에는 포인터;
    int *          *c;
    c = new int*[3];//세로갯수 확보됨.
    c[0= new int[4];
    c[1= new int[4];
    c[2= new int[4];
    //a[3][4]와 동격
 
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            c[i][j] = i * 4 + j;//숫자가 배열 순차적으로 들어감 i * (j의최대값) + j
            printf(" %d", c[i][j]);
        }
        printf("\n");
    }
    //012를 해제하고 c를 해제해줘야한다.
    for (int i = 0; i < 3; i++)
    {
        delete[] c[i];
    }
    delete[] c;
}
void func83() {
    int ar[3][4];//세로 가로
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            //printf("%02d ", rand() % 10);
            ar[i][j] = rand() % 10;
            printf("%02d ", ar[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    int sum = 0;
    
    for (int b = 0; b < 4; b++)
    {
        for (int a = 0; a < 3; a++)
        {
            sum += ar[a][b];
        }
        printf("%02d ", sum);
        sum = 0;
    }
    
 
}
void func84() {
    int n1,n2;
    scanf("%d %d"&n1,&n2);
    printf("%d %d\n",n1,n2);
    //    int ar[n1][n2];//배열은 고정메모리여서 변수를 넣을수없다. 고정값을 줘야된다.
    int *           *ar;//타입은 int*
    ar = new int*[n2];//세로 int* ar[3]
 
 
    //for (int i = 0; i < n2; i++)//세로를
    //{
    //    ar[i] = new int[n1];//가로만큼
    //}
    for (int i = 0; i < n2; i++)
    {
        ar[i] = new int[n1];//가로만큼
        for (int j = 0; j < n1; j++)
        {
            //printf("%02d ", rand() % 10);
            ar[i][j] = rand() % 10;
            printf("%02d ", ar[i][j]);
        }
        printf("\n");
    }
    printf("\n");
 
    for (int i = 0; i < n2; i++)
    {
        delete[] ar[i];
    }
    delete[] ar;
}
int main()
{
    func84();
}
cs


728x90

'비트 단기 > c' 카테고리의 다른 글

c 마지막  (0) 2018.11.26
10 c  (0) 2018.11.22
8c  (0) 2018.11.19
c 7  (0) 2018.11.16
c 6  (0) 2018.11.15

댓글