컴퓨터과학과

컴퓨터과학과 학생 게시판

조회 수 1915 추천 수 0 댓글 1

<제 3 장>
3-6.printf문 수정하기
#include <stdio.h>
#include <conio.h>
void main()
{
int i,j;
long ix;
short a;
unsigned u;
float x;
double dx;
char c;
clrscr();
i=22; j=22222; //결과 확인을 위해 임의로 넣음
x=0.0023; dx=14.23235; //결과 확인을 위해 임의로 넣음
printf("%4d \n%4d \n%14.8e \n%14.8e \n",i,j,x,dx);
}
=>위의 printf()에서 보듯이 출력변환문자사이에 \n을 넣어주면 됩니다.
교재에는 '%14.8e'가 하나 더 있는데, 오류인 듯 합니다. '%출력변환문자'와 변수의 수는 일치해야 합니다.
* '%4d'는 십진수를 int형으로 출력하는데 자리수를 4자리 확보하여 오른쪽으로 정렬하여 출력하며, 왼쪽 정렬하고 싶으면 '%-4d'라고 표시하면 됩니다. 또한 출력할 수가 정해놓은 자리수 '4'보다 많으면 4자리 확보한 것을 무시하고 그냥 원래 데이터를 그대로 출력합니다.
 
* '%14.8e'는 부동소수점 수를 지수형식으로 출력하는데, 전체자리수는 14자리를 확보하고, 그 중에서 소수점 이하를 8자리로 출력합니다. 이럴 때 혹시 소수점 9째 자리가 있었다면, 9째 자리에서 반올림하여 소수점 이하 8자리까지 출력합니다. 또한 전체자리수 14자리란 소수점과 지수표현 모두를 포함합니다. 프로그램을 실행하여 확인해 보시기 바랍니다.
 

3-7.물음에 답하기
#include <stdio.h>
#include <conio.h>
void main()
{
int i,j,k;
 
(1) i,j,k가 decimal integer인 경우 scanf()문 작성하기
scanf("%d%d%d",&i,&j,&k);
printf("%d\t%d\t%d\n",i,j,k);
 
(2) i,j는 16진수, k는 8진수인 경우 scanf()문 작성하기
scanf("%x%x%o",&i,&j,&k);
printf("%d\t%d\t%d\n",i,j,k);
 
}
 
* 10진수인 경우에는 %d로 표현하고, 숫자의 입력은 -32768~32767까지 입력하면 됩니다.
* 8진수의 경우에는 %o로 표현하고, 숫자의 입력은 0~7까지의 숫자로만 표현하되,
(100000~177777)-(0~77777)까지 입력이 가능합니다.
* 16진수의 경우에는 %x로 표현하고, 숫자의 입력은 0~9,A,B,C,D,E,F로 표현하되, (8000~ffff)-(0~7fff)까지 입력이 가능합니다.
 

3-8. 공란을 질문과 같이 채우기
#include <stdio.h>
#include <conio.h>
void main()
{
int a=8086;
printf("% \n",a); //(가)
printf("% \n",a); //(나)
printf("% \n",a); //(다)
}
=>(1)은 4d, (2)은 50 , (3)은 4x
*정수자료형에서 10진수는 %d, 8진수는 %0, 16진수는 %x로 각각 사용되는 것을 기억하세요.
 
3-9. 입력데이터에 따라 변수에 저장되는 값을 알아보기.
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b,c;
//(1)input data 123 456 789
scanf("%3d%3d%3d",&a,&b,&c);
printf("input data %d %d %d\n",a,b,c); //=>123 456 789
 
//(2)input data 123456789
scanf("%3d%3d%3d",&a,&b,&c);
printf("input data %d %d %d\n",a,b,c); //=>123 456 789
 
//(3)input data 1234 5678 9
scanf("%3d%3d%3d",&a,&b,&c);
printf("input data %d %d %d\n",a,b,c); //=>123 4 567
}
=>(1)과 (2)는 그대로 3개씩 3개의 데이타가 입력됨.
(3)은 123을 &a에 저장하고, 4를 &b에 저장하고, 567을 &c에 저장합니다.
*여기서 중요한 것은 printf() 출력문은 출력자료가 자리수보다 많으면 자리수를 무시하고 자료를 모두 출력하지만, scanf() 입력문은 자리수를 지정하면 지정한 자리수 만큼만 자료를 저장한다는 것입니다. 또한 입력할 때 하나의 자료라고 판단하는 것이 공백이나 엔터키 앞부분까지입니다. 즉, 공백도 엔터키로 인정하는 것이지요.
 
