정보처리기사 실기 C 문제
###20년 1회
14번 출력 결과
#include <stdio.h>
main() {
int c=1;
switch(3){
case 1:c+=3;
case 2:c++;
case 3:c=0;
case 4:c+=3;
case 5:c-=10;
default : c--;
}
printf("%d",c);
}
-8
###20년 1회
20번 출력 결과
#include <stdio.h>
void align(int a[]){
int temp;
for(int i=0;i<4;i++)
for(int j=0;j<4-i;j++)
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
main() {
int a[]={85, 75, 50, 100, 95};
align(a);
for(int i=0;i<5;i++)
printf("%d",a[i]);
}
50758595100
###20년 3회
10번 출력 결과
#include <stdio.h>
int r1(){
return 4;
}
int r10(){
return(30+r1());
}
int r100(){
return(200+r10());
}
int main(){
printf("%d\n",r100());
}
234
###20년 4회
10번 출력 결과
#include <stdio.h>
main() {
char *p="KOREA";
printf("%s\n",p);
printf("%s\n",p+3);
printf("%c\n",*p);
printf("%c\n",*(p+3));
printf("%c\n",*p+2);
}
접기
KOREA
EA
K
E
M
###21년 1회
15번 출력 결과
#include <stdio.h>
void main(){
struct insa {
char name[10];
int age;
}a[] = {"Kim",28,"Lee",38,"Park",42,"Choi",31};
struct insa *p;
p = a;
p++;
printf("%s\n", p-> name);
printf("%d\n", p-> age);
}
Lee
38
###21년 2회
16번 출력 결과
int main(){
int res;
res = mp(2,10);
printf("%d",res);
return 0;
}
int mp(int base, int exp) {
int res = 1;
for(int i=0; i < exp; i++){
res *= base;
}
return res;
}
1024
###21년 2회
18번 출력 결과
int main(){
int ary[3];
int s = 0;
*(ary+0)=1;
ary[1] = *(ary+0)+2;
ary[2] = *ary+3;
for(int i=0; i<3; i++){
s=s+ary[i];
}
printf("%d",s);
}
8
###21년 3회
12번 출력 결과
#include <stdio.h>
int main(){
int *arr[3];
int a = 12, b = 24, c = 36;
arr[0] = &a;
arr[1] = &b;
arr[2] = &c;
printf("%d\n", *arr[1] + **arr + 1);
}
37
###21년 3회
17번 출력 결과
#include <stdio.h>
struct jsu {
char name[12];
int os, db, hab, hhab;
};
int main(){
<!-- struct jsu st[3] = \{\{"데이터1", 95, 88},
{"데이터2", 84, 91},
{"데이터3", 86, 75\}
\}; -->
struct jsu* p;
p = &st[0];
(p + 1)->hab = (p + 1)->os + (p + 2)->db;
(p + 1)->hhab = (p+1)->hab + p->os + p->db;
printf("%d\n", (p+1)->hab + (p+1)->hhab);
}
501
###22년 1회
12번 5를 입력받았을 때 출력 결과
#include <stdio.h>
int func(int a) {
if(a<=1) return 1;
return a*func(a-1);
}
int main(){
int a;
scanf("%d",&a);
printf("%d",func(a));
}
120
###22년 1회
15번 아래 프로그램은 정수를 역순으로 출력하는데 (1)(2)(3)에 들어갈 연산자를 쓰시오
#include <stdio.h>
int main() {
int number = 1234;
int div = 10;
int result = 0;
while (number ( 1 ) 0) {
result = result * div;
result = result + number ( 2 ) div;
number = number ( 3 ) div;
}
printf("%d", result);
return 0;
}
(1) : >
(2) : %
(3) : /
###22년 2회
8번 출력결과
#include <stdio.h>
struct A{
int n;
int g;
};
int main() {
struct A a[2];
for(int i=0;i<2;i++){
a[i].n=i, a[i].g=i+1;
}
printf("%d",a[0].n+a[1].g);
}
2
###22년 2회
15번 출력결과
#include <stdio.h>
int len(char*p);
int main(){
char*p1 = "2022";
char*p2 = "202207";
int a = len(p1);
int b = len(p2);
printf("%d", a+b);
}
int len(char*p){
int r = 0;
while(*p != '\0'){
p++;
r++;
}
return r;
}
10
###22년 2회
16번 출력결과
#include <stdio.h>
int main(int argc, char*argv[]) {
int a[4]={0,2,4,8};
int b[3]={};
int i=1;
int sum=0;
int *p1;
for(i;i<4;i++){
p1=a+i;
b[i-1]=*p1-a[i-1];
sum=sum+b[i-1]+a[i];
}
printf("%d",sum);
return 0;
}
22
###22년 3회
아래는 C언어의 2차원 배열 형태이다. field의 경우 2차원 배열 형태는 예시처럼 출력되므로, 이를 참고하여 mines의 2차원 배열 형태를 작성하시오.
#include <stdio.h>
void main(){
int mines[4][4] = \{\{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0\}\};
int field[4][4] = \{\{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1\}\};
int w = 4, h = 4;
for(int y=0; y<h; y++) {
for(int x=0;x<w;x++) {
if(field[y][x] == 0) continue;
for(int j=y-1;j<=y+1;j++) {
for(int i=x-1;i<=x+1;i++) {
if(chkover(w,h,j,i) == 1)
mines[j][i] += 1;
}
}
}
}
}
int chkover(int w,int h,int j,int i) {
if (i >= 0 && i < w && j >= 0 && j < h) return 1;
return 0;
}
1 1 3 2 3 4 5 3 3 5 6 4 3 5 5 3
###22년 3회
13번 출력결과
#include<stdio.h>
main(){
int s, el =0;
for(int i=6; i<=30; i++){
s=0;
for(int j=1; j<=i/2; j++){
if(i%j==0){
s=s+j;
}
}
if(s==i){
el++;
}
}
printf("%d", el);
}
2
###23년 1회
2번 출력결과
#include <stdio.h>
int main(void) {
char a[]="Art";
char*p=NULL;
p=a;
printf("%s\n",a);
printf("%c\n",*p);
printf("%c\n",*a);
printf("%s\n",a);
for(int i=0;a[i]!='\0';i++){
printf("%c",a[i]);
}
}
Art
A
A
Art
Art
###23년 1회
8번 출력결과
#include <stdio.h>
int main(void) {
char *a = "qwer";
char *b = "qwtety";
for (int i = 0; a[i] != '\0'; i++) {
for (int j = 0; b[j] != '\0'; j++) {
if (a[i] == b[j]) printf("%c", a[i]);
}
}
}
qwe
###23년 1회
10번 (가)는 연산자이고 (나)는 정수인데 빈칸을 알맞게 쓰시오.
#include <stdio.h>
int main(void) {
int input = 101110;
int di = 1;
int sum = 0;
while (input > 0) {
sum = sum + (input (가)(나) * di);
di = di * 2;
input = input / 10;
}
printf("%d", sum);
return 0;
}
(가 ) : %
(나) : 10 또는 2
###23년 1회
14번 (가) (나) 빈칸에 알맞은 변수를 쓰시오.
#include <stdio.h>
void swap(int* idx1, int* idx2) {
int t = *idx1;
*idx1 = *idx2;
*( 가 ) = t;
}
void Usort(int a[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (a[j] > a[j + 1])
swap(&a[j], &a[j + 1]);
}
}
for (int k = 0; k < 5; k++) {
printf("%d ", a[k]);
}
}
int main(void) {
int arr[] = {64, 34, 25, 12, 40};
int nx = 5;
Usort(arr, (나));
return 0;
}
(가) idx2
(나) nx
###23년 2회
1번
n[(i+1) % 5]
###23년 2회
2번 a,b,c,d의 빈칸에 알맞은 식을 <보기>에서 찾아쓰는데 <보기>를 최소한으로 쓰시오.보기>보기>
<보기>
1000
500
100
10
%
/
+
-
#include<stdio.h>
int main()
{
int m=4620;
int a,b,c,d;
a=(가)
b=(나)
c=(다)
d=(라)
printf("1000원 개수: %d",a);
printf("500원 개수: %d",b);
printf("100원 개수: %d",c);
printf("10원 개수: %d",d);
return 0;
}
(가) : m/1000
(나) : (m%1000)/500
(다) : (m%500)/100
(라) : (m%100)/10
###23년 2회
3번 다음 문제에서 홍길동, 김철수, 박영희 순서대로 입력했다고 할 때 출력결과
#include<stdio.h>
#include<stdlib.h>
char n[30];
char *test() {
printf("입력하세요 : ");
gets(n);
return n;
}
int main()
{
char * test1;
char * test2;
char * test3;
test1 = test();
test2 = test();
test3 = test();
printf("%s\n",test1);
printf("%s\n",test2);
printf("%s",test3);
return 0;
}
박영희
박영희
박영희
###23년 2회
5번 출력결과
#include<stdio.h>
int main(void)
{
int n[3] = {73, 95, 82};
int sum = 0;
for(int i=0;i<3;i++){
sum += n[i];
}
switch(sum/30){
case 10:
case 9: printf("A");
case 8: printf("B");
case 7:
case 6: printf("C");
default: printf("D");
}
return 0;
}
BCD
###23년 2회
7번 출력결과
#include<stdio.h>
int main(void){
int c=0;
for(int i = 1; i <=2023; i++) {
if(i%4 == 0) c++;
}
printf("%d", c);
return 0;
}
505
###23년 2회 9번 출력결과
#include<stdio.h>
#define MAX_SIZE 10
int isWhat[MAX_SIZE];
int point= -1;
void into(int num) {
if (point >= 10) printf("Full");
isWhat[++point] = num;
}
int take() {
if (isEmpty() == 1) printf("Empty");
return isWhat[point--];
}
int isEmpty() {
if (point == -1) return 1;
return 0;
}
int isFull() {
if (point == 10) return 1;
return 0;
}
int main(int argc, char const *argv[])
{
int e;
into(5);
into(2);
while(!isEmpty())
{
printf("%d", take());
into(4);
into(1);
printf("%d", take());
into(3);
printf("%d", take());
printf("%d", take());
into(6);
printf("%d", take());
printf("%d", take());
}
return 0;
}
213465
###23년 2회
18번 다음은 선택정렬을 하는 코드이다. (가)에 들어갈 기호를 쓰시오.
#include<stdio.h>
int main(void){
int E[] = {64, 25, 12, 22, 11};
int n = sizeof(E) / sizeof(E[0]);
int i = 0;
do {
int j = i + 1;
do {
if (E[i] (가) E[j]) {
int tmp = E[i];
E[i] = E[j];
E[j] = tmp;
}
j++;
} while (j < n);
i++;
} while (i < n - 1);
return 0;
}
(가) : >
댓글남기기