4장 예제 및 종합문제
QUESTION 4-1.
텍스트 박스에서 입력받은 점수가
50점 이상이면 레이블에
'합격' 이라고 출력하는
프로그램을 작성하여라.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer '변수 i 선언
i = Text1.Text '변수 i에 Text1 내용 저장
If i >= 50 Then Label1.Caption = "합격" 'i가 50이상일 때 Label1에 합격 출력
End Sub
PROGRAM 4-1.
If문을 이용하여 통신요금 계산
프로그램을 작성한다.
PROGRAM 4-4.
입력 받은 수의 종류를
판별한다.
QUESTION 4-2.
텍스트 박스에서 입력받은 점수가
90 이상이면 '우수'
60 이상 90 미만이면 '보통'
60 이하이면 '미흡'으로 레이블을
표시하는 프로그램을 작성하여라.
Option Explicit
Private Sub Command1_Click()
Dim num As Integer
num = CInt(Text1.Text)
Select Case num
Case Is >= 90
Label1.Caption = "우수"
Case Is >= 60
Label1.Caption = "보통"
Case Else
Label1.Caption = "미흡"
End Select
End Sub
PROGRAM 4-6.
0으로 나누려는 오류 프로그램의
문제를 해결한다.
목표완성1.
세 과목 성적을 입력받아
평점을 계산하는 프로그램을
작성해보자.
PROGRAM 4-10.
합계가 50을 초과할 때의 n갑과 합계를
출력한다.(Do While ~Loop문 사용)
목표완성2.
직각 삼각형과 역 직각 삼각형
PROGRAM 4-11.
배열에 입력 받은 값을
기억시키고 계산한다.
PROGRAM 4-12.
배열에 할당된 행과
열의 값을 바꾸어 출력한다.
예제4.
최댓값 출력
합격 판정
약수 구하기
Option Explicit
Private Sub Command1_Click()
Dim a(4) As Integer
Dim i As Integer
Dim j As Integer
Dim temp As Integer
a(0) = 5
a(1) = 3
a(2) = 1
a(3) = 2
a(4) = 4
For i = 0 To 4
Label1.Caption = Label1.Caption & a(i) & " "
Next i
For i = 0 To 4
For j = 0 To 4
If a(i) > a(j) Then 'a(i)와 a(j) 비교
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
Next i
For i = 0 To 4
Label2.Caption = Label2.Caption & a(i) & " "
Next i
종합 문제2.
1부터 100까지의 숫자 중
소수를 출력하는 프로그램을
작성하여라.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim prime(1 To 100) As Boolean '논리형 배열 변수 prime 크기는 100
For i = 2 To 100
For j = 2 To i - 1
If i Mod j = 0 Then 'i와 j를 나눠 나머지가 0일 때
prime(i) = True 'prime(i)에 '참' 저장
End If
Next j
Next i
For i = 2 To 100
If prime(i) = False Then 'Boolean 기본값 False. True로 안바뀐 값들 일 때
Print i
End If
Next i
End Sub
종합 문제3.
아래 표와 같은 기준에 따라 성적을
입력받아 학점을 계산해주는
프로그램을 작성하여라.
Option Explicit
Private Sub Command1_Click()
Dim num As Integer
num = Val(Text1.Text)
Select Case num
Case Is >= 95
Label2.Caption = "A+"
Case Is >= 90
Label2.Caption = "A"
Case Is >= 85
Label2.Caption = "B+"
Case Is >= 80
Label2.Caption = "B"
Case Is >= 75
Label2.Caption = "C+"
Case Is >= 70
Label2.Caption = "C"
Case Else
Label2.Caption = "F"
End Select
End Sub
종합 문제4.
(★가장 어려웠던 문제.)
두 개의 배열 a, b에 있는 데이터를
배열 c에 오름차순 정렬하여
옮기는 프로그램을 작성하여라.
단, 배열 a, b에 저장된 데이터는
오름차순 정렬되어 있으며, 같은
데이터는 없다고 가정한다.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer
Dim a(4) As Integer
Dim b(4) As Integer
Dim c(9) As Integer
Dim a_index As Integer, b_index As Integer, c_index As Integer
a(0) = 5
a(1) = 7
a(2) = 11
a(3) = 28
a(4) = 46
b(0) = 6
b(1) = 13
b(2) = 14
b(3) = 29
b(4) = 47
Do While a_index <= 4 And b_index <= 4 And c_index <= 9 'a(4), b(4), c(9)일 때 동안.
If a(a_index) > b(b_index) Then 'a(?) > b(?)
c(c_index) = b(b_index) '배열 c에 b의 데이터 옮기기
c_index = c_index + 1
b_index = b_index + 1
Else 'a(?) < b(?)
c(c_index) = a(a_index) '배열 c에 a의 데이터 옮기기
c_index = c_index + 1
a_index = a_index + 1
End If
Loop '탈출 시 a(5) b(4) c(9). 나오기 전에 a(4)=46을 c(8)에 넣었다.
Do While b_index <= 4 'b_index의 값이 4보다 작거나 같을 때. 현재 b_index의 값은 4
c(c_index) = b(b_index) '배열c에 b의 데이터 옮기기
b_index = b_index + 1 '탈출 조건
Loop
'이하 출력문
For i = 0 To 4
Label1.Caption = Label1.Caption & " " & a(i)
Next i
For i = 0 To 4
Label2.Caption = Label2.Caption & " " & b(i)
Next i
For i = 0 To 9
Label3.Caption = Label3.Caption & " " & c(i)
Next i
End Sub