㈠ js編寫四則運算函數,使用switch判斷運算符號
#include <stdio.h>
int main(int argc, char **argv)
{
double operand1;
double operand2;
char operator[1];
while (1)
{
printf("輸入數值和運算符(數值->運算符->數值):");
scanf("%lf%c%lf", &operand1,&operator[0], & operand2);
switch (operator[0])
{
case '+': printf("%.2lf\n", operand1 + operand1);
break;
case '-': printf("%.2lf\n", operand1 - operand2);
break;
case '*': printf("%.2f\n", operand1 * operand2);
break;
case '/': if (operand2 == 0)
{
printf("invalid operand!\n");
break;
}
printf("%.2f\n", operand1 / operand2);
break;
default: printf("unknown operator\n");
break;
}
}
}
㈡ js編寫一個函數,計算兩個數字的和、差、積、商(要求:使用傳參的形式)
/**
**除法函數,用來得到精確的除法結果
**說明:javascript的除法結果會有誤差,在兩個浮點數相除的時候會比較明顯。這個函數返回較為精確的除法結果。
**調用:accDiv(arg1,arg2)
**返回值:arg1除以arg2的精確結果
**/functionaccDiv(arg1,arg2){vart1=0,t2=0,r1,r2;try{
t1=arg1.toString().split(".")[1].length;
}catch(e){
}try{
t2=arg2.toString().split(".")[1].length;
}catch(e){
}with(Math){
r1=Number(arg1.toString().replace(".",""));
r2=Number(arg2.toString().replace(".",""));return(r1/r2)*pow(10,t2-t1);
}
}//給Number類型增加一個div方法,調用起來更加方便。Number.prototype.div=function(arg){returnaccDiv(this,arg);
};/**
**乘法函數,用來得到精確的乘法結果
**說明:javascript的乘法結果會有誤差,在兩個浮點數相乘的時候會比較明顯。這個函數返回較為精確的乘法結果。
**調用:accMul(arg1,arg2)
**返回值:arg1乘以arg2的精確結果
**/functionaccMul(arg1,arg2){varm=0,s1=arg1.toString(),s2=arg2.toString();try{
m+=s1.split(".")[1].length;
}catch(e){
}try{
m+=s2.split(".")[1].length;
}catch(e){
}returnNumber(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}//給Number類型增加一個mul方法,調用起來更加方便。Number.prototype.mul=function(arg){returnaccMul(arg,this);
};/**
**減法函數,用來得到精確的減法結果
**說明:javascript的減法結果會有誤差,在兩個浮點數相減的時候會比較明顯。這個函數返回較為精確的減法結果。
**調用:accSub(arg1,arg2)
**返回值:arg1加上arg2的精確結果
**/functionaccSub(arg1,arg2){varr1,r2,m,n;try{
r1=arg1.toString().split(".")[1].length;
}catch(e){
r1=0;
}try{
r2=arg2.toString().split(".")[1].length;
}catch(e){
r2=0;
}
m=Math.pow(10,Math.max(r1,r2));//lastmodifybydeeka//動態控制精度長度
n=(r1>=r2)?r1:r2;return((arg1*m-arg2*m)/m).toFixed(n);
}//給Number類型增加一個mul方法,調用起來更加方便。Number.prototype.sub=function(arg){returnaccMul(arg,this);
};/**
**加法函數,用來得到精確的加法結果
**說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。
**調用:accAdd(arg1,arg2)
**返回值:arg1加上arg2的精確結果
**/functionaccAdd(arg1,arg2){varr1,r2,m,c;try{
r1=arg1.toString().split(".")[1].length;
}catch(e){
r1=0;
}try{
r2=arg2.toString().split(".")[1].length;
}catch(e){
r2=0;
}
c=Math.abs(r1-r2);
m=Math.pow(10,Math.max(r1,r2));if(c>0){varcm=Math.pow(10,c);if(r1>r2){
arg1=Number(arg1.toString().replace(".",""));
arg2=Number(arg2.toString().replace(".",""))*cm;
}else{
arg1=Number(arg1.toString().replace(".",""))*cm;
arg2=Number(arg2.toString().replace(".",""));
}
}else{
arg1=Number(arg1.toString().replace(".",""));
arg2=Number(arg2.toString().replace(".",""));
}return(arg1+arg2)/m;
}//給Number類型增加一個add方法,調用起來更加方便。Number.prototype.add=function(arg){returnaccAdd(arg,this);
};
㈢ 求一個JS對時間運算的函數,最好用時間戳
/**
* 獲取指定時間戳n小時之前的時間
* @current {Timestamp} 時間戳,精確到毫秒
* @n {Number} 要減去的小時
* @Return {String} 格式化後的時間
*/
var parser = function (current, n) {
if (arguments.length < 2)
throw new Error("缺少參數!");
if (current.constructor !== Number || n.constructor !== Number)
throw new Error("參數類型錯誤");
// 計算n小時之前的時間戳
n = current - n * 3600 * 1000;
// 如果計算出的時間小於0,則返回傳入的時間
if (current < 0)
n = current;
// 獲取年月日時間
n = new Date(n);
n = {
year: n.getFullYear(),
month: n.getMonth() + 1,
day: n.getDate(),
hour: n.getHours(),
minute: n.getMinutes(),
second: n.getSeconds()
};
// 格式化時間
var fill = function (num) {
return (num < 10 ? '0' + num : num);
};
n = '{' + n.year + '-' + fill(n.month) + '-' + fill(n.day) + ' ' + fill(n.hour) + ':' + fill(n.minute) + ':' + fill(n.second) + '}';
return n;
}
獲取當前時間戳 var current = (new Date()).getTime()
㈣ 用js寫一個函數,計算出字元串的長度
//GBK字元集實際長度計算
functiongetStrLeng(str){
varrealLength=0;
varlen=str.length;
varcharCode=-1;
for(vari=0;i<len;i++){
charCode=str.charCodeAt(i);
if(charCode>=0&&charCode<=128){
realLength+=1;
}else{
//如果是中文則長度加2
realLength+=2;
}
}
returnrealLength;
}
//UTF8字元集實際長度計算
functiongetStrLeng(str){
varrealLength=0;
varlen=str.length;
varcharCode=-1;
for(vari=0;i<len;i++){
charCode=str.charCodeAt(i);
if(charCode>=0&&charCode<=128){
realLength+=1;
}else{
//如果是中文則長度加3
realLength+=3;
}
}
returnrealLength;
}
在JS中字元串的長度不分中英文字元, 每一個字元都算一個長度,這跟PHP里的strlen()函數就不太一樣。PHP里的strlen()函數根據字元集把GBK的中文每個2累加,把UTF-8的中文字元每個按3累加。主要是為了匹配資料庫的長度范圍內,比如GBK的資料庫某欄位是varchar(10),那麼就相當於5個漢字長度,一個漢字等於兩個字母長度。如果是UTF8的資料庫則是每個漢字長度為3。
㈤ javascript中函數是什麼意思
( function(){…} )()和( function (){…} () )是兩種javascript立即執行函數的常見寫法,要理解立即執行函數,需要先理解一些函數的基本概念。
函數聲明:
function fnName () {…};使用function關鍵字聲明一個函數,再指定一個函數名,叫函數聲明。
函數表達式:
var fnName = function () {…};使用function關鍵字聲明一個函數,但未給函數命名,最後將匿名函數賦予一個變數,叫函數表達式,這是最常見的函數表達式語法形式。
匿名函數:
function () {}; 使用function關鍵字聲明一個函數,但未給函數命名,所以叫匿名函數,匿名函數屬於函數表達式,匿名函數有很多作用,賦予一個變數則創建函數,賦予一個事件則成為事件處理程序或創建閉包等等。
函數聲明和函數表達式不同之處在於:
一、Javascript引擎在解析javascript代碼時會『函數聲明提升'(Function declaration Hoisting)當前執行環境(作用域)上的函數聲明。
而函數表達式必須等到Javascirtp引擎執行到它所在行時,才會從上而下一行一行地解析函數表達式。
二、函數表達式後面可以加括弧立即調用該函數,函數聲明不可以,只能以fnName()形式調用。
在function前面加!、+、 -甚至是逗號等到都可以起到函數定義後立即執行的效果,而()、!、+、-、=等運算符,都將函數聲明轉換成函數表達式。
消除了javascript引擎識別函數表達式和函數聲明的歧義,告訴javascript引擎這是一個函數表達式,不是函數聲明,可以在後面加括弧,並立即執行函數的代碼。
(5)js運算函數擴展閱讀
作用:
javascript中沒用私有作用域的概念,如果在多人開發的項目上,你在全局或局部作用域中聲明了一些變數,可能會被其他人不小心用同名的變數給覆蓋掉。
根據javascript函數作用域鏈的特性,可以使用這種技術可以模仿一個私有作用域,用匿名函數作為一個「容器」。
「容器」內部可以訪問外部的變數,而外部環境不能訪問「容器」內部的變數,所以( function(){…} )()內部定義的變數不會和外部的變數發生沖突,俗稱「匿名包裹器」或「命名空間」。
JQuery使用的就是這種方法,將JQuery代碼包裹在( function (window,undefined){…jquery代碼…} (window)中,在全局作用域中調用JQuery代碼時,可以達到保護JQuery內部變數的作用。
㈥ js中的函數
好像沒有直接的辦法,不過一步亦可以搞定:(利用正則表達式+字元串處理函數)<script>
var a = "aaa13bbb22";
alert(parseInt(a.substring(a.search(/\d/))));
</script>
㈦ js如何向函數輸入運算符
1.運算符
1.賦值運算符和擴展運算符
1.賦值運算符 =
2.擴展運算符
+=,-=,*=,/=,%=,^=....
ex:
a=a+b;--> a+=b;
a=a+1;--> a++,a+=1,++a
實現兩個數字的換位:
a^=b;
b^=a;
a^=b;
2.條件運算符
條件運算符又稱三目運算符。
單目(一元)運算符,只需要一個操作數或表達式。
ex:++,--,!
雙目(二元)運算符,需要兩個操作或表達式
ex:+,-,*,/,%,>,<,>=,<=,==,===,!=,!==,&,|,^,&&,||
三目(三元)運算符,需要三個表達式或操作數。
語法:
條件表達式?表達式1:表達式2;
先判斷條件表達式的值,如果條件為true,則執行表達式1,如果條件為false,則執行表達式2。
ex:
從彈出框中輸入成績,如果成績大於60,則輸出及格,否則輸出不及格。
練習:
從彈出框中輸入成績:
如果成績等於100,則輸出"獎勵1000元",
如果成績>=90,則輸出"獎勵100元",
如果成績>=70,則輸出"獎勵10元素",
否則,輸出"請大家吃飯"。
㈧ js中三角函數sin\cos\tan\cot角度計算
正弦(sin) sinA = a / c sinθ = y / r
餘弦(cos) cosA = b / c cosθ = y / r
正切(tan) tanA = a / b tanθ = y / x
餘切(cot) cotA = b / a cotθ = x / y
js中計算三角函數用Math.sin()等靜態方法,參數為弧度
角度與弧度都是角的度量單位
1弧度時,弧長等於半徑,那弧長是半徑的倍數就是弧度了
弧度 = 弧長 / 半徑
弧長 = 弧度 * 半徑
弧長 = (角度 / 360) * 周長
角度 = 弧長 / 周長 = 弧長/(2πr) = 弧度*r/(2πr) = 弧度/(2π)
弧度 = 弧長 / 半徑 = [(角度 / 360) * 周長] / 半徑 =[ (角度 / 360) * 2πr] / r = 角度 * π / 180
㈨ JS中幾種常見的高階函數
高階函數:英文叫Higher-order function。JavaScript的函數其實都指向某個變數。既然變數可以指向函數,函數的參數能接收變數,那麼一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數。
一個最簡單的高階函數:
編寫高階函數,就是讓函數的參數能夠接收別的函數。
下面介紹三個高階函數:
一、map/rece
如果你讀過Google的那篇大名鼎鼎的論文「MapRece: Simplified Data Processing on Large Clusters」,你就能大概明白map/rece的概念。由於map()方法定義在JavaScript的Array中,我們調用Array的map()方法,傳入我們自己的函數,就得到了一個新的Array作為結果:
1、map():
所以,map()作為高階函數,事實上它把運算規則抽象了,因此,我們不但可以計算簡單的f(x)=x2,還可以計算任意復雜的函數,比如,把Array的所有數字轉為字元串:
2、rece():
再看rece的用法。Array的rece()把一個函數作用在這個Array的[x1, x2, x3...]上,這個函數必須接收兩個參數,rece()把結果繼續和序列的下一個元素做累積計算,其效果就是:
二、filter
filter也是一個常用的操作,它用於把Array的某些元素過濾掉,然後返回剩下的元素。和map()類似,Array的filter()也接收一個函數。和map()不同的是,filter()把傳入的函數依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。
可見用filter()這個高階函數,關鍵在於正確實現一個「篩選」函數。
回調函數:filter()接收的回調函數,其實可以有多個參數。通常我們僅使用第一個參數,表示Array的某個元素。回調函數還可以接收另外兩個參數,表示元素的位置和數組本身:
三、sort排序演算法
因為Array的sort()方法默認把所有元素先轉換為String再排序,結果'10'排在了'2'的前面,因為字元'1'比字元'2'的ASCII碼小。如果不知道sort()方法的默認排序規則,直接對數字排序,絕對栽進坑裡!
幸運的是,sort()方法也是一個高階函數,它還可以接收一個比較函數來實現自定義的排序。
㈩ js 常用到的幾個數學函數
Visual Basic包含內置或內部抄的函數襲,如算術平方根、餘弦函數和字元代碼函數。此外,還可以用Function語句編寫自己的Function函數過程。函數過程的語法是:
[Private |Public][Static] Function 過程名(聲明)[As 類型]
語句
End Function
與子過程一樣,函數過程也是一個獨立的過程,可以讀取參數,執行一系列語句並改變其參數的值。與子過程不同,函數過程可以返回一個值到調用的過程。
一般說來,讓較大的語句或表達式的右邊包含函數過程名和參數,這就調用了函數。
與變數完全一樣,函數過程有數據類型,這就決定了返回值的類型(如果沒有As子句,默認的數據類型為變體型)。
給過程名自身賦一個值,就可以返回這個值。函數過程返回一個值時,這個值可以成為較大表達式的一部分。
在Visual Basic中調用函數過程的方法和調用任何內部函數的過程是一樣的。
希望我能幫助你解疑釋惑。