본문 바로가기

C programming/[Objection]

Shift 함수 / 시간 계산

728x90
반응형

Shift 함수

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>
/**
사용자로부터 공백을 포함하지 않는 문자열을 하나 입력 받아 
예제와 같이 왼쪽으로 한 칸씩 shift하여 출력하는 프로그램을 작성 하시오.

◦입력 받는 문자열 길이는 최대 100 이다.
◦출력 시 반복문을 사용하지 않고 문자열 출력(%s)을 사용하시오. 문자 출력(%c) 사용금지
 */

void shift(char *str,char *tmp){
    int len = strlen(str);
    for(int i=0;i<len;i++){
        for(int k=i;k<len;k++) tmp[k-i] = str[k];
        //입력된 문자열의 뒷부분을 tmp의 앞부분으로 이동
        for(int j=len-i;j<len;j++) tmp[j]  = str[j - len + i];
        //입력된 문자열의 앞부분을 tmp의 뒷부분으로 이동
        puts(tmp);
    }

}

int main(){
    char str[100];gets(str);
    int len  = strlen(str),cnt=0;
    char *tmp = (char *)malloc(sizeof(char)*len + 1);
    shift(str,tmp);
    
}

시간 계산

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>
/**
사용자로부터 두 개의 시각을 입력 받아서 두 시각 사이의 차이를 계산하여 출력하는 프로그램을 작성하시오.
◦ 시각은 시, 분, 초로 구성되는 구조체로 정의하라.
◦ 두 번째 시각이 첫 번째 시각보다 항상 늦은 시각이라고 가정한다.
◦ 시간차가 없는 경우에 분과 초만 출력하는 것이 아니라 시 분 초, 0 10 20 으로 출력한다.
 */

struct time{
    /* data */
    int hour;
    int min;
    int sec;
}pre,now,rst;

int main(){
    int previous,nowtime,result;
    scanf("%d %d %d",&pre.hour,&pre.min,&pre.sec);
    scanf("%d %d %d",&now.hour,&now.min,&now.sec);
    previous = pre.hour*3600 + pre.min*60 + pre.sec;
    nowtime = now.hour*3600 + now.min*60 + now.sec;
    result = nowtime-previous;
    printf("%d %d %d",result/3600,result/60%60,result%60);

}
728x90
반응형

'C programming > [Objection]' 카테고리의 다른 글

유클리드 호제법: 재귀  (0) 2022.01.14
시간 측정 함수  (0) 2022.01.10
문자열 처리함수  (0) 2022.01.08
진수 변환  (0) 2022.01.05
난수 생성 라이브러리  (0) 2022.01.04
댓글