c언어와 쉘스크립트
글쓴이: kungfumong / 작성시간: 일, 2016/10/16 - 7:12오후
#include <stdio.h> void main(){ int i,j,d; int remain,allday; int month[12]={31,29,31,30,31,30,31,31,30,31,30,31}; allday=((2016-1)+(2016-1)/4-(2016-1)/100+(2016-1)/400); /// 모든 일수를 구함(수식) remain=(allday+1) % 7; // 일수계산(입력한 년,달의 1일까지 계산하는거라 +1) 후에 %7로 앞공백(요일)정함 for(d=0; d<12; d++) { printf("%d\n",remain); int count=1; printf(" 일 월 화 수 목 금 토\n"); for(i=0; i<6; i++){ //주차(최대 6주) for(j=0; j<7; j++){ //요일 (월~일) if(i==0 && j<remain){ // 첫주차이고, 시작일수가 remain보다 낮다면 공백으로 채움 printf(" "); continue; } else if(count>=month[d]+1){ // 일수가 해당 달의 일수와 같거나 클때 종료 break; } printf("%4d",count); count++; } printf("\n"); } remain=(remain+month[d]) % 7; } scanf("%d",&i); }
month=(31 28 31 30 31 30 31 31 30 31 30 31) allday=$[ (2016-1)+(2016-1)/4-(2016-1)/100+(2016-1)/400 ] remain=`expr $(($allday + 1)) % 7` for ((c=d;d<12;d++)); do count=1 echo -e "\t\t\t2016년 `expr $c + 1 `월 달력 $remain" echo -e "\t일\t월\t화\t수\t목\t금\t토" for ((i=0;i<6;i++)); do for ((j=0;j<7;j++)); do if [ $i -eq 0 -a $j -lt $remain ] then echo -ne "\t" continue elif [ $count -ge `expr ${month[$j]} + 1` ] then break fi echo -en "\t$count" count=`expr $count + 1` done echo "" done let "remain=($remain+${month[d]})%7" done
둘의 remain값이 다릅니다..
똑같은 코딩 아닌가요?
c에서는 remain이 5 1 2 5 0 3 5 ....
쉘에서는 remain이 5 1 1 <-- 3번째 값부터 이상하네요 ㅡㅡ
Forums:
..
month 의 선언 내용이 달라서 그렇습니다.
소곤소곤
댓글 달기