博文
main()与main(int argc,char *argv[])的区别(2007-01-08 17:04:00)
摘要:有些exe可以带参数运行,比如 
ping localhost -t 
这里localhost,-t就是参数, 
main(int argc, char *argv[])就是为了让程序里面能使用参数,argc是argument count的缩写,表示参数的个数,argv是argument value的缩写,表示参数的值, 
需要注意的是,exe程序的完整文件名也算在参数里面,所以ping localhost -t的argc是3。 
需要在程序里面使用这些参数的话,可以模仿下面的代码: 
int main(int argc, char *argv[]) 
{ 
int i = 0; 
printf("argc: %d\n", argc); 
for(i = 0; i < argc; i++) 
{ 
printf("Arg %d : %s\n", i + 1, argv[i]); 
} 
return 0; 
}......
					
SQL基本语句(2006-12-12 21:59:00)
摘要:掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
   练掌握SQL是数据库用户的宝贵财富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后,显然你已经开始算是精通SQL了。
  在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
  SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表,我们在后面的例子中将要用到它。
  INSERT语句
  用户可以用INSERT语句将一行记录插入到指定的一个表中。例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:
  INSERT INTO EMPLOYEES VALUES
   ('Smith','John','1980-06-10',
   'Los Angles',16,45000);
  通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。
  我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。
  如果SQL拒绝了你所填入的一列值,语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此......
					
