2010年2月25日星期四

C++大数精度计算


头文件:
// WTNumber.h: interface for the CWTNumber class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_WTNUMBER_H__92E62B40_491A_4A75_AB89_FFB160DB2343__INCLUDED_)
#define AFX_WTNUMBER_H__92E62B40_491A_4A75_AB89_FFB160DB2343__INCLUDED_

#if _MSC_VER 1000
#pragma once
#endif // _MSC_VER > 1000

#define INT_BIT_MAX 255
#define FLOAT_BIT_MAX 255

class CWTNumber
{
private:
int intbits; /* 整数数位*/
int floatbits; /* 小数有效数位*/
char infinite; /* 无穷大*/
char sign; /* 符号*/
char intpart[INT_BIT_MAX]; /* 整数部分*/
char floatpart[FLOAT_BIT_MAX]; /* 小数部分*/
private:
char* m_sz;
public:
/* 算术函数指针类型.*/
typedef void (*PFNCALC)(const CWTNumber&,const CWTNumber&,CWTNumber&);
CWTNumber();
CWTNumber(const char* szNum);
~CWTNumber();
/* 转换成字符串*/
char* ToString();
void FreeString();
/* 初始化WTNumber为0.*/
void InitWTNumberToZero();
/* 判断需要多少个字符空间存储WTNumber转换的字符串.*/
int StrLenByWTNumber();
/* 从字符串转换到WTNumber.*/
void StrToWTNumber(const char *arr);
/* 从WTNumber转换到字符串.*/
void WTNumberToStr(char *szBuf);
/* 调节数位,删除最高整数位是0的和最低小数位是0的数位.*/
void AdjustBits();
/* 移动小数点,delta=0不移动,delta 0往左移动,delta>0往右移动.*/
void MoveFloatPoint(int delta);
/* 使无穷大 */
void MakeInfinite();
/* 比较2个数大小 */
int WTCompare(const CWTNumber& n) const;
/* 判断是否为0 */
int IsZero() const;
/* 赋值号重载*/
CWTNumber& operator=(const CWTNumber& n);

/* 运算符重载 */
CWTNumber operator+(const CWTNumber& n);
CWTNumber operator-(const CWTNumber& n);
CWTNumber operator*(const CWTNumber& n);
CWTNumber operator/(const CWTNumber& n);
CWTNumber& operator+=(const CWTNumber& n);
CWTNumber& operator-=(const CWTNumber& n);
CWTNumber& operator*=(const CWTNumber& n);
CWTNumber& operator/=(const CWTNumber& n);

bool operator>(const CWTNumber& n);
bool operator>=(const CWTNumber& n);
bool operator<(const CWTNumber& n);
bool operator<=(const CWTNumber& n);
bool operator==(const CWTNumber& n);
bool operator!=(const CWTNumber& n);
/* 加法*/
static void WTAdd(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res);
/* 乘法*/
static void WTMultiply(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res);
/* 减法*/
static void WTSubtract(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res);
/* 除法*/
static void WTDivide(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res);
/* 根据算术函数返回结果 */
static char *Result(const char *val1,const char *val2,PFNCALC pfnCalc);
};


#endif // !defined(AFX_WTNUMBER_H__92E62B40_491A_4A75_AB89_FFB160DB2343__INCLUDED_)

源文件:
// WTNumber.cpp: implementation of the CWTNumber class.
//
//////////////////////////////////////////////////////////////////////
#include
#include
#include "WTNumber.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CWTNumber::CWTNumber()
{
InitWTNumberToZero();
}
CWTNumber::CWTNumber(const char* szNum)
{
InitWTNumberToZero();
StrToWTNumber(szNum);
}
CWTNumber::~CWTNumber()
{
FreeString();
}
void CWTNumber::FreeString()
{
if(m_sz) delete []m_sz;
m_sz=NULL;
}
void CWTNumber::InitWTNumberToZero()
{
memset(this,0,sizeof(CWTNumber));
}
int CWTNumber::StrLenByWTNumber()
{
int len = floatbits+intbits+1;
if(intbits==0) len++; /* .1 --> 0.1*/
if(floatbits) len++; /* '.'*/
if(sign) len++; /* '-'*/
if(infinite) return 11; /* #INFINITE */
return len;
}
void CWTNumber::StrToWTNumber(const char *arr)
{
char *point;
InitWTNumberToZero();
if(*arr=='-') /* 如果是负数*/
{
arr++;
sign=1;
}
point=strchr(arr,'.');
if(point) /* 找到小数点 */
{
int n=intbits=point-arr; /* 计算出整数数位 */
while(n) /* 整数数位不==0则循环 */
{
intpart[intbits-n]=arr[n-1]-'0'; /* 将数字低位存在低下标元素*/
n--;
}
while(*++point)
{
floatpart[floatbits]=*point-'0';
floatbits++;
}
}
else /* 说明没写小数点,全是整数.*/
{
int n=intbits=strlen(arr);
while(n)
{
intpart[intbits-n]=arr[n-1]-'0';
n--;
}
}
AdjustBits();
/* 处理-0 和0的情况*/
if(floatbits==0)
{
if(intbits==0 || intbits==1&&intpart[0]==0)
sign=0;
}
}

