时钟日历的制作

 

<body onload="showTime()">
<form name="clock">
<input name="disp" type="text" size="21" />
</form>
<script language="javascript">
function showTime(){
 var today = new Date();
 document.clock.disp.value = today.toLocaleString();
 var t=setTimeout('showTime()',500); 
 }
function getTime(){
  var now = new Date();
  var hour = now.getHours();
  var minute = now.getMinutes();
  now = null;
  var ampm = "";
 
 if(hour>12){
    hour -= 12;
    ampm = "下午" ;
  }else{
    ampm = "上午";
  }
 minute = (minute<10)?"0"+minute:minute;
 return hour + ":" + minute + " " + ampm;
 }

function getDays(month,year){
 var monthDate = new Array(12);
 monthDate[0] = "31";
 monthDate[1] = (year%4==0)?29:28;
 monthDate[2] = "31";
 monthDate[3] = "29";
 monthDate[4] = "31";
 monthDate[5] = "29";
 monthDate[6] = "31";
 monthDate[7] = "31";
 monthDate[8] = "29";
 monthDate[9] = "31";
 monthDate[10] = "29";
 monthDate[11] = "31";
 return monthDate[month];
 }
function getMonthName(month){
 var ar = new Array(12);
 ar[0] = "1月"
 ar[1] = "2月"
 ar[2] = "3月"
 ar[3] = "4月"
 ar[4] = "5月"
 ar[5] = "6月"
 ar[6] = "7月"
 ar[7] = "8月"
 ar[8] = "9月"
 ar[9] = "10月"
 ar[10] = "11月"
 ar[11] = "12月"
 return ar[month] 
 }
function setCal(){
 var now = new Date();
 var year = now.getYear();
 var year = (year>1900)?year:(1900+year); //在FF等浏览器内 getYear 返回的是 "当前年份-1900" 的值,而IE则是当年份大于等于2000的时,直接将1900加上,还可以直接使用 getFullYear() 函数;
 var month = now.getMonth();
 var monthName = getMonthName(month);
 var days = getDays(month,year);
 var date = now.getDate();
 now = null;
  
 var thisDate = new Date(year,month,1);
 var firstDay = thisDate.getDay();
 thisDate = null;
 drawCal(firstDay, days, date, monthName, year);
    }
function drawCal(firstDay,lastDate,date,monthName,year){
 var text = ""; 
 var dayArray = new Array(7);
 dayArray[0] = "星期日";
 dayArray[1] = "星期一";
 dayArray[2] = "星期二";
 dayArray[3] = "星期三";
 dayArray[4] = "星期四";
 dayArray[5] = "星期五";
 dayArray[6] = "星期六";
   
 text +="<table border='1' width='700'>";
 text +="<tr><th colspan=7>"+year+"年"+monthName+"日历</th></tr>";
 text +="<tr>";
    for(var i =0; i<7; i++){
        text +="<td>"+dayArray[i]+"</td>";
    }
 text +="</tr>";
 var digit = 1;
 var curCell = 1;

 for (var row = 1; row<=Math.ceil((lastDate+firstDay)/7); row++)
 {
    text += "<tr>";  
    for(var col=1; col<=7; col++){
    if(digit>lastDate)
      {
    break;
      }
    if(curCell<firstDay)
      {
     text +="<td>&nbsp;</td>";
     curCell++ ;
    
       }
    else
     {
     if(digit==date)
     {
      text +="<td style='color:#000;'>"+digit+"&nbsp;<span style='color:#ff0000; font-size:12px;'>("+getTime()+")</span></td>";
      }
      else
      {
       text +="<td>"+digit+"</td>";
              
      }
      digit++; 
   }   

  }
   }
   text +="</tr></table>"
 document.write(text);
}
 setCal();
</script>
</body>

【源码免费下载链接】:https://renmaiwang.cn/s/os2te 大整数乘法是计算机科学中的一个重要领域,特别是在算法设计和数学计算中有着广泛应用。它涉及到处理超过标准整型变量范围的数值运算。在C++编程语言中,处理大整数通常需要自定义数据结构和算法,因为内置的`int`、`long long`等类型无法满足大整数的存储和计算需求。以下是对这个主题的详细阐述:1. **大整数数据结构**: 在C++中,实现大整数通常采用数组或链表来存储每一位数字。例如,可以使用一个动态分配的数组,每个元素表示一个位上的数字,从低位到高位排列。这种数据结构允许我们方便地进行加减乘除等操作。2. **乘法算法**: - **暴力乘法**:最直观的方法是类似于小学的竖式乘法,但效率较低,时间复杂度为O(n^2)。 - **Karatsuba算法**:由Alexander Karatsuba提出,将两个n位数的乘法转化为三个较小的乘法,时间复杂度为O(n^1.585)。 - **Toom-Cook算法**:比Karatsuba更通用,通过多项式插值和分解进行计算,有不同的变体,如Toom-3、Toom-4等。 - **快速傅里叶变换(FFT)**:当处理的大整数可以看作是多项式系数时,可以利用FFT进行高效的乘法,时间复杂度为O(n log n)。FFT在数论和密码学中尤其重要。3. **算法实现**: 实现这些算法时,需要考虑如何处理进位、溢出等问题,以及如何优化代码以提高效率。例如,使用位操作可以加速某些步骤,同时要确保代码的正确性和可读性。4. **源代码分析**: "大整数乘法全解"的源代码应包含了上述算法的实现,可能还包括了测试用例和性能比较。通过阅读源码,我们可以学习如何将理论算法转化为实际的程序,并理解各种优化技巧。5. **加说明**: 通常,源代码附带的说明会解释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值