博文

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;
}......

阅读全文(2451) | 评论: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提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败,则整个事务都会失败,系统将会被恢复(或称之为回退)到此......

阅读全文(2136) | 评论:0

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......

阅读全文(2852) | 评论:0

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。 ......

阅读全文(3216) | 评论:1

四色定理源程序(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] ) /*寻找......

阅读全文(3856) | 评论:0

逗号表达式(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......

阅读全文(2581) | 评论:1

笔试题目汇总(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......

阅读全文(275) | 评论:0

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;
       ......

阅读全文(7328) | 评论:1

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......

阅读全文(2347) | 评论:2

关于位结构体和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......

阅读全文(7126) | 评论:0