*위에서 (1)과 (2)는 별로 문제 될 것이 없습니다. (1)은 자리수와 입력수가 맞으므로 그냥 출력이 되고, (2)는 3개씩 차례로 변수에 저장시킵니다. (3)은 123을 &a에 저장하고 나면 4다음에 공백이 있죠. 그러므로 &b에는 4가 저장이 되죠. &c에는 567이 저장되고 8과 9라는 두개의 자료는 변수에 저장되지 않은채 그대로 남아 있습니다.
 
3-10.연산자 우선순위를 괄호로 묶어 나타내고 연산결과 쓰기
#include <stdio.h>
#include <conio.h>
void main()
{
int i,j,k,m,n;
i=j=k=m=n=3;
i+=++j+3; //(1) i+=((++j)+3) => i=4+3+3=10
k%=m=1+n/2; //(2) k%=(m=(1+(n/2))) => k%=(m=1+1) => k=k%2 => k=3%2 => k=1
printf("i+=++j+3=>%d\n",i);
printf("k%%=m=1+n/2=>%d\nm=%d\n",k,m);
}
=>(2)의 경우 n/2=3/2이죠. 근데 자료형이 정수형이므로 소수점 이하는 무조건 잘립니다. 그래서 1.5=1이 되는 겁니다.
m=1+1 => m=2가 되지요. k=k%2에서 k=3이므로 3/2면 몫=1, 나머지=1 이 되는 겁니다.
 
3-11.프로그램의 출력결과 확인하기.
#include <stdio.h>
#include <conio.h>
void main()
{
char a='A',b='B';
printf("\n%c \n%c",a,b);
printf("\n%c \t%c",a,b);
printf("\n%c \b%c",a,b);
printf("\n%c %c\r",a,b);
}
=>A
B ->A 공백 한 칸 줄바꿈(\n) 후 B 출력
A B ->A 공백 한 칸 탭키(\t)만큼 이동 후 B 출력
AB  ->A 공백 한 칸 한 칸 앞으로 커서이동(\b) 후 B 출력
A B  ->A 공백 한 칸 B 출력 후 행의 맨 첫 열로 커서이동(\r)
 
3-12.프로그램의 결과 쓰기
#include <stdio.h>
#include <conio.h>
void main()
{
int a=5,b=9;
printf("%d %d\n",++a,a); //++a=6,a=5
printf("%d %d\n",a++,a); //a++=6,a=6
printf("%d %d\n",--b,b); //--b=8,b=9
printf("%d %d\n",b--,b); //b--=8,b=8
}
=>6 5 ->a=5 다음 좌측으로 이동 ++a=6
6 6 ->a=6 다음 좌측으로 이동 a++=6 (최종 a의 값은 7<출력되지 않았음>)
8 9 ->b=9 다음 좌측으로 이동 --b=8
8 8 ->b=8 다음 좌측으로 이동 b--=8 (최종 b의 값은 7<출력되지 않았음>)
 
*이 문제는 증감연산자의 연산순서를 잘 이해하셔야 하며, 결합방향도 제대로 숙지하셔야 합니다. 단항연산자, 조건연산자, 대입연산자는 우측에서 좌측으로 결합하여 연산을 하며, 그 외의 다른 연산자들은 모두 좌측에서 우측으로 결합하여 연산을 합니다.
 
3-13. 논리연산식의 결과쓰기
(1) 1 (2) 0 (3) 1(w=119 아스키값) (4) 1 (5) 0 (6) 0 (7) 0 (8) 1
 
3-14.키보드에서 정수 2개의 정수 데이터를 입력받아 사칙연산을 수행하고 결과를 출력하기.
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b; //입력변수를 정수자료형으로 선언
int sum,sub; //덧셈, 뺄셈 변수선언
long mul; //곱셈변수를 long형으로 선언
float div; //나눗셈변수를 실수형으로 선언
scanf("%d%d",&a,&b); //2개의 정수를 입력받음(-32768~32767)
sum=a+b;
sub=a-b;
mul=(long)a*b; //곱셈변수가 long형이므로 a*b를 long형으로 강제변환
div=a/b;
printf("sum=%d\nsub=%d\nmul=%ld\ndiv=%f\n",sum,sub,mul,div);
}
 
3-15.다음 문장은 잘못되어 있다. 올바르게 고치시오.
(1) scanf("%d",value); => scanf("%d",&value);
 