SQL的基本操作(表的相关操作)(2006-12-12 21:58:00)
摘要:SQL的基本操作(3.表的相关操作) 
1.创建表
(1)用Create Table 命令创建表
语法:
Create Table tabl_name
({
}column_name As computed_column_expression
}
}[,...n]
)
[On {fiegroup | Default}]
[Textimage_On {fiegroup | Default}]
例子:
打开cust数据库,创建一个表,该表包含了学生的有关信息,即有学号、姓名、性别、出生日期、籍贯、联系电话、住址和备注信息。
Use cust
Create Table students
(
number int not null,
name varchar(10) not null,
sex char(2) null,
birthday datetime null,
hometown varchar(30) null,
telphone_no varchar(12) null,
address varchar(30) null,
others varchar(50) null
)
在这个表中number表示学生代号,数据类型为int,不允许为空;name表示学生姓名,数据类型为varchar,长度为10,不允许为空;sex表示学生的性别,数据类型为char,长度为2,允许为空;birthday表示学生的出生日期,数据类型为datetime,允许为空;hometown表示学生的籍贯,数据类型为varchar,长度为30,允许为空;telephone_no表示学生的联系电脑,数据类型为varchar,长度为12,允许为空;address表示学生的住址,数据类型为varchar,长度为30,允许为空;others表示学生的备注信息,长度为50,允许为空。
2.修改表的结构
(1)使用T-SQL语句增加和删除一个新列
语法:
Alter Table table
{
ADO
{[]
|colun_name As computed_column_express......
					
SQL的基本操作(2006-12-12 21:53:00)
摘要: 
 
目录:
1.数据类型
2.数据库的相关操作
3.表的相关操作
======================================= 1.数据类型
  数据类弄是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQL Server 提供了 25 种数据类型:
  ·Binary [(n)]
  ·Varbinary [(n)]
  ·Char [(n)]
  ·Varchar[(n)]
  ·Nchar[(n)]
  ·Nvarchar[(n)]
  ·Datetime
  ·Smalldatetime
  ·Decimal[(p[,s])]
  ·Numeric[(p[,s])]
  ·Float[(n)]
  ·Real
  ·Int
  ·Smallint
  ·Tinyint
  ·Money
  ·Smallmoney
  ·Bit
  ·Cursor
  ·Sysname
  ·Timestamp
  ·Uniqueidentifier
  ·Text
  ·Image
  ·Ntext
  (1)二进制数据类型
  二进制数据包括 Binary、Varbinary 和 Image.
  Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
  Binary[(n)] 是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4 个字节。
  Varbinary[(n)] 是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4个字节,不是 n 个字节。
  在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用 BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。
  (2)字符数据类型
  字符数据的类型包括 Char,Varchar 和 Text。
......
					
四色定理源程序(2006-12-05 21:30:00)
摘要:#include<stdio.h> 
#define N 10 
void output(int color[])/*输出一种着色方案*/ 
{ int i ; 
for ( i = 0 ; i < N ; i++ ) 
printf( "%4d" , color[i] ) ; 
printf( "\n" ) ; 
} 
int back( int *ip ,int color[] ) /*回溯*/ 
{ 
int c = 4 ; 
while ( c == 4 ) 
{ 
if ( *ip <= 0 ) 
return 0 ; 
--(*ip) ; 
c = color[*ip]; 
color[*ip] = -1 ; 
} 
return c ; 
} 
/*检查区域i,对c种颜色的可用性*/ 
int colorok( int i , int c , int adj[][N] , int color[ ] ) 
{ 
int j ; 
for ( j = 0 ; j < i ; j++ ) 
if (adj[i][j] != 0 && color[j] == c) 
return 0 ; 
return 1 ; 
} 
/*为区域i选一种可着的颜色*/ 
int select( int i ,int c ,int adj[][N] , int color[ ] ) 
{ int k ; 
for ( k = c ; k <= 4 ; k++ ) 
if ( colorok(i,k,adj,color) ) 
return k ; 
return 0 ; 
} 
int coloring( int adj[][N] ) /*寻找......
					
逗号表达式(2006-12-03 21:37:00)
摘要:逗号表达式的形式如下:
  表达式1,表达式2,表达式3,...... ,表达式n
逗号表达式的要领:
(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
(3) 逗号运算符的优先级别在所有运算符中最低。
例题1:若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是
   A) 1  B) 2 C) 2.0 D) 2.5
  分析:该表达式是一个逗号表达式,所以先运算x=1,结果变量x中的值为1.0,然后运算y=x+3/2,其结果是变量y中的值为2.0(这个运算过程可参阅本专题的“整数除法的注意事项”),注意此时表达式y=x+3/2的值即等于变量y的值为2.0。最后,整个逗号表达式的值应该等于最后一个表达式的值2.0,所以,正确答案是C)。
  注:该题曾在1998年4月和2000年9月的二级C考试中两次出现过。
例题2:若t为double类型,表达式t=1,t+5,t++的值是
   A) 1 B) 6.0 C) 2.0 D) 1.0
  分析:该题的表达式也是一逗号表达式,运算过程同例题1。需要注意的是,其中的第二个表达式(t+5)对整个表达式的运算结果不产生任何影响,因为它没有改变变量x的值(x的值仍为1.0),最后一个表达式(t++)的值为变量x进行自增运算前的值1.0,所以整个表达式的值也为1.0。
  注:这是1998年4月二级C考试中的一道选择题。
例题3:有如下函数调用语句
 func(rec1,rec2+rec3,(rec4,rec5));
 该函数调用语句中,含有的实参个数是
  A)3  B)4 C)5 D)有语法错误
  分析:C语言规定,函数调用时实参与实参之间是用逗号隔开的,所以,本题的函数调用语句中包含3个实参,其中第一个实参是rec1,第二个实参是rec2+rec3,第三个实参是(rec4,rec5),这里的第三个实参就是一个逗号表达式,根据逗号表达式的运算规则,第三个实参的值应该等于rec5的值。
  注:这是2000年9月二级C考试中的一道选择题。
例题4:有如下函数调用语句
 fun(a+b,(x,y),fun......
					
笔试题目汇总(2006-11-21 22:29:00)
摘要:第一篇 笔试题目 
Intel今年笔试题 
●第一道是一个编译器优化的题目。条件大致说在ZF为0或者不为0的情况下,分别有两条移位指令可以移进去。然后出了两个小题,要你优化。 
●第二道是N个人围成一圈报数,报到某一个数的就出局,问你最后剩下来的那个人的号码。编程题。 
●第三道大致如下: 
以下两个程序哪个的performance高,并解释为什么。 
a) 
extern int foo(void); 
int main() 
{ 
int i; 
for(i=0;i<10000;i++) foo(); 
return i; 
} 
b) 
extern int foo(void); 
int i; 
int main() 
{ 
for(i=0;i<10000;i++) foo(); 
return i; 
}    
●智力题 
将如下图形(边长相等,即突出的都是正方形)割成几块,再拼成一个正方形,要求最少最少。 
      --- 
      |    | 
 ---     --- 
 |               | 
 ---     --- 
      |    | 
---             
● ee试卷考的是电磁场波导,拉式变化,电容器等内容 
●下面的程序是否正确,如正确,给出结果,否则,说明理由。 
#inclu......
					
C++常见面试题(2006-11-21 22:27:00)
摘要:SIZEOF CONST 预处理题目:
1. sizeof相关系列问题
a. 对于 struct s{char a;int b};  sizeof(s) = 8; 因为当结构体内元素长度都小于处理器位数(32位=4字节)的时候,便以结构体中最长的数据元素为对齐条件,a 按 1 字节对齐,b 按 4 字节对齐,所以s默认对其参数为8
  struct A{short a1;short a2;short a3};sizeof(A)=6; 原因同上,结构体按最长元素short(2字节对齐)。
b. 对于 int a[200]; sizeof(a) = 200* sizeof(int) = 800; 对整个数组大小评测
   int* a = new int[200]; sizeof(a) = 4; 对指针大小进行评测
   char str[]="012345"; sizeof(str) = 7; str 是一个字符数组,数组最初大小未定,由具体值"012345"来决定,6*sizeof(char) = 6,还有隐含的"\0",所以一共7位。
   char str[]="s\n";sizeof(str) = 3; 回车"\n" 是一个字符,可以查看ASCII表。还有\r、\t等等字符
c. 这种使用位域的也有,其中元素最大为1字节大小=8 bits,元素按照1字节进行对齐, sizeof(b) = 1 +  1(4 bits+2bits < 8 bits) + 1(3bits) = 3.       
    struct  b
    {
        char a:8;
        char b:4;
       ......
					
C++中虚析构函数的作用 (2006-11-11 10:30:00)
摘要:我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明:    
    有下面的两个类:
class ClxBase
{
public:
    ClxBase() {};
    virtual ~ClxBase() {};
    virtual void DoSomething() { cout << "Do something in class ClxBase!" << endl; };
};
class ClxDerived : public ClxBase
{
public:
    ClxDerived() {};
    ~ClxDerived() { cout << "Output from the destructor of class ClxDerived!" << endl; }; 
    void DoSomething() { cout << "Do something in class ClxDerived!" << endl; };
};
    代码
ClxBase&nbs......
					
关于位结构体和union的一些介绍(2006-11-10 17:22:00)
摘要:在写通讯协议的时候用到有关位结构体和union的相关内容,整理一部分东西:
首先摘一段《C语言编程宝典》上关于位结构体的说明:
/*************以下文字摘自《C语言编程宝典》********************/
位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构 
比按位运算符更加方便。 
    位结构定义的一般形式为: 
     struct位结构名{ 
          数据类型 变量名: 整型常数; 
          数据类型 变量名: 整型常数; 
     } 位结构变量; 
    其中: 数据类型必须是int(unsigned或signed)。 整型常数必须是非负的整 
数, 范围是0~15, 表示二进制位的个数, 即表示有多少位。 
    变量名是选择项, 可以不命名, 这样规定是为了排列需要。 
    例如: 下面定义了一个位结构。 
     struct{ 
          unsigned incon: 8;  /*incon占用低字节的0~7共8位*/ 
          unsigned txcolor: 4;/*txcolor占用高字节的0~3位共4位*/ 
          unsigned bgcolor: 3;/*bgcolor占用高字节的4~6位共3位*/ 
  &nb......
					
