본문 바로가기

전체 글

(295)
오늘 공부한 다차원 배열(2차원 배열의 선언 방법) 그냥 제가 오늘 공부했던 예제 옮겨놓은 것입니다. #include int main(void) { int villa[4][2]; int popu, i, j; //가구별 거주인원 입력받기// for (i = 0; i < 4; i++) { for (j = 0; j < 2; j++) { printf("%d층 %d호 인구수: ", i + 1, j + 1); scanf("%d", &villa[i][j]); } } for (i = 0; i < 4; i++) { popu = 0; popu += villa[i][0]; popu += villa[i][1]; printf("%d층 인구수: %d\n", i + 1, popu); } return 0; } 참고: 2차원 배열도 메모리상에는 1차원의 형태로 존재한다 ---2차원 배..
열혈 c프로그래밍 문제 14-1번(p320) #include int squareByValue(int n) { return n * n; } void squarebyreference(int* ptr) { int num = *ptr; *ptr = num * num; } int main(void) { int num = 10; printf("%d\n", squareByValue(num)); squarebyreference(&num); printf("%d\n", num); return 0; } squarebyreference 함수 안의 변수 num은 squarebyreference함수의 지역변수 num이 아니라, main함수에 있는 num이다. 매개변수를 통해 num에 대한 주솟값을 받았기 때문에 가능한 것이다. squareByValue 함수는 값을 반환해달..
( C )백준 11720번(공백없이 숫자 입력하기) N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백 없이 주어진다. 처음 접근했던 방식인데, 이렇게 코드를 작성하여 주면, 문제의 조건에서처럼 한 줄에 입력받을 수가 없다. #include int main(void) { int n, i, z; int total = 0; scanf("%d", &n); for (i = 1; i
배열을 함수의 인자로 전달받기(p314) #include void showarray(int* param, int len) { int i; for (i = 0; i < len; i++) printf("%d", param[i]); printf("\n"); } void add(int* param, int len, int add) { int i; for (i = 0; i < len; i++) param[i] += add; } int main(void) { int arr[3] = { 1,2,3, }; add(arr, sizeof(arr) / sizeof(int), 1); showarray(arr, sizeof(arr) / sizeof(int)); add(arr, sizeof(arr) / sizeof(int), 2); showarray(arr, sizeo..
코드업 1082번(16진수 구구단) 16진수(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)를 배운 영일(01)이는 16진수끼리 곱하는 16진수 구구단? 에 대해서 궁금해졌다. A, B, C, D, E, F 중 하나가 입력될 때, 1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자. (단, A ~ F 까지만 입력된다.) #include int main(void) { int n; int i; scanf("%X", &n); for (i = 1; i
코드업 1081번(중첩의 원리 ) 1부터 n까지, 1부터 m까지 숫자가 적힌 서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보는 문제이다. #include int main(void) { int n, m; int i,j = 0; scanf("%d %d", &n, &m); for (i = 1; i
코드업 1080번 1, 2, 3... 을 계속 더해 나갈 때, 그 합이 입력한 정수(0 ~ 1000) 보다 같거나 작을 때까지 계속 더하는 프로그램을 작성해보는 문제이다. 즉, 1부터 n까지 정수를 계속 더한다고 할 때, 어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다. 입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력한다. 처음으로 접근한 풀이방식인데, 풀다가 아닌 것 같음을 알아차리고 2번 코드 블록 방식의 풀이로 접근을 하였다. 1번 코드 블록 같이 작성을 하면 출력 값을 확인하려면 상당히 오래 키보드를 눌러야 할 것 같다. printf의 끝을 알리는 ; 옆에 break문이라도 있으면, 조금 더 편하겠지만 마찬가지로 오답이다. break가 있을 경우에는 어떤 정수를 입력하든 1이 나..
코드업 1055번(논리연산자 || 사용) 두 개의 참(1) 또는 거짓(0)이 입력될 때, 하나라도 참이면 참을 출력하는 프로그램을 작성해보는 문제이다. #include int main(void) { int a, b; scanf("%d %d", &a, &b); if ((a != 0) || (b != 0)) printf("1"); else printf("0"); return 0; } || 는 or라고 생각해주면 될 것 같다. or는 하나라도 1이 있으면 1을 반환하는 연산이다.