(2) printf("The product of %d and %d is %d"\n,x,y);
=>printf("The product of %d and %d is %d\n",x,y,z);
 
(3) firstnumber + secondnumber = sumofnumbers
=>sumofnumbers = firstnumber + secondnumber
 
(4) if(number=>largest)
latgest==number;
=>if(number>=latgest) => '=>'을 '>='로
latgest=number;
 
(5) Scant("%d",anInteger); =>scanf("%d",&anInteger);
=>Scant이 아니라 scanf이며 변수앞에는 &를 사용해야 함
 
(6) printf("Remainder of %d divided by %d is\n",x,y,x%y);
=>printf("Remainder of %d divided by %d is\n",x,y,x%y); =>x%y는 %f(실수)형태로 사용해서는 안됨.
출력양식 변환기호의 갯수가 틀리다.
 
(7) if(x=y); =>'='은 할당문에 사용
printf(%d is equal to %d\n",x,y); =>%d앞에 "가 빠져있음
=>if(x==y);
printf("%d is equal to %d\n",x,y);
 
(8) printf("The sum is %d\n,"x+y);
=> printf("The sum is %d\n",x+y); =>','의 위치가 잘못됨
 
(9) printf("The value you entered is : %d\n, &value);
=>printf("The value you entered is : %d\n", value); => "가 빠져 있으며, 출력문에는 &사용안함
  • ?
    하품잉 2022.11.29 19:56
    비회원은 댓글은 읽을 수 없습니다.
    로그인 후에 바로 열람 가능합니다 ^^

컴퓨터과학과

컴퓨터과학과 학생 게시판

List of Articles
번호 분류 제목 글쓴이 조회 수 날짜
공지 (필독) 공지 모음 / 방송대 커뮤니티 포인트 얻는 방법 및 입문서 416 게시판관리 10116 2022.12.24
공지 방송통신대학교 커뮤니티 홍보하고 포인트 적립하자! 73 게시판관리 4700 2023.09.20
공지 🎖 활동 메달 안내 및 기준 49 게시판관리 1742 2025.07.30
공지 📢자료 업로드 규정안내 (AI사용여부·출처 표기 의무화)자료 재동록자 적발 시 차단 19 게시판관리 1098 2025.11.14
1099 일반 방통대 컴퓨터과학과 수강 순서 추천 (신편입생 필독) new 홍홍이 15 2026.03.13
1098 일반 컴퓨터과학과 난이도 new 짜장부비 15 2026.03.13
1097 일반 전북 데이터정보처리입문 은인기교수님 돌베기 18 2026.03.12
1096 과공지 [특강] 손진곤 교수 신간 출간기념 특별 북토크 안내 file noir 36 2026.03.10
1095 과공지 컴과 연합스터디 포토샵 GTQ 1급 첫수업 안내 (3/11 21시) noir 30 2026.03.10
1094 일반 경기(성남) 데이터베이스시스템 출석수업 시간표 나왔나요? 1 holiday 47 2026.03.09
1093 그외 안녕하세요... 동순 76 2026.03.06
1092 일반 [서울지역] 3학년 편입생 질문드립니다. 아진아빠 83 2026.03.05
1091 일반 2026 올해 최우수 졸업 했네요.... 10 file jsean 263 2026.02.27
1090 일반 Spotify 학생할인 및 3개월 무료 프로모션 입니다. 1 예린지 112 2026.02.25
1089 일반 튜터 개인정보 동의 문의드립니다. 1 잉개 64 2026.02.25
1088 질문 교재가 없는 과목 질문드립니다. file abcddcba 111 2026.02.23
1087 질문 3학년 편입시 학점 조회 질문 3 file 길버트v 110 2026.02.23
1086 질문 예비3학년 컴퓨터 과학과수강신청 질문드립니다. 1 file 길버트v 107 2026.02.23
1085 일반 컴과 3학년 편입생 수강신청.. 4 file 홍잴리 172 2026.02.22
1084 일반 대면수업, 비대면 수업이 같은 날 1 해미니 140 2026.02.21
1083 질문 안녕하세요, 컴퓨터과학과 단톡방과 관련하여 문의드립니다. (입장 비번 관련) 5 Nongrata 279 2026.02.16
1082 과공지 컴퓨터과학과 2026-1 연합스터디 file noir 232 2026.02.13
1081 일반 학생할인 - 제주호텔 2 file 예린지 158 2026.02.11
1080 과공지 26_1학기 컴퓨터과학과 서울지역 OT 일정 file noir 184 2026.02.11
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 55 Next
/ 55