티스토리 뷰
컴퓨터프로그래밍 9주 Quiz
(문제 1) 두 정수 x, y를 입력받고 두 수중에 큰 수를 작은 수로 나눈 몫과 나머지를 출력하는 프로그램을 완성하시오.
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int x, y;
printf("1번 학번 이름\n");
while (1) { // 그대로 두면 계속 테스트 할 수 있음 그대로. 이용할 것
scanf("%d %d", &x, &y);
// 큰 수를 작은 수로 나눈 몫과 나머지 출력
if(x>y)
printf("몫:%d 나머지:%d\n", x / y, x % y);
else
printf("몫:%d 나머지:%d\n", y / x, y % x);
}
return 0;
}
(문제 2) 초를 입력하면 일, 시간, 분, 초로 계산해서 출력하는 프로그램을 작성하시오.
(단 각각의 일, 시, 분, 초가 0인 경우는 출력하지 않는다. 실행 화면 참고)
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int sec, dd, hh, mm, ss; // 필요하면 변수 추가
while (1) { // 그대로 두면 계속 테스트할 수 있음. 종료는 CTRL-C
// sec 입력
scanf("%d", &sec);
// dd일, hh시간, mm분, ss초로 계산
ss = sec % 60;
sec /= 60;
mm = sec % 60;
sec /= 60;
hh = sec % 12;
sec /= 12;
dd = sec/2;
// 실행화면처럼 각각의 값이 0이 아닌 경우만 일, 시간, 분, 초를 출력한다.
if(dd)
printf("%d일 ", dd);
if (hh)
printf("%d시간 ", hh);
if(mm)
printf("%d분 ", mm);
if(ss)
printf("%d초 ", ss);
printf("\n");
}
return 0;
}
(문제 3) 사용자가 입력한 정수 x의 모든 약수들과 약수들의 합을 출력하는 프로그램을 작성하시오.
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i, x, sum;
printf("분반 학번 이름\n");
// x 입력
scanf("%d", &x);
sum = 0;
// 반복문 사용 x의 약수를 출력하고 sum을 계산
for (i = 1; i <= x; i++)
{
if (x % i) continue;
sum += i;
printf("%d ", i);
}
printf("\nsum = %d\n", sum);
// sum 을 출력
return 0;
}
(문제 4) 화면과 같이 구구단을 가로로 출력하고 각 줄의 끝에 합을 출력하는 프로그램을 완성하시오. (주의 : 구구단이 가로로 나옴. 정렬이 맞아야 함)
(곱하기 결과는 “%2d ” 로 출력하고 가로줄 합 출력은 “%3d” 로 정렬을 맞출 것)
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i, j, sum;
printf("4번 학번 이름\n");
// for 문 2개를 사용하여 구구단과 각 줄의 끝에 합을 출력
for (int i = 2; i < 10; i++)
{
sum = 0;
for (int j = 1; j < 10; j++)
{
printf("%d*%d=%2d ", i, j, i * j);
sum += i * j;
}
printf("+= %3d\n", sum);
}
return 0;
}
(문제 5) 1 ~ n 까지 합, 홀수합, 짝수합을 구하는 함수 sum(), oddsum(), evensum()을 완성하시오. 단, sum() 함수는 for()문을 사용, oddsum()은 while()문 사용, evensum()은 do~while() 문을 사용하여야 한다.
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int sum(int n) // 합, for 사용
{
int sum = 0;
for (int i = 1; i <= n; i++)
{
sum += i;
}
return sum;
}
int oddsum(int n) // 홀수의 합, while 사용
{
int sum = 0;
while (n > 0) {
if (n % 2) sum += n;
n--;
}
return sum;
}
int evensum(int n) { // 짝수의 합, do ~ while 사용
int sum = 0;
do {
if (!(n % 2)) sum += n;
n--;
} while (n > 0);
return sum;
}
int main()
{
printf("5번 학번 이름\n");
printf("sum(100)=%d oddsum(100)=%d evensum(100)=%d\n", sum(100), oddsum(100), evensum(100));
return 0;
}
(문제 6) 주어진 프로그램은 실행화면(1)의 결과이다. 이 프로그램을 이용하여 (2), (3), (4) 화면과 같이 나오도록 완성하시오. (3), (4) 은 알파벳 출력 전에 빈칸이 나와야 함.
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
char c1, c2;
printf("6번 학번 이름\n");
// (1)번
for (c1 = 'A'; c1 <= 'Z'; c1++) {
for (c2 = 'A'; c2 <= c1; c2++) {
printf("%c", c2);
}
printf("\n");
}
printf("\n");
// (2)번 완성
for (c1 = 'Z'; c1 >= 'A'; c1--) {
for (c2 = c1; c2 <= 'Z'; c2++) {
printf("%c", c2);
}
printf("\n");
}
printf("\n");
// (3)번 완성 – 알파벳 출력 전에 빈칸을 먼저 출력해야 함
for (c1 = 'A'; c1 <= 'Z'; c1++) {
for (int i = 'Z'; i > c1; i--)
{
printf(" ");
}
for (c2 = c1; c2 >= 'A'; c2--) {
printf("%c", c2);
}
printf("\n");
}
printf("\n");
// (4)번 완성 – 알파벳 출력 전에 빈칸을 먼저 출력해야 함
for (c1 = 'Z'; c1 >= 'A'; c1--) {
for (int i = 'Z'; i > c1; i--)
{
printf(" ");
}
for (c2 = c1; c2 >= 'A'; c2--) {
printf("%c", c2);
}
printf("\n");
}
printf("\n");
}
(문제 7) 소수(prime number)는 1과 자기 자신 외에 약수가 없는 수이다.
isNotPrime(int n) 함수는 n이 소수이면 0을 소수가 아니면 1을 return한다. isNotPrime(int n) 함수를 완성하고, 이를 이용해서 100 ~ 200 사이의 소수가 아닌 수들을 출력하고 그 합을 출력하는 프로그램을 완성하시오.
(단, 함수는 추가하지 말고 isNotPrime() 함수만 완성해서 사용할 것. main()이나 isNotPrime() 함수 안에서 변수 추가는 가능함.)
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int isNotPrime(int n) { // n이 소수이면 0, 소수가 아니면 1을 return, 완성하시오
for (int i = 2; i <= n/2; i++)
{
if (!(n % i)) return 1;
}
return 0;
}
int main()
{
int i, sum;
printf("7번 학번 이름\n");
sum = 0;
// isNotPrime()함수 이용 100 ~ 200 사이의 소수가 아닌 수를 출력하고
for (int i = 100; i <= 200; i++)
{
if (isNotPrime(i)) {
printf("%d ", i);
sum += i;
}
}
// 합(sum)을 구한다.
printf("\nsum = %d\n", sum);
return 0;
}
(문제8) rand()함수는 0~32767 사이의 난수값을 return한다. rand() 함수를 이용하여 10,000 ~ 20,000 사이의 난수 r을 100번 구하고 r이 소수(Prime Number, 1과 자기 자신 외에 약수가 없는 수)이면 그 수를 출력하고 합을 구해서 출력하는 프로그램을 완성하시오.
(srand()는 생략한다. 변수나 함수 추가해도 됨.)
(1) 화면 Capture
(2) 프로그램 소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 필요하면 함수나 변수 추가해도 됨
int isPrime(int n) { // n이 소수이면 1, 소수가 아니면 0인 함수
for (int i = 2; i <= n / 2; i++)
{
if (!(n % i)) return 0;
}
return 1;
}
int main()
{
int T, r, sum;
printf("8번 학번 이름\n");
// srand() 는 생략
srand(time(NULL));
sum = 0;
// 100번 rand() 이용 10,000~20,000 수를 구하고
for (int i = 0; i < 100; i++)
{
r = 10000 + rand() % 10001;
// 그 수가 소수이면 출력하고 합을 출력한다.
if (isPrime(r)) {
printf("%d ", r);
sum += r;
}
}
printf("+= %d\n", sum);
return 0;
}
'2024 컴퓨터 프로그래밍 퀴즈' 카테고리의 다른 글
한성대학교 컴퓨터 프로그래밍 11주차 퀴즈(과제) (0) | 2024.05.13 |
---|