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 의 선언 내용이 달라서 그렇습니다.
소곤소곤
댓글 달기