博文
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提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此事务之前的状态。 回到原来的INSERT的例子,请注意所有的整形十进制数都不需要用单引号引起来,而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将......
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 custCreate 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_expression|[]}[,...n]|Drop{Column column}[,...n]}例子:打开cust数据库,修改其中的表students的结构,增加一个新字段,字段名为ying,数据类型是varchar,长度是10,没有默认值,充许为空。Use custAlter Table students......
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] ) /*寻找各种着色方案*/ { int color[N] , i , c , cnt ; for ( i = 0 ; i < N ; i++ ) color[i] = -1 ; i = c = 0 ; cnt = 0 ; while ( 1 ) { if ( ( c =select (i,c+1,adj,color) ) == 0 ){ c = back( &i , color) ; if ( c == 0) return cnt ; } else { color[i]=c; i++ ; if ( i == N ) { output(color) ; ++c......
逗号表达式(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(n+k,d,(a,b))); 在此函数调用语句中实参的个数是 A)3 B)4 C)5 D)6
正确答案应该是A)。注:这......
笔试题目汇总(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试卷考的是电磁场波导,拉式变化,电容器等内容 ●下面的程序是否正确,如正确,给出结果,否则,说明理由。 #include <stdio.h> struct A{ int i; char j; char * ptr; long Array[100]; char b[2]; char * c; }; #define PRINT_ME (char *)&......
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; char c:2; &nbs......
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 *pTest = new ClxDerived;pTest->DoSomething();del......
关于位结构体和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位*/ unsigned blink: 1;&n......
