티스토리 뷰
1. level 1-1
실행결과를 기술하라
dnum의 주소를 포인터 dp에 저장
*dp=1.5; 로 1.5가 저장되었고 다음 코드로 1.5가 다시 더해져 dnum의 값은 3.0이 된다.
dnum: 3.0, *dp: 3.0
2. level 1-2
문자 배열에 저장된 문자열을 포인터를 사용해 한 문자씩 출력하는 프로그램
사실 printf 할때 언제* 붙이고 안붙이는지 잘 모르겠다
문자 배열에는 *ptr 을 쓰는구나
그리고 while 문 안에 코드 두 줄이 들어가있는데 한줄만 썼다
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
int main()
{
char msg[100] = "Hello World !!!";
char* ptr;
printf("msg : %s \n", msg);
ptr = msg; //포인터 변수에 msg 배열 주소 저장
while (*ptr)
{
printf("%c ", *ptr++);
}
printf("\n");
return 0;
}
결과
msg : Hello World !!!
H e l l o W o r l d ! ! !
3. level 2-1
str 문자배열의 문자열을 tmp 문자배열에 복사하는 프로그램
(strcpy()사용 불가, 문자열 복사 시 포인터 변수 활용)
마찬가지로 while문에 두 줄을 넣어야하는데 한 줄로만 완성했다.
마지막 *to에 \0 으로 null 문자를 추가할 때 "\0" 으로 대입해 실행에 실패했다.
*to = '\0'; 로 작은 따옴표를 이용해야했다.
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
int main()
{
char str[50] = "Multi Campus.", tmp[50];
char* from, * to;
from = str;
to = tmp;
while (*from)
{
*to++ = *from++;
}
*to = '\0'; //NULL 문자 추가
printf("str: %s, tmp: %s \n", str, tmp);
return 0;
}
결과
str: Multi Campus., tmp: Multi Campus.
4. level 2-2
str 배열에 저장된 문자열을 역순으로 출력하는 프로그램
이번에도 역시 while문의 두줄짜리 문제를 한 줄로만 해결했다
ptr에 시작 주소를 str의 마지막 문자의 주소로 저장해야하는 문제다.
이때 다른 방법이 기억나지 않아 그냥 &str[12] 로 주소를 지정해줬다...
다른 방법 있으면 댓글 바람
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
int main()
{
char str[50] = "Multi Campus.", tmp[50];
char* ptr;
printf("str : %s \n", str);
printf("str 역순 : ");
ptr = &str[12]; //시작주소 저장
while (ptr>=str) //반복할 조건
{
printf("%c ", *(ptr--));
}
printf("\n");
return 0;
}
결과
str : Multi Campus.
str 역순 : . s u p m a C i t l u M
5. level 3-1
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
int main()
{
double dNum[5], dSum = 0.0;
double* ptr;
int i, size;
size = sizeof(dNum) / sizeof(dNum[0]);
ptr = dNum;
for (i = 0; i < size; i++)
{
printf("%d, 실수 입력? ", i + 1);
scanf("%lf", ptr + i);
dSum += *(ptr + i);
}
printf("\n입력된 dNum 배열 데이터 \n");
for (i = 0; i < size; i++)
printf("%.2lf, ", dNum[i]);
printf("\ndNum 배열의 합: %.2lf \n", dSum);
return 0;
}
결과
1, 실수 입력? 5.1
2, 실수 입력? 6.1
3, 실수 입력? 7.1
4, 실수 입력? 8.1
5, 실수 입력? 9.1
입력된 dNum 배열 데이터
5.10, 6.10, 7.10, 8.10, 9.10,
dNum 배열의 합: 35.50
6. level 3-2
실행결과를 기술하라
msg 배열에는 C Programming. 이 들어있다.
func1 함수를 실행하고 msg를 printf 한다.
func1 함수는 주소를 받아 배열의 문자가 알파벳 대문자일 경우 소문자로 바꿔준다.
따라서 결과는
c progrmming.
이다.
7. level 3-3
실행결과를 기술하라
num 배열에 100, 200,...500 을 저정하고 Func1 함수를 실행했다.
Func1 함수는 배열을 받아 주소 사이즈를 출력한다.
그리고 다섯번 반복하며 배열을 출력한다.
따라서 결과는
tmp sizeof : 8
100, 200, 300, 400, 500,
이다.
○문제에서 i를 왜 선언했는지 모르겠다. int i 는 필요없다.
'흔한 생활 > 잡다한 공부' 카테고리의 다른 글
[C언어] 든든한 C 프로그래밍 3판 12장 연습문제 답 풀이 (0) | 2023.07.11 |
---|---|
[C언어] 든든한 C 프로그래밍 3판 11장 연습문제 답 풀이 (0) | 2023.07.10 |
[C언어] 든든한 C 프로그래밍 3판 9장 워크북 답 풀이 (0) | 2023.07.08 |
[C언어] 든든한 C 프로그래밍 3판 10장 연습문제 답 풀이 (0) | 2023.07.07 |
[C언어] 든든한 C 프로그래밍 3판 9장 연습문제 답 풀이 (1) | 2023.07.06 |
- Total
- Today
- Yesterday
- 경북대
- 배송기간
- 티스토리챌린지
- Liiv M
- 타란튤라
- 카카오페이
- a모바일
- f-91w
- 리브엠
- 알뜰 요금제
- 메쉬 밴드
- 방어동작
- 방향장
- 맛집
- 파스타
- 문서 스캔
- 리브모바일
- 교체
- 북문
- 네이버페이
- 알뜰폰요금제
- 계산방법
- 카시오
- mealy
- f-94w
- 알리익스프레스
- 할인
- 오블완
- 10만포인트
- 시계 줄
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |