[Layer7] C언어 2차시 과제

cette·2025년 4월 6일
0

반복문

2739 구구단

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

#include <stdio.h>
#include <string.h>
int main() {
    int n=0;
    scanf("%d",&n);
    for (int i=1;i<10;i++){
        printf("%d * %d = %d\n",n,i,n*i);
    }
}

n을 입력받는다. 이때의 n은 단 역할을 한다. 구구단이 1~9까지 출력되야 하니까 i를 1부터 9까지 돌도록 for문을 돌린다. for문 안에서 printf문을 통해 n단이 i번(1부터 9)까지 돌도록 출력한다.

10950 A+B-3

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
#include <string.h>
int main() {
    int a,b;
    int t;
    scanf("%d",&t);
    for (int i=1;i<=t;i++){
        scanf("%d",&a);
        scanf("%d",&b);
        printf("%d\n",a+b);
        }
    return 0;
}

8389 합

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int n=0;
    scanf("%d",&n);
    int num=0;
    for(int i=1;i<=n;i++){
        num=num+i;
    }
    printf("%d",num);
}

두 정수 a와 b를 입력받는다. for문이 몇번 돌지 정하는 t 변수를 입력받는다.
t변수 값 만큼 for문이 돌면서 a와 b가 입력받아지고 prinf문을 통해 출력받는다.

25304 영수증

영수증에 적힌 구매한 각 물건의 가격과 개수, 구매한 물건들의 총 금액
을 보고 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.

#include <stdio.h>
int main() {
    int x=0;
    int n,a,b;
    int sum=0;
    scanf("%d",&x);
    scanf("%d",&n);
    for (int i=0;i<n;i++){
        scanf("%d %d",&a,&b);
        sum+=a*b;
    }
    if (sum==x){
        printf("Yes");
    }
    else{
        printf("No");
    }
    return 0;
}

25314 코딩은 체육과목 입니다

n바이트 정수까지 저장할 수 있다고 생각하는 정수 자료형의 이름을 출력하여라.

#include <stdio.h>
int main() {
    int n;
    scanf("%d",&n);
    n=n/4;
    for (int i=0;i<n;i++){
        printf("long ");
    }
    printf("int");
    return 0;
}

15552 빠른 A+B

각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.

#include <stdio.h>
int main() {
    int t;
    int a,b,num=0;
    scanf("%d",&t);
    for (int i=0;i<t;i++){
        scanf("%d %d",&a,&b);
        num=a+b;
        printf("%d\n",num);
        num=0;
    }
    return 0;
}

11021 A+B-7

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int t;
    int a,b,num=0;
    scanf("%d",&t);
    for (int i=1;i<=t;i++){
        scanf("%d %d",&a,&b);
        num=a+b;
        printf("Case #%d: %d\n",i,num);
        num=0;
    }
    return 0;
}

11022 A+B-8

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int t;
    int a,b,num=0;
    scanf("%d",&t);
    for (int i=1;i<=t;i++){
        scanf("%d %d",&a,&b);
        num=a+b;
        printf("Case #%d: %d + %d = %d\n",i,a,b,num);
        num=0;
    }
    return 0;
}

2438 별 찍기

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

#include <stdio.h>
int main() {
    int n;
    scanf("%d",&n);   
    for (int i=1;i<=n;i++){
        for (int j=1;j<=i;j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

몇줄을 출력할지 결정하는 n을 입력받는다. for문에서 i의 값(1~n)까지 돌면서 아래 for문을 돌린다. 안에있는 for문에서는 j의 값(1~i)만큼 돌면서 * 을 출력하는 역할을 한다. 바깥 for문에서는 안에있는 for문을 돌린 후에 줄넘김을 한다.

2439 별찍기 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

#include <stdio.h>
int main() {
    int n;
    scanf("%d",&n);   
    for (int i=1;i<=n;i++){
        for (int t=1;t<=n-i;t++){
            printf(" ");
        }
        for (int j=1;j<=i;j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

몇줄을 출력할지 결정하는 n을 입력받는다. for문에서 i의 값(1~n)까지 돌면서 아래 for문을 돌린다. for문 안 1번째 for문에서는 t의 값(1~n-i)만큼 돌면서 공백을 출력하는 역할을 한다. 2번째 for문에서는 j의 값(1~i)만큼 돌면서 * 을 출력한다. 이때 공백을 먼저 출력해야하므로 공백 for문이 먼저 실행되는 것이다. 바깥 for문에서는 줄넘김 역할을 한다.

10952 A+B-5

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int a,b;
    while(1){
        scanf("%d %d",&a,&b);
        if(a==0 && b==0){
            return 0;
        }
        printf("%d\n",a+b);
    }
    return 0;
}

a와 b을 입력받는다. while문으로 아래 코드를 계속 실행한다. 만약에 a랑 b의 값이 0이면 프로그램을 종료한다. 0이 아닌 경우에는 입력받은 값의 합을 계속해서 출력한다.

10951 A+B-4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int a, b;
    while (scanf("%d %d", &a, &b)!=-1) {
        printf("%d\n",a+b);
    }
    return 0;
}

a와 b을 입력받는다. while문 안에서 scanf 입력이 잘 되면 읽은 항목 수를 반환한다. 입력이 끝나면 -1을 반환하고 while문을 종료한다.

조건문

1330 두 수 비교하기

두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int a, b;
    scanf("%d %d",&a,&b);
    if (a>b){
        printf(">");
    }
    else if(a<b){
        printf("<");
    }
    else if(a==b){
        printf("==");
    }
    return 0;
}

9498 시험 성적

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int score;
    scanf("%d",&score);
    if (score>=90 && score<=100){
        printf("A");
    }
    else if (score>=80 && score<=89){
        printf("B");
    }
    else if (score>=70 && score<=79){
        printf("C");
    }
    else if (score>=60 && score<=69){
        printf("D");
    }
    else{
        printf("F");
    }
    return 0;
}

2753 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int year;
    scanf("%d",&year);
    if(year%4==0 && year%100!=0){
        printf("1");
    } 
    else if(year%400==0){
        printf("1");
    } 
    else{
        printf("0");
    }
    return 0;
}

14681 사분면 고르기

점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.

#include <stdio.h>
int main() {
    int x,y;
    scanf("%d\n %d",&x,&y);
    if (x>0 && y>0){
        printf("1");
    }
    else if (x<0 && y>0){
        printf("2");
    }
    else if (x<0 && y<0){
        printf("3");
    }
    else if (x>0 && y<0){
        printf("4");
    }
    return 0;
}

2884 알람 시계

설정한 알람 시각이 주어졌을 때, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int h,m;
    scanf("%d %d",&h,&m);
    m=m-45;
    if (m<0){
        h-=1;
        m+=60;
    }
    if (h < 0){
        h=23;
    }
    printf("%d %d",h,m);
    return 0;
}

2525 오븐 시계

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int h,m;
    int mm;
    scanf("%d %d",&h,&m);
    scanf("%d",&mm);
    m+=mm;
    if(m>=60){
        h+=m/60;
        m=m%60;
    }
    if (h>=24){
        h=h%24;
    }
    printf("%d %d",h,m);
    return 0;
}

2480 주사위 세개

3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.

#include <stdio.h>
int main() {
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if (a==b && b==c)
        printf("%d",10000+a*1000);
    else if (a==b)
        printf("%d",1000+a*100);
    else if(b==c)
         printf("%d",1000+b*100);
    else if(c==a)
        printf("%d",1000+c*100);
    else{
        if(a>b&&a>c)
            printf("%d",a*100);
        else if(b>c&&b>a)
            printf("%d",b*100);
        else
            printf("%d",c*100);
    }
    return 0;
}

문자열

27866 문자와 문자열

단어 S와 정수 i가 주어졌을 때, S의 i번째 글자를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    char s[1001];
    int i;
    scanf("%s\n",s); 
    scanf("%d",&i);
    printf("%c",s[i-1]); 
    return 0;
}

