1.写出下列语句返回值
undefined==null // true
[0]==0 //true
""==0 //true
""==null //false
typeof(undefined); //undefined
typeof(null); //object
双等与三等的区别:
双等在比较之前要进行类型转换(转换为相同类型),再进相比较。
三等进行类型比较和值的比较,若类型不同,则二者不相等。
==规则:
a.如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较.
b.如果一个是字符串,一个是数值,把字符串转换成数值再进行比较
c.如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较.
d.null与undefined相等。要比较相等性之前,不能将null与undefined转换成其他任何类型。
e.如果有一个操作数是NaN,则相等操作符返回false,不相等返回true。NaN不等于NaN。
f.如果两个操作数都是对象,则比较他们是不是同一个对象。若是,true;否则,false。
2.linux命令
新建文件 touch 文件名
新建文件夹 mkdir 文件夹名
列出当前目录下文件 ls
-l 列出文件详细信息l(list)
-a 列出当前目录下所有文件及目录,包括隐藏的a(all)
显示当前目录下隐藏文件并按照时间排序 ls -a -t
切换到Download目录下 cd Download
删除文件 rm
-r 递归删除,可删除子目录及文件
-f 强制删除
安装.deb文件 sudo dpkg -i 文件名.deb (-i 即install)
3.找出1-100的素数
#include <stdio.h>
int main()
{
int i,status;//判断标志
for(i=3;i<100;i++)
{
status=0;
int j;
for(j=2;j<i;j++)
{
if(i%j==0)
{
status=1;//不是素数
break;
}
}
if(status==0)//是素数
printf("%d\n",i);
}
return 0;
}
4.归并排序
//c语言
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
#define N 10
void MergeSort(int Array[],int n);
void MSort(int Array[],int TmpArray[],int left,int right);
void Meger(int Array[],int TmpArrry[],int left,int right,int middle);
int main()
{
int a[N],i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
MergeSort(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;
}
void MSort(int Array[],int TmpArray[],int left,int right)
{
int middle;
if(left<right)
{
middle=(left+right)/2;//找中间位置划分
MSort(Array,TmpArray,left,middle);//左半部分进行递归归并排序
MSort(Array,TmpArray,middle+1,right);//右半部分
Meger(Array,TmpArray,left,right,middle);//归并
}
}
void Meger(int Array[],int TmpArray[],int left,int right,int middle)
{
int i,p1,p2;
for(i=left;i<=right;i++)
TmpArray[i]=Array[i]; //临时保存待排序序列
p1=left; //左半部分有序记录起始位置
p2=middle+1;//右半部分起始位置
i=left;//从左半部分开始归并
while(p1<middle&&p2<right)
{
if(TmpArray[p1]<=TmpArray[p2])
{
Array[i]=TmpArray[p1];
p1++;
}
else
{
Array[i]=TmpArray[p2];
p2++;
}
i++;
}
//合并
while(p1<=middle)
{
Array[i++]=TmpArray[p1++];
}
while(p2<=right)
{
Array[i++]=TmpArray[p2++];
}
}
void MergeSort(int Array[],int n)
{
int *TmpArray;
TmpArray = malloc(n * sizeof(int));
if (TmpArray != NULL)
{
MSort(Array, TmpArray, 0, n - 1);
free(TmpArray);
}
}
//javascript
function merge_sort(arr){
if(arr.length < 2){
return arr;
}
var middle = parseInt(arr.length/2);
var left = arr.slice(0,middle);
var right = arr.slice(middle);
return merge(merge_sort(left),merge_sort(right));
}
function merge(left,right){
var result = [];
var i = 0, j = 0;
while(i < left.length && j < right.length){
if(left[i] > right[j]){
result.push(right[j++]);
}
else{
result.push(left[i++]);
}
}
while(i < left.length){
result.push(left[i++]);
}
while(j < right.length){
result.push(right[j++]);
}
return result;
}
5.青蛙跳(一次只能上一个或两个,问n阶有多少种方法)
斐波那契数列
如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此n级台阶时的不同跳法的总数f(n)=f(n-1)+(f-2)。
//递归法
#include <stdio.h>
long f(int n)
{
if(n==1)
return 1;
if(n==2)
return 2;
if(n>=2)
{
return f(n-1)+f(n-2);
}
}
int main()
{
int n,sum;
scanf("%d",&n);
sum=f(n);
printf("%d",sum);
return 0;
}
//迭代法
6.css position的值与含义
a.static 默认值。没有定位,元素出现在正常的流中
b.absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
c.relative 生成相对定位的元素,相对于其正常位置进行定位。
d.fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。