반응형
18. 다음 프로그램의 결과를 분석하라.
#include <stdio.h> int main() { int i[3] = { 100, 200, 300 }; int *iptr1, *iptr2; printf(" 1) i[0] = %5d; &i1 = %5u \n", i[0], &i[0]); printf(" 2) i[1] = %5d; &i2 = %5u \n", i[1], &i[1]); printf(" 3) i[2] = %5d; &i3 = %5u \n\n", i[2], &i[2]); iptr1 = &i[1]; printf(" 4) iptr1 = %5u; *iptr1 = %5u \n\n", iptr1, *iptr1); iptr1 += 1; printf("Adding 1 to POINTER varibale \n"); printf(" 5) iptr1 = %5u; *iptr1 = %5d \n\n", iptr1, *iptr1); *iptr1 += 1; printf("Adding 1 to TARGET varibale \n"); printf(" 6) iptr1 = %5u; *iptr1 = %5d \n\n", iptr1, *iptr1); iptr2 = iptr1; iptr2 -= 1; printf("Subtracting 1 from POINTER variable \n"); printf(" 7) iptr2 = %5u; *iptr2 = %5d \n\n", iptr2, *iptr2); *iptr2 -= 1; printf("Subtracting 1 from TARGET variable \n"); printf(" 8) iptr2 = %5u; *iptr2 = %5d \n\n", iptr2, *iptr2); printf("The final values \n"); printf(" 9) iptr1 = %5u; *iptr1 = %5d \n", iptr1, *iptr1); printf("10) iptr2 = %5u; *iptr2 = %5d \n\n", iptr2, *iptr2); return 0; }
19. 포인터와 반복문을 사용하여 다음과 같은 결과가 되도록 프로그램을 작성하라.
#include <stdio.h> int main() { char str[10] = "Program"; char* pt1 = str; int i = 0; for (; *pt1 != '\0'; pt1++) { printf(" %s \n", pt1); i++; } pt1--; for (; i > 2; i--) { --pt1; printf(" %s \n", pt1); } }
20. 포인터와 반복문을 사용하여 전광판의 문장이 움직이는 것과 같이 문자열이 왼쪽, 오른쪽으로 반복하여 이동하는 프로그램을 작성하라.
#include <stdio.h> #include <stdlib.h> // system("cls"); #include <windows.h> // Sleep(100); int main() { char str[15] = " Programing"; char* pt1 = &str[14]; while (1) { for (int i = 0; i < 14; i++) { printf("%s", pt1); Sleep(100); system("cls"); pt1--; } for (int i = 0; i < 14; i++) { printf("%s", pt1); Sleep(100); system("cls"); pt1++; } } }
21. 2진수를 받아들여 10진수로 변환하는 프로그램을 작성하라.
#include <stdio.h> #include <math.h> int strfBtD(char* Binary); int main() { char input[100] = "10000"; int ok = 0; do { printf("첫번째 2진수를 입력하세요 :"); scanf_s("%s", input, 100); while (getchar() != '\n') {} for (int i = 0; input[i] != '\0'; i++) { if (!(input[i] == '0' || input[i] == '1')) { printf("잘못입력하셨습니다. \n"); ok = 1; break; } else { ok = 0; } } } while (ok); printf("%d \n", strfBtD(input)); } int strfBtD(char* Bin) { char* Binary = Bin; int Decimal = 0; int positional = 0; while (*Binary) { //포인터 Binary를 문자열 끝 Null문자로 보냄 Binary++; positional++; } Binary--; //널문자 직전에 위치시킴 for (int i = 0; i < positional; i++) { if (*Binary == '1') { Decimal += (int)pow(2, i); } Binary--; } return Decimal; }
22. 문장을 문자열로 입력받고 하나의 문자를 키로 받아서 받은 문자로 문자열의 모든 문자를 XOR한 후 결과를 출력하는 프로그램을 작성하라.
#include <stdio.h> #include <string.h> char* xorString(char* string, char key); int main() { char string[100]; char key; printf("Input string : "); scanf_s("%[^\n]s", string, 100); while (getchar() != '\n') {} printf("Input key :"); scanf_s("%c", &key, sizeof(char)); printf("%s \n", xorString(string, key)); } char* xorString(char* string, char key) { char* p1 = string; static char result[100]; int len = strlen(string); for (int i = 0; i < 100; i++) { result[i] = ' '; } for(int i = 0; i < len; i++, p1++) { result[i] = *p1 ^ key; } result[len] = '\0'; printf("%s \n", result); return result; }
//Is this what you want? 문제가 원한게 이런게 맞나...?
반응형