문자열을 입력받는다.여기서 i번째도 입력받는다. printf문을 통해서 0번부터 시작되는 s문자열을 -1해줘서 찾고자 하는 값을 출력할 수 있다.

2743 단어 길이 재기

알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
#include <string.h>
int main() {
    char num[101];
    scanf("%s\n",num); 
    printf("%lu",strlen(num)); 
    return 0;
}

9086 문자열

문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
#include <string.h>
int main() {
    int t;
    char s[1000];
    scanf("%d",&t); 
    for (int i=0; i<t;i++){
        scanf("%s",s); 
        int len = strlen(s);
        printf("%c%c\n", s[0], s[len-1]);
    }
    return 0;
}

11654 아스키 코드

알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.

#include <stdio.h>
#include <string.h>
int main() {
    char aske;
    scanf("%c",&aske);
    printf("%d",aske);
    return 0;
}

11720 숫자의 합

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int n, sum = 0;
    char num[101];  
    scanf("%d", &n);      
    scanf("%s", num); 
    for (int i = 0; i < n; i++) {
        sum += num[i] -'0';  
    }
    printf("%d\n", sum); 
    return 0;
}

10809 알파벳 찾기

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

#include <stdio.h>
#include <string.h>
int main() {
    char sum[101];
    int alphab[26];  
    for (int i = 0; i < 26; i++) {
        alphab[i] = -1;
    }
    scanf("%s", sum);  
    for (int i = 0; i < strlen(sum); i++) {
        int index = sum[i] -'a';  
        if (alphab[index] == -1) {  
            alphab[index] = i;
        }
    }
    for (int i = 0; i< 26; i++) {
        printf("%d ", alphab[i]);
    }
    return 0;
}

2675 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오.

#include <stdio.h>
#include <string.h>
int main() {
    char s[101];
    int t,r;
    scanf("%d",&t);
    for (int i=0;i<t;i++){
        scanf("%d %s",&r,&s);
        for(int j=0;j<strlen(s);j++){
            for (int a=0;a<r;a++){
                printf("%c",s[j]);
            }
        }
        printf("\n");
    }
    return 0;
}

테스트케이스 (몇번 실행 할 건지) 를 입력받고 for문에서 실행한다. 여기서 몇번 반복할지 정하는 r값과 문자열 s를 입력받는다. for문에서 입력받은 문자열(s)의 자리수만큼 돌아간다. 안쪽 for문에서는 몇번 반복 할 건지 정하는 r값만큼 돌리면서 문자열을 출력한다.

1152 단어의 개수

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

#include <stdio.h>
#include <string.h>
int main() {
    int count;
    char word[1000001];
    scanf("%[^\n]", word);
    if (word[0]==' '){
        count--;
    }
    if(word[strlen(word)-1]==' '){
        count--;
    }
    for(int i=0;i<strlen(word);i++){
        if(word[i]==' '){
            count++;
        }
    }
    printf("%d",count+1);
    return 0;
}

2908 상수

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int reverse(int num) {
    int back = 0;
    while (num > 0) {
        back = back * 10 + num % 10;
        num /= 10;
    }
    return back;
}
int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    int backa = reverse(a);
    int backb = reverse(b);
    if (backa > backb)
        printf("%d\n", backa);
    else
        printf("%d\n", backb);
    return 0;
}

5622 다이얼

다이얼을 걸기 위해서 필요한 최소 시간을 출력한다.

#include <stdio.h>
#include <string.h>
int main() {
    char num[16];
    int time = 0;
    scanf("%s", num);
    for (int i = 0; i < strlen(num); i++) {
        if (num[i] >= 'A' && num[i] <= 'C') time += 3;
        else if (num[i] >= 'D' && num[i] <= 'F') 
        time += 4;
        else if (num[i] >='G' && num[i] <='I') 
        time += 5;
        else if (num[i] >='J' && num[i] <='L') 
        time += 6;
        else if (num[i] >='M' && num[i] <='O') 
        time += 7;
        else if (num[i] >='P' && num[i] <='S') 
        time += 8;
        else if (num[i] >='T' && num[i] <='V')
        time += 9;
        else if (num[i] >='W' && num[i] <='Z')
        time += 10;
    }
    printf("%d",time);
    return 0;
}