void CWTNumber::WTNumberToStr(char *szBuf)
{
int n=intbits,c;
memset(szBuf,0,StrLenByWTNumber());
if(sign) /* 如果是负数*/
{
*szBuf++='-';
}
if(infinite)
{
strcat(szBuf,"#INFINITE");
return;
}
while(n)
{
szBuf[intbits-n]=intpart[n-1]+'0';
n--;
}
c=0; /* 是否加了0*/
if(intbits==0) {
strcat(szBuf,"0");
c=1;
}
if(floatbits) strcat(szBuf,".");
n=0;
while(n {
szBuf[intbits+1+n+c]=floatpart[n]+'0';
n++;
}
}
void CWTNumber::AdjustBits()
{
while(intbits>1&&intpart[intbits-1]==0) intbits--;
while(floatbits&&floatpart[floatbits-1]==0) floatbits--;
}
void CWTNumber::MoveFloatPoint(int delta)
{
/* delta<0则往左移动小数点,delta>0则向右移动小数点 */
if(delta)
{
CWTNumber n=*this;
InitWTNumberToZero();
sign=n.sign;
if(delta<0)
{
int i;
delta=-delta;
for(i=delta;i {
intpart[intbits++]=n.intpart[i];
}
for(i=delta-1;i>=0;i--)
{
floatpart[floatbits++]=n.intpart[i];
}
for(i=0;i {
floatpart[floatbits++]=n.floatpart[i];
}
}
else
{
int i;
for(i=delta;i {
floatpart[floatbits++]=n.floatpart[i];
}
for(i=delta-1;i>=0;i--) /* 小数到整数的部分*/
{
intpart[intbits++]=n.floatpart[i];
}
for(i=0;i {
intpart[intbits++]=n.intpart[i];
}
}
}
AdjustBits();
}
void CWTNumber::MakeInfinite()
{
infinite=1;
}

int CWTNumber::WTCompare(const CWTNumber& n) const
{
/* 首先是比较符号*/
if(sign==0&&n.sign!=0) /* pn1是正数,pn2是负数*/
return 1; /* >*/
else if(sign!=0&&n.sign==0) /* pn1是负数,pn2是正数*/
return -1; /* <*/
else /* 同号状态*/
{
/* 比较整数部分*/
if(intbits>n.intbits) /* pn1整数数位多*/
return sign?-1:1;
else if(intbits return sign?1:-1;
else /* 整数数位相同*/
{
int i=intbits-1; /*指到最高位*/
while(i>=0)
{
if(intpart[i]>n.intpart[i])
return sign?-1:1;
else if(intpart[i] return sign?1:-1;
else i--;
}
/* 整数部分相同,比较小数部分*/
for(i=0;i {
if(floatpart[i]>n.floatpart[i])
return sign?-1:1;
else if(floatpart[i] return sign?1:-1;
else i++;
}
if(i if(i return 0; /* 相等*/
}
}
}
int CWTNumber::IsZero() const
{
if(floatbits==0&&intbits==0) return 1;
if(floatbits==0&&intbits==1&&intpart[0]==0) return 1;
return 0;
}

void CWTNumber::WTAdd(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res)
{
Res.InitWTNumberToZero();
if(n1.sign^n2.sign) /*异号*/
{
CWTNumber rn2=n2;
rn2.sign=n1.sign;
WTSubtract(n1,rn2,Res);
}
else /*同号*/
{
int maxfloatbits=n1.floatbits>n2.floatbits?n1.floatbits:n2.floatbits;
int addbit=0; /* 进位值*/
int i,j;
for(i=maxfloatbits-1;i>=0;i--)
{
int value=n1.floatpart[i]+n2.floatpart[i]+addbit;
addbit=value/10; /* 看看是否超过10. 设置进位值*/
Res.floatpart[i]=value%10;
}
Res.floatbits=maxfloatbits;
/* 到此,小数部分计算完毕.*/
for(j=0;j {
int value=n1.intpart[j]+n2.intpart[j]+addbit;
addbit=value/10;
Res.intpart[j]=value%10;
Res.intbits++;
}
if(addbit>0)
{
Res.intpart[j]=addbit;
Res.intbits++;
}
Res.sign=n1.sign; /*决定符号*/
Res.AdjustBits();
}
}

void CWTNumber::WTMultiply(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res)
{
CWTNumber z1=n1,z2=n2;
CWTNumber sum;
int i,j;
sum.InitWTNumberToZero();
Res.InitWTNumberToZero();
z1.MoveFloatPoint(z1.floatbits);
z2.MoveFloatPoint(z2.floatbits);
/* 计算z1*z2 */
for(i=0;i {
CWTNumber tmp; /* 存放临时乘积*/
int addbit=0;
tmp.intbits=z1.intbits+i;
for(j=0;j {
int value = z2.intpart[i]*z1.intpart[j]+addbit;
addbit=value/10;
tmp.intpart[j+i]=value%10;
}
if(addbit)
{
tmp.intpart[j+i]=addbit;
tmp.intbits++;
}
WTAdd(sum,tmp,Res);
sum=Res;
}
Res=sum;
Res.MoveFloatPoint(-(n1.floatbits+n2.floatbits));
/* 判断符号,异号为负*/
if(n1.sign^n2.sign) Res.sign=1;
}

void CWTNumber::WTSubtract(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res)
{
Res.InitWTNumberToZero();
if(n1.sign^n2.sign) /* 异号情况*/
{
CWTNumber rn2=n2;
rn2.sign=n1.sign;
WTAdd(n1,rn2,Res);
}
else /* 同号情况*/
{
int cmp=n1.WTCompare(n2);
int swapflag,i,maxfloatbits,subtractbit;
if(cmp==0) return; /* 相等就没必要再减了.*/
swapflag=n1.sign==0?cmp==-1:cmp==1;
const CWTNumber* pn1=&n1;
const CWTNumber* pn2=&n2;
if(swapflag)
{
const CWTNumber *t=pn1;
pn1=pn2;
pn2=t;
}
maxfloatbits=pn1->floatbits>pn2->floatbits?pn1->floatbits:pn2->floatbits;
subtractbit=0; /* 退位值*/
/* 先计算小数部分*/
for(i=maxfloatbits-1;i>=0;i--)
{
if(pn1->floatpart[i]-subtractbitfloatpart[i])
{
int value=pn1->floatpart[i]-pn2->floatpart[i]-subtractbit+10;
subtractbit=1;
Res.floatpart[i]=value;
}
else
{
int value=pn1->floatpart[i]-pn2->floatpart[i]-subtractbit;
subtractbit=0;
Res.floatpart[i]=value;
}
}
Res.floatbits=maxfloatbits;
/* 至此小数部分计算完毕.*/
for(i=0;iintbits||iintbits;i++)
{
if(pn1->intpart[i]-subtractbitintpart[i])
{
int value=pn1->intpart[i]-pn2->intpart[i]-subtractbit+10;
subtractbit=1;
Res.intpart[i]=value;
}
else
{
int value=pn1->intpart[i]-pn2->intpart[i]-subtractbit;
subtractbit=0;
Res.intpart[i]=value;
}
Res.intbits++;
}
Res.sign=swapflag?!n1.sign:n1.sign; /*决定符号*/
Res.AdjustBits();
}
}
void CWTNumber::WTDivide(const CWTNumber& n1,const CWTNumber& n2,CWTNumber& Res)
{
CWTNumber z1=n1,z2=n2;
int deta=z2.floatbits-z1.floatbits;
z1.MoveFloatPoint(z1.floatbits);
z2.MoveFloatPoint(z2.floatbits);
Res.InitWTNumberToZero();
if(n1.IsZero()) return ;
if(n2.IsZero()) {
Res.sign=n1.sign;
Res.MakeInfinite();
return ;
}
z1.sign=z2.sign=0; /*统一符号,便于比较大小*/
while(z1.intbits!=z2.intbits) { /*确保数位相等,这步耗费很多时间*/
if(z1.intbits z1.MoveFloatPoint(1);
deta--;
} else {
z2.MoveFloatPoint(1);
deta++;
}
}
while(Res.floatbits<(INT_BIT_MAX/2)) {
int cmp=z1.WTCompare(z2);
int n=10;
CWTNumber mulres,subres;
if(cmp==-1) { /*z1 z1.MoveFloatPoint(1);
Res.floatpart[Res.floatbits++]=0;
continue;
} else if(cmp==0) { /*z1==z2*/
Res.floatpart[Res.floatbits++]=1;
break;
}
do { /*找商*/
CWTNumber tmp;
tmp.intpart[0]=--n;
tmp.intbits=1;
WTMultiply(z2,tmp,mulres);
} while((cmp=mulres.WTCompare(z1))==1);
Res.floatpart[Res.floatbits++]=n;
if(cmp==0) break;
WTSubtract(z1,mulres,subres);
subres.MoveFloatPoint(1);
z1=subres;
}
Res.MoveFloatPoint(1);
Res.MoveFloatPoint(deta);
/* 判断符号,异号为负*/
if(n1.sign^n2.sign) Res.sign=1;
}
char *CWTNumber::Result(const char *val1,const char *val2,PFNCALC pfnCalc)
{
CWTNumber n1,n2,res;
n1.StrToWTNumber(val1);
n2.StrToWTNumber(val2);
pfnCalc(n1,n2,res);
return res.ToString();
}

char* CWTNumber::ToString()
{
FreeString();
m_sz=new char[StrLenByWTNumber()];
WTNumberToStr(m_sz);
return m_sz;
}

CWTNumber& CWTNumber::operator=(const CWTNumber& n)
{
if(this!=&n) {
FreeString();
memcpy(this,&n,sizeof(CWTNumber));
if(n.m_sz)
{
m_sz=strdup(n.m_sz);
}
}
return *this;
}


CWTNumber CWTNumber::operator+(const CWTNumber& n)
{
CWTNumber res;
CWTNumber::WTAdd(*this,n,res);
return res;
}
CWTNumber CWTNumber::operator-(const CWTNumber& n)
{
CWTNumber res;
CWTNumber::WTSubtract(*this,n,res);
return res;
}
CWTNumber CWTNumber::operator*(const CWTNumber& n)
{
CWTNumber res;
CWTNumber::WTMultiply(*this,n,res);
return res;
}
CWTNumber CWTNumber::operator/(const CWTNumber& n)
{
CWTNumber res;
CWTNumber::WTDivide(*this,n,res);
return res;
}
CWTNumber& CWTNumber::operator+=(const CWTNumber& n)
{
CWTNumber n1=*this,n2=n;
CWTNumber::WTAdd(n1,n2,*this);
return *this;
}
CWTNumber& CWTNumber::operator-=(const CWTNumber& n)
{
CWTNumber n1=*this,n2=n;
CWTNumber::WTSubtract(n1,n2,*this);
return *this;
}
CWTNumber& CWTNumber::operator*=(const CWTNumber& n)
{
CWTNumber n1=*this,n2=n;
CWTNumber::WTMultiply(n1,n2,*this);
return *this;
}
CWTNumber& CWTNumber::operator/=(const CWTNumber& n)
{
CWTNumber n1=*this,n2=n;
CWTNumber::WTDivide(n1,n2,*this);
return *this;
}
bool CWTNumber::operator>(const CWTNumber& n)
{
return WTCompare(n)==1;
}
bool CWTNumber::operator>=(const CWTNumber& n)
{
return WTCompare(n)!=-1;
}
bool CWTNumber::operator<(const CWTNumber& n)
{
return WTCompare(n)==-1;
}
bool CWTNumber::operator<=(const CWTNumber& n)
{
return WTCompare(n)!=1;
}
bool CWTNumber::operator==(const CWTNumber& n)
{
return WTCompare(n)==0;
}
bool CWTNumber::operator!=(const CWTNumber& n)
{
return WTCompare(n)!=0;
}
使用演示:
#include
#include "WTNumber.h"

int main()
{
char sz1[256]="";
char sz2[256]="";
puts("请输入两个数字:");
while(scanf("%s%s",sz1,sz2)!=-1)
{
CWTNumber n1(sz1),n2(sz2);
printf("两数相加结果:\n%s\n",(n1+n2).ToString());
printf("两数相减结果:\n%s\n",(n1-n2).ToString());
printf("两数相乘结果:\n%s\n",(n1*n2).ToString());
printf("两数相除结果:\n%s\n",(n1/n2).ToString());
puts("请输入两个数字:");
}
return 0;
}
运行结果:
请输入两个数字:
13 7
两数相加结果:
20
两数相减结果:
6
两数相乘结果:
91
两数相除结果:
1.85714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714

2010年2月18日星期四

英文写作第一反应词替换表

多同学经常把第一反应词翻来覆去的用,这样的后果就是:第一,写文章时用词的质量一直上不去;第二,一直缺乏对背过的单词的应用以及通过应用的语境理解和辨析。下面,我给大家列举了我们在写作常用的那些第一反应词的替换表,旨在告诉大家,要让自己的语言表达能力书面化,多样化。

很多同学在写作的时候,往往想到某个意思,立刻脑子中想到都是例如I think, important, show, because, moreandmore等等这些词汇,这些词汇在英语教学中,我们称他们为第一反应词,所谓第一反应词,很好理解,就是每个人第一时间反应出来的这些表达。那么,如果要写出一篇高质量的文章,除了内容,词的使用能够表现出你的英语能力,我们很多同学的阅读词汇量远远大于写作词汇量,原因很简单,大家背了很多漂亮的单词,但是却从不给他们“出镜”的机会,而是把这些第一反应词翻来覆去的用,这样的后果就是:第一,写文章时用词的质量一直上不去;第二,一直缺乏对背过的单词的应用以及通过应用的语境理解和辨析。下面,我给大家列举了我们在写作常用的那些第一反应词的替换表,旨在告诉大家,要让自己的语言表达能力书面化,多样化。

through->in term of/via

operate->manipulate

offspring->descendant

inevitable-dispensable

detail->specific

explain->interpret

obvious->conspicuous

hurt->vulnerable

use->employ/utilize

value->merit

provide->lend->offer

true->accurate

leading to->contribute to/ conduce to/result in

more and more->increasing/growing

hardly->merely->barely

well-known->outstanding

large->miraculous/marvelous

although->albeit/notwithstanding

in fact->actually/virtually

want->intend to/tend to/be inclined to

because->in that

may be->probably

to sum->to summarize/in conclusion

explain->interpret/illustrate

change->alert

chance->alternative

custom->convention/tradition

think->contemplate/muse/meditate/retrospect

arouse->ignite/stimulate/spur/motivate

limit->stress/hinder/hamper

key->crucial/vital/consequential

old->ancient

emphasis->accentuate

devote to->dedicate to

character->trait/individuality/idiosyncrasy/personality

expect->anticipate

join->participate

delegate->representative

bias->prejudice/discriminate/tendency

thrive->palmy/floushing/prosperity

clash->conflict/collision/rencounter

publicize->propagandize

agree partly->agree with reserve

proper->apposite

want to->desire

big city->metropolis

lawmaking->legislation

first->primarily

but->nonetheless/nevertheless

child->juvenile

absorb->assimilate

hand in->render

undermine->sap/enervate/debilitate

get into chaos->with chaos ensuing

key->pivot/crux

sway->vacillate

fanatic patriotism->jingoism/chauvinism

persusive->thorough/sound/specific/convincing

consider->take into account

vague->gratuitous/unwarranted/oversimplified

absorb->assimilate
agree partly->agree with reserve
although->albeit/notwithstanding
arouse->ignite/stimulate/spur/motivate
because->in that
bias->prejudice/discriminate/tendency
big city->metropolis
but->nonetheless/nevertheless
chance->alternative
change->alert
character->trait/individuality/idiosyncrasy/personality
child->juvenile
clash->conflict/collision/rencounter
consider->take into account
custom->convention/tradition
delegate->representative
detail->specific
devote to->dedicate to
emphasis->accentuate
expect->anticipate
explain->interpret
explain->interpret/illustrate
fanatic patriotism->jingoism/chauvinism
first->primarily
get into chaos->with chaos ensuing
hand in->render
hardly->merely->barely
hurt->vulnerable
in fact->actually/virtually
inevitable-dispensable
join->participate
key->crucial/vital/consequential
key->pivot/crux
large->miraculous/marvelous
lawmaking->legislation
leading to->contribute to/ conduce to/result in
limit->stress/hinder/hamper
may be->probably
more and more->increasing/growing
obvious->conspicuous
offspring->descendant
old->ancient
operate->manipulate
persusive->thorough/sound/specific/convincing
proper->apposite
provide->lend->offer
publicize->propagandize
sway->vacillate
think->contemplate/muse/meditate/retrospect
thrive->palmy/floushing/prosperity
through->in term of/via
to sum->to summarize/in conclusion
true->accurate
undermine->sap/enervate/debilitate
use->employ/utilize
vague->gratuitous/unwarranted/oversimplified
value->merit
want to->desire
want->intend to/tend to/be inclined to
well-known->outstanding

2010年2月3日星期三

求平方根倒数的算法

下面这个求1/\sqrt{x}的函数号称比直接调用sqrt库函数快4倍,来自游戏Quake III的源代码。

float InvSqrt (float x){     float xhalf = 0.5f*x;     int i = *(int*)&x;     i = 0x5f3759df - (i>>1);     y = *(float*)&i;     y = y*(1.5f - xhalf*y*y);     return x; }

我们这里分析一下它的原理(指程序的正确性,而不是解释为何快)。

分析程序之前,我们必须解释一下float数据在计算机里的表示方式。一般而言,一个float数据x共32个bit,和int数据一样。其中前23位为有效数字M_x,后面接着一个8位数据E_x表示指数,最后一位表示符号,由于这里被开方的数总是大于0,所以我们暂不考虑最后一个符号位。此时

x=1.M_x 2^{E_x-127}

如果我们把计算机内的浮点数x看做一个整数I_x,那么

I_x = 2^{23}E_x+M_x

现在开始逐步分析函数。这个函数的主体有四个语句,分别的功能是:

int i = *(int*)&x; 这条语句把x转成i=I_x

i = 0x5f3759df - (i>>1); 这条语句从I_x计算I_{1/\sqrt{x}}

y = *(float*)&i; 这条语句将I_{1/\sqrt{x}}转换为1/\sqrt{x}

y = y*(1.5f - xhalf*y*y); 这时候的y是近似解;此步就是经典的牛顿迭代法。迭代次数越多越准确。

关键是第二步 i = 0x5f3759df - (i>>1); 这条语句从I_x计算I_{1/\sqrt{x}},原理:

y=1/\sqrt{x},用x=(1+m_x)2^{e_x}y=(1+m_y)2^{e_y}带入之后两边取对数,再利用近似表示\log_2(1+z)\sim z+\delta,算一算就得到

I_y = \frac{2}{3}(127-\delta)2^{23}-I_x/2

若取\delta=0.0450465679168701171875\frac{2}{3}(127-\delta)2^{23}就是程序里所用的常量0x5f3759df。至于为何选择这个\delta,则应该是曲线拟合实验的结果。

2010年1月18日星期一

致想去美国旅游的加拿大中国留学生们

转自校内网 c

林楷翔

林楷翔

第一篇日志。虽然不知道大家去美国的热情有没有去

obarts(多伦多大学图书馆)那么强烈,我就先简单写写本人是如何申请美国签证的,仅供参考。具体信息在该官方网站上有。

这是申请美国签证的官方网站:https://www.nvars.com/Production/UserLogin.aspx

有兴趣的可以点击“HOME"看看具体信息,比如其他类型的签证。不过要是去旅游的直接上login就行了。输入自己的护照,然后系统就会给你一个reference number。把那个数字记住因为每次登陆都需要那个号。在这个过程中,还需要交8,9块钱手续费,用visa,mastercard就行。然后把自己信息填全了,尤其是自己的current address,后,开始填写表格。一共有4个表格,156,157,158还有一个银行bill。156是在网上填,点击链接拉到网页最下面就有,填好后最好身边就有个打印机可以直接打出来。156表打出来后需要贴上照片,文章后面会提到。然后剩下两张表也在网上填好打出来就行,也可以保存下来供日后检查。最后的那个bill payment,一共有三张一样的,一张交完钱后留给银行,两张留着面签时候用。钱在Scotia bank银行办理,google map可以查一下,多伦多到处都有这个银行,而且哪个分银都可以办,所以找个近的就行。加币大概是140左右吧尴尬

需要注意的是,156表中,issuing country是CHINA,issuing date写你护照第一页上的日期,不是加拿大签证那张纸上的日期,签证地点还有expiration date也是第一页上的。

签证当天最好提前买一个prepaid的信封,多伦多的美国大使馆附近就有一个叫Staple的地方,那里可以买到passport信封,在那里卖的人都知道。

除了信封,还要开一个学校的在校证明,去你所在的college办一个就行了,应该是免费的;然后找一个专门照签证照的地方照个相片,他们都知道去美国应该要什么样的。一张就够了,但多多益善。签证的准备就是那么多,至于银行存款证明,我准备了但是签证官没管我要。

签证当天最好早点去,早预约时间的半个小时,因为有很多人在那里排队。一本护照四张表格再加上一封证明信应该就会approved的了吧。还有什么问题就回复好了。由于是第一次签美国,不知道还会有什么遇到没遇到的问题。所以仅供参考。祝你们成功吃饭

2010年1月5日星期二

9种排骨做法


本文来自这个频道 品质生活

生活的愉悦和舒适,消费的时尚和品味——给你工作八小时之外

这里更讲究营养的搭配,记录下来,准备一个礼拜做一款,满足一下我们家一群肉食动物的食欲吧。尽量做到“神似”,“形似”类似形式主义,就不考虑了,反正最后都进入肚子了呢。朋友们如若喜欢,也可以照着做的,很简

1、香酥排骨


用料:
  1、猪排骨一斤。
  2、葱三棵。
  3、老姜一块。
  4、酱油一大匙。
  5、五香粉咖啡匙。
  6、熟芝麻一大匙。
  7、香油一小匙。
  8、盐、味精适量。
  9、汤或水一汤匙。
  做法:
  1、排骨斩段,过飞水捞出;葱切段;姜切片。
  2、将排骨放沸水锅中煮约二十分钟,捞出后装碗里,放入酱油、姜片、盐,拌匀码味约三十分钟。
  3、锅中放油烧至七成热,下排骨炸至表面微黄色后捞出。锅中留约一两油,放入排骨、汤或水、五香粉、味精,用中火烧至汤汁将干时,放芝麻、香油铲匀即可起锅装盘上桌。


2、草莓酱排骨
酱香

用料:
  1、猪排骨半斤。
  2、草莓酱两大匙。
  3、蕃茄酱两大匙。
  4、白糖一咖啡匙。
  5、盐、鸡精适量。
  做法:
  1、排骨斩段,飞水去血沫后捞出。
  2、将排骨装盘子里,放沸水蒸锅中大火蒸约半小时后,取出待用。
  3、锅中放油烧至四成热,放入草莓酱、蕃茄酱、白糖、盐用小火慢炒约一分钟,下排骨、鸡精,翻炒均匀后起锅装盘即成。


3、糖醋排骨
酸甜

用料:
  1、猪排骨一斤,斩段。
  2、白糖三大匙。
  3、醋四大匙。
  4、酱油两大匙。
  5、葱四棵,切段。
  6、老姜一小块、蒜一瓣,均切片。
  7、泡辣椒六个,切段。
  8、淀粉一大匙,加水兑成芡汁。
  9、盐适量。
  做法:
  1、将排骨过沸水,捞出沥干待用。
  2、锅中放油烧至七成热,下排骨爆干水气再爆至微黄,放入酱油、泡辣椒段、姜蒜片略炒后,加约两斤水,烧沸后改小火烧约一小时。至汤汁快干时,下盐、醋、糖、葱铲匀,勾芡,铲匀,起锅装盘即成。



4、豉香排骨
豆豉

用料:
  1、排骨一斤半。
  2、豆豉三大匙。
  3、芹菜二两。
  4、葱半两。
  5、老姜一块。
  6、蒜半个。
  7、油辣椒三大匙。
  8、蚝油两大匙。
  9、干红葡萄酒半汤匙。
  10、盐、鸡精适量。
  做法:
  1、将排骨过沸水后捞出沥干水分;蒜切末;老姜一半切末一半切片;芹菜切段;葱切段。
  2、在排骨中放入姜片、葱段、干红葡萄酒,拌匀后码味二十分钟以上。
  3、放沸水蒸锅中大火蒸约四十分钟,取出后沥干水分。
  4、锅中放油烧至五成热,下排骨炸呈微黄色后捞出待用。
  5、锅中留约一汤匙油,烧至五成热,下姜末、蒜末、豆豉,改小火不断翻炒约一分半钟,下排骨、油辣椒、芹菜、蚝油、盐,慢炒约三分钟至入味,放鸡精铲匀,起锅装盘即成。


5、五香粉蒸排骨
黏糊粉

用料:
  1、猪排骨一斤,斩段。
  2、大米二两。
  3、葱四棵,切碎。
  4、甜面酱一大匙。
  5、红糖一大匙。
  6、酱油两大匙。
  7、老姜极小块,切末。
  8、醪糟汁两大匙。
  9、五香粉一小匙。
  做法:
  1、在排骨中放入盐、酱油、红糖、甜面酱、醪糟汁、葱碎、姜末、五香粉拌匀码味。
  2、将珍珠米下锅烘焙呈微黄色,盛出晾凉后,放搅拌机里搅碎,倒入排骨中拌匀。上沸水蒸锅里用中大火蒸一小时。将碗取出后用另一大盘扣在碗上,把排骨翻倒在盘里即可上桌。


6、海带排骨汤
海带

用料:
  1、猪排骨两斤,斩段。
  2、鲜海带一斤,切长方块。
  3、老姜一块,用刀拍破。
  4、花椒二十余粒。
  5、黄酒两大匙。
  6、盐适量。
  做法:
  1、将海带块放沸水中十分钟,捞出后泡清水里。
  2、将排骨放沸水里焯一下去血沫。
  3、在炖锅中加半锅水,下排骨、海带、老姜、花椒、黄酒,大火烧沸后改微火煲一个半小时后放盐,改中火炖约十分钟,起锅盛汤钵里可配上适合自己口味的调料即可食用。



7、莲藕排骨汤
莲藕香

用料:
  1、排骨一斤半,斩成段在沸水中焯一下后捞起。
  2、藕两斤(边沿九孔的粉藕),切小块或切段后用刀拍破。
  3、老姜一切,用刀拍破。
  4、花椒约二十粒。
  5、黄酒两大匙。
  6、盐适量。
  做法:
  先把藉放炖锅中小火炖四十分钟,或在高压锅中压二十分钟,然后放入排骨,烧沸后打去浮沫,再放料酒、花椒、老姜,沸后改小火炖一小时后,放盐再继续炖一小时即成。



8、冬瓜排骨汤
冬瓜肉

用料:
  1、猪排骨一斤,斩块。
  2、冬瓜一斤半,切约一厘米厚的片。
  3、葱半两,挽结。
  4、老姜一块,用刀拍破。
  5、花椒约二十粒。
  6、黄酒两匙。
  7、盐适量。
  做法:
  1、将排骨在沸水中焯一下去腥味和血水,捞起备用。
  2、炖锅中加水,放入姜块、葱结、花椒,烧沸后倒入排骨、黄酒。
  3、再次烧沸后放盐,改微火煲一个半小时,再倒入冬瓜块。
  4、改中火煮约二十分钟至冬瓜软熟,捞去葱结不要,盛烫碗里即可上桌。


9、孜然排骨
孜然一体

用料:
  1、猪排骨半斤,斩小段后充分洗净。
  2、孜然粉一咖啡匙。
  3、花椒粉一咖啡匙。
  4、辣椒粉两匙(可依个人喜好增减)。
  5、葱两棵切碎。
  6、老姜一小小块切末。
  7、料酒两大匙。
  8、白糖一匙。
  9、盐、味精、红油适量。
  做法:
  1、用盐、姜末、葱碎料酒放排骨里拌匀腌两小时以上。
  2、放入孜然粉、花椒粉、辣椒粉、白糖、味精、红油,拌匀。
  3、放微波炉里高火烤10分钟即成

2009年9月27日星期日

来自官方的 windows 7 快捷键大全

1. 轻松访问键盘快捷方式

下表包含了可以有助于使计算机更易于使用的键盘快捷方式。
按键 功能
按住右 Shift 八秒钟 启用和关闭筛选键
按左 Alt+左 Shift+PrtScn(或 PrtScn) 启用或关闭高对比度
按左 Alt+左 Shift+Num Lock 启用或关闭鼠标键
按 Shift 五次 启用或关闭粘滞键
按住 Num Lock 五秒钟 启用或关闭切换键
Windows 徽标键 + U 打开轻松访问中心

2. 常规键盘快捷方式

下表包含了常规键盘快捷方式。
按键 功能
F1 显示帮助
Ctrl+C 复制选择的项目
Ctrl+X 剪切选择的项目
Ctrl+V 粘贴选择的项目
Ctrl+Z 撤消操作
Ctrl+Y 重新执行某项操作
Delete 删除所选项目并将其移动到“回收站”
Shift+Delete 不先将所选项目移动到“回收站”而直接将其删除
F2 重命名选定项目
Ctrl+向右键 将光标移动到下一个字词的起始处
Ctrl+向左键 将光标移动到上一个字词的起始处
Ctrl+向下键 将光标移动到下一个段落的起始处
Ctrl+向上键 将光标移动到上一个段落的起始处
Ctrl+Shift 加某个箭头键 选择一块文本
Shift 加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本
Ctrl 加任意箭头键+空格键 选择窗口中或桌面上的多个单个项目
Ctrl+A 选择文档或窗口中的所有项目
F3 搜索文件或文件夹
Alt+Enter 显示所选项的属性
Alt+F4 关闭活动项目或者退出活动程序
Alt+空格键 为活动窗口打开快捷方式菜单
Ctrl+F4 关闭活动文档(在允许同时打开多个文档的程序中)
Alt+Tab 在打开的项目之间切换
Ctrl+Alt+Tab 使用箭头键在打开的项目之间切换
Ctrl+鼠标滚轮 更改桌面上的图标大小
Windows 徽标键 + Tab 使用 Aero Flip 3-D 循环切换任务栏上的程序
Ctrl + Windows 徽标键 + Tab 通过 Aero Flip 3-D 使用箭头键循环切换任务栏上的程序
Alt+Esc 以项目打开的顺序循环切换项目
F6 在窗口中或桌面上循环切换屏幕元素
F4 在 Windows 资源管理器中显示地址栏列表
Shift+F10 显示选定项目的快捷菜单
Ctrl+Esc 打开「开始」菜单
Alt+加下划线的字母 显示相应的菜单
Alt+加下划线的字母 执行菜单命令(或其他有下划线的命令)
F10 激活活动程序中的菜单栏
向右键 打开右侧的下一个菜单或者打开子菜单
向左键 打开左侧的下一个菜单或者关闭子菜单
F5 刷新活动窗口
Alt+向上键 在 Windows 资源管理器中查看上一级文件夹
Esc 取消当前任务
Ctrl+Shift+Esc 打开任务管理器
插入 CD 时按住 Shift 阻止 CD 自动播放

3. 对话框键盘快捷方式

下表包含了在对话框中使用的键盘快捷方式。
按键 功能
Ctrl+Tab 在选项卡上向前移动
Ctrl+Shift+Tab 在选项卡上向后移动
Tab 在选项上向前移动
Shift+Tab 在选项上向后移动
Alt+加下划线的字母 执行与该字母匹配的命令(或选择选项)
Enter 对于许多选定命令代替单击鼠标
空格键 如果活动选项是复选框,则选中或清除该复选框
箭头键 如果活动选项是一组选项按钮,则选择某个按钮
F1 显示帮助
F4 显示活动列表中的项目
Backspace 如果在“另存为”或“打开”对话框中选中了某个文件夹,则打开上一级文件夹

4. Windows 徽标键相关的快捷键

Windows徽标键就是显示为Windows旗帜,或标有文字Win或Windows的按键,以下简称Win键。XP时代有4个经典的 Win 键组合:R/E/F/L。到了 Win7,花样更多了。
Win:打开或关闭开始菜单。
Win + Pause:显示系统属性对话框。
Win + D:显示桌面。
Win + M:最小化所有窗口。
Win + SHIFT + M:还原最小化窗口到桌面上。
Win + E:打开我的电脑
Win + F:搜索文件或文件夹。
Ctrl + Win + F:搜索计算机(如果您在网络上) 。
Win + L:锁定您的计算机或切换用户。
Win + R:打开运行对话框。
Win + T:切换任务栏上的程序(感觉是和alt+ESC 一样 )
Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,新开一个实例。(感觉这个比较新颖,貌似快速启动。) Shift + Windows logo key +number:Start a new instance of the program pinned to the taskbar in the position indicated by the number.
Ctrl + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,切换到上一次的活动窗口。 Ctrl+Windows logo key +number:Switch to the last active window of the program pinned to the taskbar in the position indicated by the number.
ALT + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,显示跳转清单。 Alt+Windows logo key +number: Open the Jump List for the program pinned to the taskbar in the position indicated by the number.
Win + TAB:循环切换任务栏上的程序并使用的Aero三维效果。
Ctrl + Win + TAB:使用方向键来循环循环切换任务栏上的程序,并使用的Aero三维效果。
按Ctrl + Win + B:切换到在通知区域中显示信息的程序
Win + 空格:预览桌面。
Win + ↑:最大化窗口。
Win + ↓:最小化窗口。
Win + ←:最大化到窗口左侧的屏幕上。
Win + →:最大化窗口到右侧的屏幕上。
Win + Home:最小化所有窗口,除了当前激活窗口。
Win+ SHIFT + ↑:拉伸窗口的到屏幕的顶部和底部。
Win+ SHIFT + →/←:移动一个窗口,从一个显示器到另一个。
Win + P:选择一个演示文稿显示模式。
Win + G:循环切换侧边栏的小工具。
Win + U:打开轻松访问中心。
Win + x:打开Windows移动中心。

5. Windows Explorer相关快捷键

Ctrl+N 打开新窗口
Ctrl+Shift+N 新建文件夹
End 显示活动窗口的底部
Home 显示活动窗口的顶部
F11 最大化或最小化活动窗口
Num Lock+小键盘星号(*) 显示选中文件夹的所有子文件夹
Num Lock+小键盘加号(+) 显示选中文件夹的内容
Num Lock+小键盘减号(-) 折叠选中文件夹
左方向键 折叠当前展开的选中文件夹或选中上层文件夹
Alt+Enter 打开选中项目的属性对话框
Alt+P 显示预览窗格
Alt+左方向键 切换到前一次打开的文件夹
右方向键 显示(展开)当前选中项目或选中第一个子文件夹
Alt+右方向键 切换到下一次后打开的文件夹
Alt+上方向键 打开上层文件夹
Ctrl+鼠标滚轮 改变文件和文件夹图标的大小和外观
Alt+D 选中地址栏(定位到地址栏)
Ctrl+E 选中搜索框(定位到搜索框)

6. 放大镜键盘快捷方式

下表包含了使用放大镜的键盘快捷方式。
按键 功能
Windows 徽标键 + 加号或减号 放大或缩小
Ctrl+Alt+空格键 显示鼠标指针
Ctrl+Alt+F 切换到全屏模式
Ctrl+Alt+L 切换到镜头模式
Ctrl+Alt+D 切换到停靠模式
Ctrl+Alt+I 反色
Ctrl+Alt+箭头键 按箭头键的方向平移
Ctrl+Alt+R 调整镜头的大小
Windows 徽标键 + Esc 退出放大镜

7. 远程桌面相关快捷键

Alt+Page Up 按从左向右顺序切换程序
Alt+Page Down 按从右向左切换程序
Alt+Insert 按程序打开先后顺序循环切换程序
Alt+Home 显示“开始”菜单
Ctrl+Alt+Break 在窗口模式和全屏之间切换
Ctrl+Alt+End 显示Windows安全性对话框
Alt+Delete 显示当前窗口的系统菜单
Ctrl+Alt+-(小键盘减号) 当前活动窗口截图
Ctrl+Alt++(小键盘加号) 全屏截图
Ctrl+Alt+向右键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。
Ctrl+Alt+向左键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。

8. 画图键盘快捷方式

下表包含了使用画图的键盘快捷方式。
按键 功能
Ctrl+N 创建新的图片
Ctrl+O 打开现有图片
Ctrl+S 将更改保存到图片
F12 将此图片另存为新文件
Ctrl+P 打印图片
Alt+F4 关闭图片及其画图窗口
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择整个图片
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
向右键 将选择内容或活动图形向右移动一个像素
向左键 将选择内容或活动图形向左移动一个像素
向下键 将选择内容或活动图形向下移动一个像素
向上键 将选择内容或活动图形向上移动一个像素
Esc 取消某个选择
Delete 删除某个选择
Ctrl+B 粗体选择文本
Ctrl++ 将画笔、直线或形状轮廓的宽度增加一个像素
Ctrl+- 将画笔、直线或形状轮廓的宽度减少一个像素
Ctrl+I 将所选文本改为斜体
Ctrl+U 为所选文本添加下划线
Ctrl+E 打开“属性”对话框
Ctrl+W 打开“调整大小和扭曲”对话框
Ctrl+Page Up 放大
Ctrl+Page Down 缩小
F11 以全屏模式查看图片
Ctrl+R 显示或隐藏标尺
Ctrl+G 显示或隐藏网格线
F10 或 Alt 显示快捷键提示
Shift+F10 显示当前快捷菜单
F1 打开“画图”帮助

9. 写字板的键盘快捷方式

按键 功能
Ctrl+N 新建一个文档
Ctrl+O 打开一个现有文档
Ctrl+S 将更改保存到文档
F12 将此文档另存为新文件
Ctrl+P 打印文档
Alt+F4 关闭“写字板”
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择整个文档
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
Ctrl+B 将所选文本改为粗体
Ctrl+I 将所选文本改为斜体
Ctrl+U 为所选文本添加下划线
Ctrl+= 使选择的文本成为下标
Ctrl+Shift+= 使选择的文本成为上标
Ctrl+L 向左对齐文本
Ctrl+E 向中心对齐文本
Ctrl+R 向右对齐文本
Ctrl+J 对齐文本
Ctrl+1 设置单倍行距
Ctrl+2 设置双倍行距
Ctrl+5 将行距设置为 1.5
Ctrl+Shift+> 增加字体大小
Ctrl+Shift+< 减小字体大小
Ctrl+Shift+A 将字符更改为全部使用大写字母
Ctrl+Shift+L 更改项目符号样式
Ctrl+D 插入 Microsoft 画图图片
Ctrl+F 在文档中查找文本
F3 在“查找”对话框中查找文本的下一个实例
Ctrl+H 在文档中替换文本
Ctrl+向左键 将光标向左移动一个字
Ctrl+向右键 将光标向右移动一个字
Ctrl+向上键 将光标移动到上一行
Ctrl+向下键 将光标移动到下一行
Ctrl+Home 移动到文档的开头
Ctrl+End 移动到文档的结尾
Ctrl+Page Up 向上移动一个页面
Ctrl+Page Down 向下移动一个页面
Ctrl+Delete 删除下一个字
F10 显示快捷键提示
Shift+F10 显示当前快捷菜单
F1 打开“写字板”帮助

10. 计算器的键盘快捷方式

按键 功能
Atl+1 切换到标准模式
Alt+2 切换到科学型模式
Alt+3 切换到程序员模式
Alt+4 切换到统计信息模式
Ctrl+E 打开日期计算
Ctrl+H 将计算历史记录打开或关闭
Ctrl+U 打开单位转换
Alt+C 计算或解决日期计算和工作表
F1 打开“计算器”帮助
Ctrl+Q 按下 M- 按钮
Ctrl+P 按下 M+ 按钮
Ctrl+M 按下 MS 按钮
Ctrl+R 按下 MR 按钮
Ctrl+L 按下 MC 按钮
% 按下 % 按钮
F9 按下 +/– 按钮
/ 按下 / 按钮
* 按下 * 按钮
+ 按下 + 按钮
- 按下 – 按钮
R 按下 1/× 按钮
@ 按下平方根按钮
0-9 按下数字按钮 (0-9)
= 按下 = 按钮
. 按下 .(小数点)按钮
Backspace 按下 Backspace 按钮
Esc 按下 C 按钮
Del 按下 CE 按钮
Ctrl+Shift+D 清除计算历史记录
F2 编辑计算历史记录
向上箭头键 在计算历史记录中向上导航
向下箭头键 在计算历史记录中向下导航
Esc 取消编辑计算历史记录
Enter 编辑后重新计算计算历史记录
F3 在科学型模式下选择“角度”
F4 在科学型模式下选择“弧度”
F5 在科学型模式下选择“梯度”
I 在科学型模式下按 Inv 按钮
D 在科学型模式下按 Mod 按钮
Ctrl+S 在科学型模式下按 sinh 按钮
Ctrl+O 在科学型模式下按 cosh 按钮
Ctrl+T 在科学型模式下按 tanh 按钮
( 在科学型模式下按 ( 按钮
) 在科学型模式下按 ) 按钮
N 在科学型模式下按 ln 按钮
; 在科学型模式下按 Int 按钮
S 在科学型模式下按 sin 按钮
O 在科学型模式下按 cos 按钮
T 在科学型模式下按 tan 按钮
M 在科学型模式下按 dms 按钮
P 在科学型模式下按 pi 按钮
V 在科学型模式下按 F-E 按钮
X 在科学型模式下按 Exp 按钮
Q 在科学型模式下按 x^2 按钮
Y 在科学型模式下按 x^y 按钮
# 在科学型模式下按 x^3 按钮
L 在科学型模式下按 log 按钮
! 在科学型模式下按 n! 按钮
Ctrl+Y 在科学型模式下按 y√x 按钮
Ctrl+B 在科学型模式下按 3√x 按钮
Ctrl+G 在科学型模式下按 10x 按钮
F5 在程序员模式下选择 Hex
F6 在程序员模式下选择 Dec
F7 在程序员模式下选择 Oct
F8 在程序员模式下选择 Bin
F12 在程序员模式下选择 Qword
F2 在程序员模式下选择 Dword
F3 在程序员模式下选择 Word
F4 在程序员模式下选择 Byte
K 在程序员模式下按 RoR 按钮
J 在程序员模式下按 RoL 按钮
% 在程序员模式下按 Mod 按钮
( 在程序员模式下按 ( 按钮
) 在程序员模式下按 ) 按钮
| 在程序员模式下按 Or 按钮
^ 在程序员模式下按 Xor 按钮
~ 在程序员模式下按 Not 按钮
& 在程序员模式下按 And 按钮
A-F 在程序员模式下按 A-F 按钮
空格键 在程序员模式下切换位值
A 在统计信息模式下按 Average 按钮
Ctrl+A 在统计信息模式下按 Average Sq 按钮
S 在统计信息模式下按 Sum 按钮
Ctrl+S 在统计信息模式下按 Sum Sq 按钮
T 在统计信息模式下按 S.D. 按钮
Ctrl+T 在统计信息模式下按 Inv S.D. 按钮
D 在统计信息模式下按 CAD 按钮

11. Windows 日记本键盘快捷方式

下表包含了使用 Windows 日记的键盘快捷方式。
按键 功能
Ctrl+N 开始新的便笺
Ctrl+O 打开最近使用的便笺
Ctrl+S 将更改保存到便笺
Ctrl+Shift+V 将便笺移动到特定的文件夹
Ctrl+P 打印便笺
Alt+F4 关闭便笺及其日记本窗口
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择页面上的所有项目
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
Esc 取消某个选择
Delete 删除某个选择
Ctrl+F 开始基本查找
Ctrl+G 转到页面
F5 刷新查找结果
F5 刷新便笺列表
F6 在便笺列表和便笺之间切换
Ctrl+Shift+C 显示便笺列表中列标题的快捷菜单
F11 以全屏模式查看便笺
F1 打开“日记本”帮助

12. Windows 帮助查看器键盘快捷方式

下表包含了帮助查看器使用的键盘快捷方式。
按键 功能
Alt+C 显示目录
Alt+N 显示“连接设置”菜单
F10 显示“选项”菜单
Alt+向左键 返回先前查看过的主题
Alt+向右键 向前移动到下一个(先前已查看过的)主题
Alt+A 显示客户支持页面
Alt+Home 显示帮助和支持主页
Home 移动到主题的开头
End 移动到主题的末尾
Ctrl+F 搜索当前主题
Ctrl+P 打印主题
F3 将光标移动到搜索框

2009年8月12日星期三

用英语描述疾病

(1) 一般病情:

He feels headache, nausea and vomiting. (他觉得头痛、恶心和想吐。)
He is under the weather. (他不舒服,生病了。)
He began to feel unusually tired. (他感到反常的疲倦。)
He feels light-headed. (他觉得头晕。)
She has been shut-in for a few days. (她生病在家几天了。)
Her head is pounding. (她头痛。)
His symptoms include loss of appetite, weight loss, excessive fatigue, fever and chills. (他的症状包括没有食欲、体重减轻、非常疲倦、发烧和发冷。)
He feels exhausted or fatigued most of the time. (他大部份时间都觉得非常疲倦。)
He has been lacking in energy for some time. (他感到虚弱有段时间了。)
He feels drowsy, dizzy and nauseated. (他觉得昏昏欲睡,头晕目眩和想吐。)
He feels as though everything around him is spinning. (他感到周围的东西都在打转。)
He has noticed some loss of hearing. (他发觉听力差些。)
She has some pains and itching around her eyes. (她眼睛四周又痛又痒。)


(2) 伤风感冒:

He has been coughing up rusty or greenish-yellow phlegm. (他咳嗽带有绿黄色的痰。)
His eyes feel itchy and he has been sneezing. (他眼睛发痒,而且一直在打喷嚏。)
He has a fever, aching muscles and hacking cough. (hacking = constant) (他有发烧,筋骨酸痛和常常咳嗽。)
He coughed with sputum and feeling of malaise. (malaise = debility) (他咳嗽有浓痰,而且觉得很虚弱。)

He gets a cold with a deep hacking cough. (他伤风咳嗽。)
He has a headache, aching bones and joints. (他头痛,骨头、关节也痛。)
He has a persistent cough. (他不停地在咳。)
He has bouts of uncontrollable coughing. (他一阵阵的咳嗽,难以控制。)
He has hoarse and has lost his voice sometimes. (他声音嘶哑,有时失声。)
He has a sore throat and a stuffy nose. (他嗓子疼痛而且鼻子不通。)
His breathing is harsh and wheezy. (他呼吸时,有气喘似的呼哧呼哧作响。)
He has a stabbing pain that comes on suddenly in one or both temples. (有时突然间太阳穴刺痛。)
He has a runny nose, sneezing or a scratchy throat. (他流鼻水,打喷嚏和喉咙沙哑。)


(3) 女性疾病:

She has noticed one lump in her breast. (她发觉乳房有个肿块。)
There is a hard, swollen lump on her right breast. (她右乳房有肿块。)
Her left breast is painful and swollen. (她左乳房疼痛且肿大。)
She has heavy bleeding with her periods. (她月经来的很多。)
Her vaginal discharge is white or greenish-yellow and unpleasant smelling. (她阴道分泌物带白色或绿黄色,而且气味不好。)
She has noticed occasional spotting of blood between periods. (在月经来的前后,她有时也发觉有滴滴达达的流血。)
She has some bleeding after intercourse. (性交后有出血。)
She feels some vaginal itching. (她感到阴部发痒。)
She has painful periods and abnormal vaginal discharge. (她月经来时疼痛,而且阴道有不正常的分泌物。)


(4) 手脚疾病:

His both hands and feet ache all over. (他两手两脚都很酸痛。)
He has pain on the sole of his feet. (他脚底很痛。)

There is a wart-like lump on the sole of right foot. (我右脚底有个像肉疣般的硬块。)
His ankles look puffy and they pit when he presses them with his finger. (pit = small dent form;句里的 they 和 them 都是指 ankles)(他的足踝好象肿了,用手按,就有小坑痕。)
The pain in his left foot is accompanied by redness and swelling. (左脚酸痛,并有红肿。)
The joints near his fingernails and knuckles look swollen. (指头和指节旁边的关节,似乎有肿大。)
He has numbness and tingling in his hands and fingers. (他的手和指头感到麻木和刺痛。)
His legs become painful following strenuous exercise. (激烈运动后,他的腿就痛。)
His knee is misshapen or unable to move. (他的膝盖有点畸形,也不能动。)
There are some swellings in his armpit. (他的腋窝肿大。)
He is troubled with painful muscles and joints. (他的筋骨和关节都痛。)
She is troubled by the pains in the back and shoulders. (她的后背和肩膀都痛。)
His knee has been bothering him for some time. (他的膝盖不舒服,已有一段时间了。)


(5) 睡眠不好:

He is sleeping poorly.(他睡不好)
He has difficulty in sleeping, inability to concentrate.(他不易入睡,也难集中精神。)
It is usually hard for her to fall asleep when she goes to bed at night.(她晚上就寝,很难入睡。)
He wakes during the night or early morning and finds it difficult to fall asleep again.(他晚间或清早醒来后,再也不能入睡。)
He has nightmares occasionally.(他有时做噩梦。)


(6) 男性疾病:

He urinates more frequently than usual.(他小便比平时多。)
He has difficulty controlling his bladder.(他很难控制小便。)(bladder:膀胱)
There are some lumps on his testicles. (他的睪丸有些硬块。)
He has had burning or pain when he urinates.(他小便时感到发烫和疼痛。)
He is passing less urine than usual.(他小便比平时少。)
He has had painless swelling in his scrotum.(他的阴囊有不痛的肿大。)
He feels lack of interest in sex.(他自觉对性的兴趣大减。)
He has difficulty starting his urine flow.(他小便不畅通。)
His urine stream is very weak and slow.(他小便流动得很慢很弱。)
He dribbles a little urine after he has finished urinating.(他小便后,还会有少量零星地滴下。)
He has had some discharge from his penis.(他的阴茎排出一些流脓。)
His urine is cloudy and it smells strong.(他的小便混浊,而且气味不好。)
He has a dull heavy ache in the crotch.(他的胯部感到隐痛。)
He has a small leakage of urine when he coughs or sneezes.(他咳嗽或打喷嚏时,会有点泄尿。)
He has trouble urinating.(他小便有困难。)


(7) 呼吸方面:

His breathing has become increasingly difficult.(他呼吸越来越困难。)
He has to breathe through his mouth.(他要用口呼吸。)
He is short of breath, even when he has not been exercising, he is breathless.(他喘气;即使不运动,他也是上气不接下气。)
His cough is more like wheezing.(他的咳嗽有呼哧呼哧的响声。)
His cough is dry, producing no phlegm.(他是干咳,没有痰。)
He has coughed up blood.(他咳嗽有血。)
His nose stuffed up when he had a cold.(他感冒时鼻子就不通。)
He coughs up a lot of phlegm (thick spit) on most days.(他多半时间咳出浓浓的痰。)
He has a feeling of tightness in the chest or a feeling that he is suffocating.(他胸部觉得闷闷的,好象透不过气来。)


(8)口腔毛病:

He has pain in his teeth or jaw. (他的牙齿和下巴疼痛。)
He has some problems with his teeth. (他牙齿有问题。)
The tooth hurts only when he bites down on it. (他咬东西时,牙齿就痛。)
His gums are red and swollen. (他的牙床红肿。)
His tongue is red and sore all over. (他的舌头到处红和痛。)
His breath smells bad and he has a foul taste in his mouth. (他口里有怪味。)
His gums do bleed. (他牙床有出血。)
He has some sore swellings on his gum or jaw. (他的牙床和下巴肿痛。)
He has sore places on or around the lip. (他的嘴唇和周围都很痛。)
There are cracks at the corners of his mouth. (他的嘴巴角落破了。)
There are some discolored areas inside on his tongue. (他舌头里边有些地方颜色怪怪的。)


(9) 肠胃毛病:

He has a bloated, uncomfortable feeling after meal. (他饭后肚子觉得胀胀的,很不舒服。)
He has bouts of abdominal pain. (他有一阵阵的肚痛。)
He feels bloated in his abdominal area. (他感到肚子胀胀的。) (注:胀胀的,像「puff up」,但不是真正的肿「swell up」。)
The pain is mainly in the lower (upper) right part of the abdomen. (痛是在肚子下半部。)
He has nausea and vomiting. (他有恶心和呕吐。)
It is difficult or painful for him to swallow. (他吞下食物时会痛。)
He has passed more gas than usual. (他放…比平常多。)
He has been constipated for a few days. (他便秘了好几天。)
He suffers pains when he moves his bowels. (他大便时很痛。)
He has some bleeding from his rectum. (他的肛门出血。)
He has noticed some blood in his bowel movements. (他发觉大便时有些血。)
His bowel movements are pale, greasy and foul smelling. (他大便呈灰白色,含油脂的恶臭。)
His bowel movements are grey (or black) in color. (他的大便呈灰白色。)
He has trouble with diarrhea. (他拉肚子。)


(10) 血压&感官

His blood pressure is really up. (他的血压很高。)
High blood pressure is creeping up on him.
He has noticed frequent urination, increased thirst and unexpected tireness. (他发觉常常小便,非常口渴和更加疲倦。)
It is a chest pain that gets worse when he bends over or lies down. (他弯腰或躺下时,胸部更痛。)
He has noticed excessive sweating and unexplained tireness. (他体会到过度的出汗和难以解释的疲倦。)
He has a sharp pain in one area of his spine. (他的脊椎某部位刺痛。)
He has pain in other joints including hip, knee and ankle. (其它关节疼痛包括臀部、膝盖和脚踝。)
His eyes seem to be bulging. (他的眼睛觉得有点肿胀。)
He has double vision. (他的视线有双重影子。)
He feels there is a film over his eyes. (他觉得眼里有种薄膜似的东西,挡住视线。)
His vision in the right eye blurred. (他右眼视线模糊不清。)
He has had some earaches lately. (他近来耳朵有点痛。)
He has a repeated buzzing or other noises in his ears. (他耳朵常有嗡嗡的声音。)