num문자열을 입력받는다. 여기서 몇글자 입력받았는지에 따라 for문을 돌린다. for문 안에서는 i부터 문자열 만큼 돌아가면서 문자가 무엇인지에 따라 더해주는 if else문을 돌려 time에 계속해서 더해준다. 마지막에는 printf문을 통해 다 더해진 time값을 출력한다.

11718 그대로 출력하기

입력 받은 대로 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
	char re;
	while(scanf("%c", &re) != -1) {
		printf("%c",re);
	}
	return 0;
}

별찍기

2440 별 찍기 3

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제

#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    for (int i = n; i >= 1; i--) {        
        for (int j = 1;j<=i;j++) {   
            printf("*");
        }
        printf("\n");                   
    }
    return 0;
}

n을 입력받아 몇줄을 출력받을지 정한다. 바깥for문(n~1)을 통해 n이 1이 될 때 까지 돌아간다. 안쪽 for문(1~i)은 별을 출력하는 역할을 한다. 여기서 별을 다 출력하고 개행해야하기 때문에 줄넘김은 안쪽 for문이 다 돌아간 다음에 실행된다.

2441 별 찍기 4

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    for (int i = n; i >= 1; i--) {    
        for(int k=0;k<n-i;k++){
            printf(" ");
        }    
        for (int j = 1;j<=i;j++) {   
            printf("*");
        }
        printf("\n"); 
    }
    return 0;
}

n을 입력받아 몇줄을 출력받을지 정한다. 바깥for문(n~1)을 통해 n이 1이 될 때 까지 돌아간다. 안쪽 첫번째 for문(0~n-1)은 공백을 출력하는 역할을 한다 여기서 0부터 시작하는 이유는 첫번째는 공백이 출력되면 안돼기 때문이다. 또 공백을 먼저 출력해야하므로 공백 for문이 더 먼저 있는 것이다. 안쪽 for문(1~i)은 별을 출력하는 역할을 한다. 여기서 별을 다 출력하고 개행해야하기 때문에 줄넘김은 안쪽 for문이 다 돌아간 다음에 실행된다.

code up

1173 30분전

시간을 기준으로 30분전의 시간을 출력하시오.

#include <stdio.h>
int main() {
    int h, m;
    scanf("%d %d", &h, &m);
    m -= 30;
    if (m<0) {
        m += 60;
        h -= 1;
    }
    if (h < 0) {
        h = 23;
    }
    printf("%d %d",h,m);
    return 0;
}

1180 만능휴지통

10의 자릿수와 1의 자릿수를 서로 바꾸고, 거기에 2를 곱한다.

#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    int fir = n / 10;
    int last = n % 10;
    int swapp = fir * 10 + last;
    int result = swapp* 2;
    if (result >= 100) {
        printf("0\n");
    } else {
        printf("%d\n", result);
    }
    return 0;
}

1284 암호 해독

어떤 수(n)가 입력되면 두 소수의 곱으로 나타낼 수 있으면 두 소수를 오름차순으로 출력하고, 그렇지 않으면 "wrong number"를 출력하는 프로그램을 작성하시오.

#include <stdio.h>
int main() {
    int a,b;
    scanf(%d”, &a);
    for (int i = 2; i < a; i++) {
      if (a % i == 0) {
        b = 0;
        for (int j = 2; j < i; j++) {
          if(i%j ==0) {
            b = 1;
            break;
          }
        }
        if (b == 0) {
          printf(%d %d”,i,(a/i));
          return 0;
        }
      }
    }
    printf(“wrong number”);
    return 0;
}
profile
huso

0개의 댓글