青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0

[轉]某些公司的筆試題

1.想想結果是如何出來的:
?int main()??
{
?? unsigned?? char?? i=1;??
?? i-=3;??
?? printf("the?? value?? of?? i?? is:%d",i);??
}??
結果:the?? value?? of?? i?? is:254
答案:

??? 0000?? 0001??
-?? 0000?? 0011??
------------------??
??? 1111?? 1110???????? 而???? 1111?? 1110?????? 化為十制進正好是254!?

2.看看下列的程序有什么問題
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
請問運行Test函數會有什么樣的結果?為什么?
答案:1.內存泄漏 2.str仍然是空指針
3.
int n = 10;
為什么sizeof ( n ) = 4?
?答案:sizeof(x)返回x的類型占用的字節數,該機器是在32位下
4.請問C++的類和C里面的struct有什么區別?
5.請講一講析構函數和虛函數的用法和作用?
6.全局變量和局部變量有什么區別?是怎么實現的?
7.設計函數 int atoi(char *s)。
8.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 輸出是多少?
9.解釋局部變量、全局變量和靜態變量的含義
10.解釋堆和棧的區別。
11.論述含參數的宏與函數的優缺點。
12.實現雙向鏈表刪除一個節點P,在節點P后插入一個節點,寫出這兩個函數。
13.寫一個函數,將其中的 都轉換成4個空格。
14.Windows程序的入口是哪里?寫出Windows消息機制的流程。
15.如何定義和實現一個類的成員函數為回調函數?
16.C++里面是不是所有的動作都是main()引起的?如果不是,請舉例。
17.C++里面如何聲明const void f(void)函數為C程序中的庫函數?
18.下列哪兩個是等同的
  int b;
  A const int* a = &b;
  B const* int a = &b;
  C const int* const a = &b;
  D int const* const a = &b;
19.內聯函數在編譯時是否做參數類型檢查?
  void g(base & b)
????? {
   b.play;
  }
  void main()
????? {
   son s;
??????????? g(s);

??????????? return;

}
20.請你分別劃劃OSI的七層網絡結構圖,和TCP/IP的五層結構圖?
21.請你詳細的解釋一下IP協議的定義,在哪個層上面,主要有什么作用? TCP與UDP呢?
22.請問交換機和路由器分別的實現原理是什么?分別在哪個層次上面實現的? 

頭文件中<>? 和“”的區別?

4、定義一個宏,輸入兩個參數,輸出積。


1. 以下三條輸出語句分別輸出什么?[C易] (視編譯器而定)
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 輸出什么?
cout << boolalpha << ( str3==str4 ) << endl; // 輸出什么?
cout << boolalpha << ( str5==str6 ) << endl; // 輸出什么?

答:分別輸出false,false,true。str1和str2都是字符數組,每個都有其自己的存儲區,它們的值則是各存儲區首地址,不等;str3 和str4同上,只是按const語義,它們所指向的數據區不能修改。str5和str6并非數組而是字符指針,并不分配存儲區,其后的“abc”以常量形式存于靜態數據區,而它們自己僅是指向該區首地址的指針,相等。


12. 以下代碼中的兩個sizeof用法有問題嗎?[C易]
void UpperCase( char str[] ) // 將 str 中的小寫字母轉換成大寫字母
{
for( size_t i=0; i
if( 'a'<=str[i] && str[i]<='z' )
str[i] -= ('a'-'A' );
}
char str[] = "aBcDe";
cout << "str字符長度為: " << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;

答:函數內的sizeof有問題。根據語法,sizeof如用于數組,只能測出靜態數組的大小,無法檢測動態分配的或外部數組大小。函數外的str是一個靜態定義的數組,因此其大小為6,函數內的str實際只是一個指向字符串的指針,沒有任何額外的與數組相關的信息,因此sizeof作用于上只將其當指針看,一個指針為4個字節,因此返回4。


[color=#DC143C]13. 非C++內建型別 A 和 B,在哪幾種情況下B能隱式轉化為A?[C++中等]
答:
a. class B : public A { ……} // B公有繼承自A,可以是間接繼承的
b. class B { operator A( ); } // B實現了隱式轉化為A的轉化
c. class A { A( const B& ); } // A實現了non-explicit的參數為B(可以有其他帶默認值的參數)構造函數
d. A& operator= ( const A& ); // 賦值操作,雖不是正宗的隱式類型轉換,但也可以勉強算一個[/color]


4. 以下代碼有什么問題?[C++易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}

答:變量b定義出錯。按默認構造函數定義對象,不需要加括號。


5. 以下代碼有什么問題?[C++易]
cout << (true?1:"1") << endl;
答:三元表達式“?:”問號后面的兩個操作數必須為同一類型。


8. 以下代碼能夠編譯通過嗎,為什么?[C++易]
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];
答:str2定義出錯,size2非編譯器期間常量,而數組定義要求長度必須為編譯期常量。


2. 以下反向遍歷array數組的方法有什么錯誤?[STL易]
vector array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 3 );
for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍歷array數組
{
cout << array[i] << endl;
}

答:首先數組定義有誤,應加上類型參數:vector array。其次vector::size_type被定義為unsigned int,即無符號數,這樣做為循環變量的i為0時再減1就會變成最大的整數,導致循環失去控制。


[color=#DC143C]9. 以下代碼中的輸出語句輸出0嗎,為什么?[C++易]
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout << obj.m_i << endl;

答:不能。在默認構造函數內部再調用帶參的構造函數屬用戶行為而非編譯器行為,亦即僅執行函數調用,而不會執行其后的初始化表達式。只有在生成對象時,初始化表達式才會隨相應的構造函數一起調用。[/color]

[color=#DC143C]10. C++中的空類,默認產生哪些類成員函數?[C++易]
答:
class Empty
{
public:
Empty(); // 缺省構造函數
Empty( const Empty& ); // 拷貝構造函數
~Empty(); // 析構函數
Empty& operator=( const Empty& ); // 賦值運算符
Empty* operator&(); // 取址運算符
const Empty* operator&() const; // 取址運算符 const
};[/color]


[color=#DC143C]3. 以下兩條輸出語句分別輸出什么?[C++難]
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么?
答:分別輸出false和true。注意轉換的應用。(int)a實際上是以浮點數a為參數構造了一個整型數,該整數的值是1,(int&)a則是告訴編譯器將a當作整數看(并沒有做任何實質上的轉換)。因為1以整數形式存放和以浮點形式存放其內存數據是不一樣的,因此兩者不等。對b的兩種轉換意義同上,但是0的整數形式和浮點形式其內存數據是一樣的,因此在這種特殊情形下,兩者相等(僅僅在數值意義上)。
注意,程序的輸出會顯示(int&)a=1065353216,這個值是怎么來的呢?前面已經說了,1以浮點數形式存放在內存中,按 ieee754規定,其內容為0x0000803F(已考慮字節反序)。這也就是a這個變量所占據的內存單元的值。當(int&)a出現時,它相當于告訴它的上下文:“把這塊地址當做整數看待!不要管它原來是什么。”這樣,內容0x0000803F按整數解釋,其值正好就是1065353216 (十進制數)。
通過查看匯編代碼可以證實“(int)a相當于重新構造了一個值等于a的整型數”之說,而(int&)的作用則僅僅是表達了一個類型信息,意義在于為cout<<及==選擇正確的重載版本。
[/color]

6. 以下代碼有什么問題?[STL易]
typedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 刪除array數組中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor ) array.erase( itor );
}

答:同樣有缺少類型參數的問題。另外,每次調用“array.erase( itor );”,被刪除元素之后的內容會自動往前移,導致迭代漏項,應在刪除一項后使itor--,使之從已經前移的下一個元素起繼續遍歷。

[color=#DC143C]11. 寫一個函數,完成內存之間的拷貝。[考慮問題是否全面]
答:
void* mymemcpy( void *dest, const void *src, size_t count )
{
char* pdest = static_cast( dest );
const char* psrc = static_cast( src );
if( pdest>psrc && pdest
{
for( size_t i=count-1; i!=-1; --i )
pdest[i] = psrc[i];
}
else
{
for( size_t i=0; i
pdest[i] = psrc[i];
}
return dest;
}[/color] 

?

原題如下:
#i nclude
struct bit
{
int a:3;
int b:2;
int c:3;
};

int main(int argc, char* argv[])
{
bit s;
char *c = (char*)&s;
*c = 0x99;
cout <<<<<<
return 0;
}

Output:?

答案:
此題在在X86 little-endian 下是 1 -1 -4
在powerPC等big endian機器下,還要重新考慮

因為0x99在內存中表示為 100 11 001 , a = 001, b = 11, c = 100
當c為有符號數時, c = 100, 最高位1表示c為負數,負數在計算機用補碼表示,所以c = -4;同理
b = -1;當c為有符合數時, c = 100,即 c = 4,同理 b = 3

位域的概念

有些信息在存儲時,并不需要占用一個完整的字節, 而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省存儲空間,并使處理簡便,C語言又提供了一種數據結構,稱為“位域”或“位段”。所謂“位域”是把一個字節中的二進位劃分為幾個不同的區域, 并說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。這樣就可以把幾個不同的對象用一個字節的二進制位域來表示。一、位域的定義和位域變量的說明位域定義與結構定義相仿,其形式為:
struct 位域結構名
{ 位域列表 };
其中位域列表的形式為: 類型說明符 位域名:位域長度
例如:
struct bs
{
int a:8;
int b:2;
int c:6;
};
位域變量的說明與結構變量說明的方式相同。 可采用先定義后說明,同時定義說明或者直接說明這三種方式。例如:
struct bs
{
int a:8;
int b:2;
int c:6;
}data;
說明data為bs變量,共占兩個字節。其中位域a占8位,位域b占2位,位域c占6位。對于位域的定義尚有以下幾點說明:

1. 一個位域必須存儲在同一個字節中,不能跨兩個字節。如一個字節所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如:
struct bs
{
unsigned a:4
unsigned :0 /*空域*/
unsigned b:4 /*從下一單元開始存放*/
unsigned c:4
}
在這個位域定義中,a占第一字節的4位,后4位填0表示不使用,b從第二字節開始,占用4位,c占用4位。

2. 由于位域不允許跨兩個字節,因此位域的長度不能大于一個字節的長度,也就是說不能超過8位二進位。

3. 位域可以無位域名,這時它只用來作填充或調整位置。無名的位域是不能使用的。例如:
struct k
{
int a:1
int :2 /*該2位不能使用*/
int b:3
int c:2
};
從以上分析可以看出,位域在本質上就是一種結構類型, 不過其成員是按二進位分配的。

二、位域的使用位域的使用和結構成員的使用相同,其一般形式為: 位域變量名·位域名 位域允許用各種格式輸出。
main(){
struct bs
{
unsigned a:1;
unsigned b:3;
unsigned c:4;
} bit,*pbit;

pbit = new bs;

bit.a=1;
bit.b=7;
bit.c=15;

pbit->a = 1;
pbit->b = 2;
pbit->c = 3;

printf("%d, %d, %d",bit.a, bit.b, bit.c);
printf("%d, %d, %d",pbit->a, pbit->b, pbit->c);
}

?

一、 單項選擇題(從四個備選答案中選擇一個正確答案,每小題1分,共20分)
1. C++中,關鍵字struct和class的區別僅僅在于( C )。

(A)struct 用來定義結構體, 而class用來定義類;

  (B)struct 用來定義類, 而class用來定義類結構體;

(C)struct定義的類的缺省成員為公有的,而class定義的類的缺省成員為私有的;

(D)struct定義的類的成員須全部為公有的,而class定義的類的成員可以為私有的;

2. 以下程序執行后,輸出結果為( C ).

#i nclude

int Var=3 ;

void main(void)

{ int Var=10;

::Var++;

cout<<”Var=”<<<”, ::Var=”<<::Var<

}

(A)Var=11, ::Var=11 (B)Var=11, ::Var=3

(C)Var=10, ::Var=4 (D)Var=4, ::Var=10

3. 抽象基類是指( C )。

(A)嵌套類      (B)派生類

  (C)含有純虛函數 (D)多繼承類

4.如果有#define AREA(a,b)a+b 則語句int s=AREA(3,4)*AREA(3,4)執行后變量s值為( D )。

(A) 24 (B)49 (C)144 (D)19

5. C++中條件表達式的值為( C )。

(A)–1或者+1  (B)–231~231 –1 (C)0或者1 (D) 0~231–1

6. 現在有以下語句:

struct MyBitType

{ int a:3;

unsigned b:3;

unsigned c:20;

int d;

};

int sz=sizeof(MyBitType);

則執行后,變量sz的值將得到( B )。

(A)2  (B)8 (C)28 (D)58

7. 假設有一個C++類名為Country, 則此類的析構函數為( C ).

(A)::Country() (B)void ~Country(void)

(C)~Country() (D)void ~Country()

8. 如果定義一個C++類CDate, 語句“CDate *p = new CDate;”的含義是( A )。

(A)調用CDate類的缺省構造函數從內存中分配一個CDate類型的對象,并將該對象地址賦值給指針p;

  (B)調用CDate類的拷貝構造函數從內存中分配一個CDate類型的對象,并將該對象地址賦值給指針p;

(C)調用CDate類的析構函數從內存中分配一個CDate類型的對象,并將該對象地址賦值給指針p;

(D)從內存中釋放指針p所指向的CDate類的對象;

9.如果有一個類CRect及語句“CRect x1, x2;” 要使語句 “x1=x2;”合法,可在類中定義成員函數( C )。

 (A) int operator(x2)        (B)int operator=(x2)

(C) void operator=(CRect &); (D) void operator=()

10. 結構體變量S實際所占內存的大小為( A )字節。

(A)sizeof(S)         (B)strlen(S)

(C)結構體中最長成員的長度 (D)結構體中最短成員的長度

11.在C++中,下列算符( D )不能重載。

(A)<<  (B)>> (C)delete (D)::

12.下列正確的是( D )

(A)結構不能有構造函數、析構函數; (B)缺省時類的成員是公有的;

(C)類中如果定義了析構函數,則必須定義構造函數;

(D)缺省時結構的成員是公有的;

13. 下列關于靜態數據成員正確的是( B )

(A)可以通過this指針訪問靜態數據; (B)可以用類名和作用域訪問靜態數據;

(C)靜態數據在類內聲明并初始化; (D)只能由該類的靜態成員函數訪問;

14. 下列關于友元正確的說法是(  D )

(A)友元只能在類的public區聲明;(B)友元具有this指針;

(C)類的成員函數不能聲明為另一個類的友元;

(D)一個函數如果被聲明為一個類的友元,則該函數具有訪問該類私有成員的權利。

15. 基類的( A )在派生類內不能被訪問。

(A)私有成員 (B)保護成員

(C)公有數據成員 (D)公有靜態數據成員

16. 下列關于運算符重載的描述中正確的是( D )

(A)運算符重載可以改變該運算符的優先級;

  (B)運算符重載可以改變該運算符目數,即該算符運算的操作數個數;

(C)運算符重載函數只能在類中定義;

(D)new和delete允許重載;

17.左值是指( A )

(A)賦值算符左邊的變量;   (B)賦值算符左邊的表達式的值;

(D)出現在賦值算符右邊的表達式的值;

(E)二元算符左邊表達式的值;

18. 下列為純虛函數的正確聲明的是( B )

(A)void virtual print()=0;   (B)virtual void print()=0;

(C)virtual void print(){ }; (D)virtual void print();

19. 如果在類對象a的類中重載運算符“+”,則a+5的顯示調用方式為( C )

(A)a.operator(5)   (B)a->operator+(5);

(C)a.operator+(5) (D)5.operator+(a)

20.一個類如果有一個以上的基類就叫做( B )。                 

(A)循環繼承    (B)單繼承

(C)非法繼承 (D)多繼承

二、 多項選擇題(從五個備選答案中選擇2~5個正確答案,每小題2分,共10分)
1. 如果已定義了一個C++類CMyList并有以下語句:

CMyList list(3);

以下說法正確的是( AC )。

 (A)該語句會創建一個CMyList類的一個對象;

 (B)該語句會創建一個CMyList類的3個對象;

 (C)必須為類CMyList定義一個構造函數;

(D)必須為類CMyList定義一個析構函數;

(E) 必須定義函數CMyList list(int);

2. 以下說法正確的是( ABCDE )。

(A)內聯(inline)函數改善了函數調用的執行效率。

  (B)類A的友元(friend)函數可以訪問類A的私有成員。

(C)類A的友元(friend)類B可以訪問類A的私有成員。

(D)類A的靜態數據成員為類A的所有對象所共享。

(E)類A的靜態成員函數沒有傳遞this 指針作為參數。

3.類B從類A派生,則類B可以訪問類A中的( AC )成員。

(A)public成員 (B)private成員 (C)protected成員

(D)數據成員   (E)函數成員

4. 面向對象的程序設計語言具有( ABE )等共同特性。

(A)封裝性 (B)多態性 (C)簡單性 (D)復雜性

(E)繼承性

5. 現有一個程序如下:

#i nclude

class A

{ public:

void f(){ cout<< "A::f()"<

};

class B

{ public:

void f(){ cout<< "B:f()"<

void g(){ cout<< "B:g()"<

};

class C:public A, public B

{ public:

void g(){ cout<<"C::g()"<

void h()

{ cout<<"C::h()"<

f(); //語句1

}

};

void main()

{ C obj;

obj.f();    //語句2

obj.A::f(); //語句3

obj.B::f(); //語句4

obj.g();   //語句5

}

則編譯時會產生錯誤的語句有( AB )。

(A)語句1     (B)語句2   (C)語句3

(D)語句4    (E)語句5

三、 判斷分析題(正確的畫上√,錯誤的畫上×,每小題1分,共10分)
1.如果一個類的所有對象都共享某一個變量,則應當將該變量定義為該類的static成員。 ( √ )

2.語句“ typedef struct _MYSTRUC { int x; int y; double z; } MYSTRUC; ”是非法語句。 ( × )

3.語句“ int (*p)(int x, int y);”說明了p是一個指向整數的指針。 ( × )

4.Visual C++集成開發環境中,一個Workspace中只能創建一個Project。 ( × )

5.能訪問一個類CMyClass中的private成員的可以是類CMyClass的成員函數,友元函數和友元類中的函數。 ( √ )

6. 所有的MFC應用程序都必須有一個且只有一個CWinApp對象。 ( √ )

7.C++中的多態性就是指在編譯時,編譯器對同一個函數調用,根據情況調用不同的實現代碼。 ( × )

8.在for循環中,是先執行循環體后再判斷循環條件。 ( × )

9.C++中,如果條件表達式值為-1, 則表示邏輯為假。 ( × )

10. 在C++中用new分配的內存空間,在不需要時一般用free將該空間釋放。 ( × )

四、 填空題(每空2分,共20分)
1.以下函數完成求表達式 的值,請填空使之完成此功能。

float sum( float x )

{ float s=0.0;

int sign=1;

float t=1.0;

for(int i=1; i<=100; i++)

{

t=t*x;

s=s+-sign*i/(t+sign*i);

sign=-sign;

}

return s;

}

2.以下程序中實現類CSort, 完成對其成員p所指向的整數數組進行從小到大排序,該數組的元素個數由num表示,請填空完善該程序。

#i nclude

class CSort

{

int *p;

int num;

public:

void Order();

CSort(int *, int);

void Disp();

};

CSort::CSort(int *arry, int n)

:p(arry), num(n)

{ }

void CSort::Order() //函數Order原型

{ int m, tmp;

for(int i=0; i

{ m=i;

for(int j=i+1; j

{ if(p[j]

m=j;

}

if(m!=i)

{ tmp=p[i];

p[i]=p[m];

p[m]=tmp;

}

}

}

void CSort::Disp()

{ for(int i=0; i

cout<<<",";

cout<<

}

void main( )

{ static int a[]={10, -15, -3, 5, -4, 7,2};

CSort obj(a,2);

obj.Disp(); //應輸出一行:10,-15,-3,5,-4,7,2

obj.Order(); //對數組排序

obj.Disp(); //應輸出一行:-15,-4,-3,2,5,7,10

}

3.以下函數完成求兩個數n1和n2的最大公約數。

#i nclude

int fac(int n1, int n2)

{ int tmp;

if( n1 < n2 )

{ tmp=n1;

n1=n2 ;

n2=tmp ;

}

while(n1%n2!=0)

{ tmp=n1%n2; n1=n2; n2=tmp;

}

return n2;

}


2005年華為招聘--C語言筆試試題

?

一、判斷題(對的寫T,錯的寫F并說明原因,每小題4分,共20分)

1、有數組定義int a[2][2]={{1},{2,3}};則a[0][1]的值為0。(???? )

2、int (*ptr) (),則ptr是一維數組的名字。(???? )

3、指針在任何情況下都可進行>,<,>=,<=,==運算。(???? )

4、switch(c) 語句中c可以是int ,long,char ,float ,unsigned int 類型。(?? )

5、#define print(x)? printf("the no, "#x",is ")

?

二、填空題(共30分)

1、在windows下,寫出運行結果,每空2分,共10分。

char str[ ]= "Hello";

char *p=str;

int n=10;

sizeof(str)=(????? )

sizeof(p)=(?????? )

sizeof(n)=(?????? )

void func(char str[100])

{??? }

sizeof(str)=(???? )

?

2、void setmemory(char **p, int num)

{ *p=(char *) malloc(num);}

void test(void)

{? char *str=NULL;

?? getmemory(&str,100);

?? strcpy(str,"hello");

?? printf(str);

}

運行test函數有什么結果?(??????????????????????????????? )10分

?

3、設int arr[]={6,7,8,9,10};

???? int *ptr=arr;

?? *(ptr++)+=123;

?printf("%d,%d",*ptr,*(++ptr));

(?????????????????????????????????? ) 10分

?

二、編程題(第一小題20,第二小題30分)

1、? 不使用庫函數,編寫函數int strcmp(char? *source, char *dest)

相等返回0,不等返回-1;


?

2、? 寫一函數int fun(char *p)判斷一字符串是否為回文,是返回1,不是返回0,出錯返回-1

?

五、 閱讀程序題(每個小題5分,共20分)
1.閱讀以下程序,概括地寫出程序的功能。

#i nclude

double Exp(double x)

{ double sum=1.0;

double term=x;

double i=1 ;

while (term>=1.0E-8)

{ sum+=term ;

i++;

term=term*x/i ;

}

return sum ;

}

void main()

{ double s;

s=Exp(1.0)+Exp(2.0);

cout.precision(8);

cout<<"s="<<

}


zz

2. 閱讀程序,寫出程序執行時輸出結果。

#i nclude

const int SIZE=10;

class stack

{ char stck[SIZE];

int top;

public:

void init();

void push(char ch);

char pop();

};

void stack::init()

{ top=0; }

void stack::push(char ch)

{ if(top==SIZE)

 { cout<<"Stack is full.\n";

return ;

 }

stck[top++]=ch;

}

char stack::pop()

{ if(top==0)

   { cout<<"Stack is empty.\n";

   return 0;

}

return stck[--top];

}

void main()

{ stack s1, s2;

 s1.init();

 s2.init();

 s1.push('a');

 s1.push('b');

 s1.push('c');

 s2.push('x');

 s2.push('y');

 s2.push('z');

 for(int i=0; i<3; i++)

cout<<"Pop s1:"<<

 for(i=0; i<3; i++)

cout<<"Pop s2:"<<

}

程序結果:

Pop s1: c

Pop s1: b

Pop s1: a

Pop s2: z

Pop s2: y

Pop s2: z

3.閱讀程序,寫出程序運行時輸出結果。

#i nclude

class Tdate

{ public:

Tdate();

Tdate(int d);

Tdate(int m, int d);

Tdate(int m, int d, int y);

protected:

int month;

int day;

int year;

};

Tdate::Tdate()

{ month=4;

   day=15;

   year=1995;

cout<<<"/" <<<"/" <<

}

Tdate::Tdate(int d)

{ month=4;

   day=d;

   year=1996;

cout<<<"/" <<<"/" <<

}

Tdate::Tdate(int m, int d)

{ month=m;

   day=d;

   year=1997;

cout<<<"/" <<<"/" <<

}

Tdate::Tdate(int m, int d, int y)

{ month=m;

   day=d;

   year=y;

cout<<<"/" <<<"/" <<

}

void main()

{ Tdate aday;

Tdate bday(10);

Tdate cday(2,12);

Tdate dday(1,2,1998);

}

運行結果:

4/15/1995

4/10/1996

2/12/1997

1/2/1998

4.閱讀程序,寫出程序運行時輸出結果。

#i nclude

#i nclude

class shape

{ public:

shape(double x, double y):xCoord(x), yCoord(y){}

virtual double Area()const {return 0.0; }

protected:

double xCoord, yCoord;

};

class AA :public shape

{ public:

AA(double x, double y, double r): shape(x,y), rad(r){}

virtual double Area()const { return 3.0 * rad * rad; }

protected:

double rad;

};

class BB :public shape

{ public:

BB(double x1, double y1, double x2, double y2)

:shape(x1, y1), x2Coord(x2), y2Coord(y2){ }

virtual double Area()const;

protected:

double x2Coord, y2Coord;

};

double BB:Area()const

{ return fabs((xCoord-x2Coord)* (yCoord - y2Coord));

//庫函數fabs(double t)求得t的絕對值

}

void fun(const shape& sp)

{ cout<<

}

void main()

{ AA aa(2.0, 5.0, 4.0);

fun(aa);

BB bb(2.0, 8.0, 12.0, 17.0);

fun(bb);

}

運行結果:

48

30

六、 編寫程序題(每小題10分,共20分)
1.編寫一個函數int Judge(int *pArray, int n),判斷一個n×n二維整數數組pArray 是否為“魔方陣”,若是返回1,否則返回0。所謂魔方陣就是將1到n2的各個數字組成的方陣,它的每一行、每一列以及兩個對角線上數字之和均相等。例如,3×3的中,A是魔方陣,而B不是魔方陣。然后在主程序中調用Judge函數判斷數組A是否為魔方陣。

參考程序

#i nclude

int Judge(int *pArray, int n)

{ int s1, s2, s3,s4,sum=0;

int *p=pArray;

for(int i=1; i<= n*n; i++)

{ int Found=0; //為0,不在方陣中;

for(int j=0; j

if(p[j]==i)

{ Found=1; //為1,在方陣中

break;

}

if(Found==0) return 0; // 值為 i 的元素不在數組中,顯然不是魔方陣

}

for( i=1; i<=n*n; i++)

sum=sum+i;

sum=sum / n; // 各行、各列、對角線元素應當得到的和

s3=0;

s4=0;

for( i=0; i

{ s1=0, s2=0;

p=pArray;

for(int j=0; j

{ s1=s1+p[i*n+j]; //第i行的元素和

 s2=s2+p[j*n+i]; //第i列的元素和

}

if ( s1!=sum)

return 0;

if ( s2!=sum)

return 0;

s3=s3+pArray[i*n+i];     // 對角線一元素和

s4=s4+pArray[i*n+(n-1-i)]; // 對角線二元素和

}

if(s3!=sum)

return 0;

if(s4 != sum)

return 0;

return 1;

}

void main()

{ int Array[3][3]={{ 8, 1, 6},{ 3, 5, 7},{ 4, 9, 2}};


當 x 輸入值為9999時,函數返回值為多少?
int fun ( unsigned int x )
{
int count = 0;
while(x)
{
x = x & (x-1);
count++;
}
return count;
}

答案:此函數是在計算 x 中含有1的個數,所以返回值為8。

if(Judge((int*)Array, 3))

cout<<"Yes, it's a magic array"<

else

cout<<"No, it isn't a magic array"<

}


/*********************************
* 兩個超大數相乘算法
*********************************/

#i nclude
void main()
{
int a[30],b[30],c[60];
int i,j;

/* 給乘數和被乘數賦值,并把結果賦零 */
for (i=0;i<30;i++)
{
a[i]=i%10;
b[i]=i%10;
c[2*i]=0;
c[2*i+1]=0;
}

/* 給每位結果賦值,這里應該考慮清楚為什么這么寫
還有這里的位的值的最大限度應該是-128 -- +127
所以就算是10*10也可以滿足存進去一個char類型里 */
for(i=0;i<30;i++)
for(j=0;j<30;j++)
c[i+j]+=a[i]*b[j];
/* 這里把每個位>10的數進位和把余數重新賦值給這一位 */
for(i=0;i<59;i++)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}

/* 打印出來 */
for(i=0;i<30;i++)
printf("%d",a[30-i-1]);

printf("\n");

for(i=0;i<30;i++)
printf("%d",b[30-i-1]);

printf("\n");

for(i=0;i<60;i++)
printf("%d",c[60-i-1]);

printf("\n");

}

posted on 2006-06-15 06:54 Jerry Cat 閱讀(1035) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(7)

隨筆檔案

最新隨筆

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美不卡福利| 亚洲电影免费在线观看| 欧美在线999| 亚洲欧美另类在线观看| 国产精品99久久99久久久二8| 欧美电影在线免费观看网站| 久久久91精品国产一区二区三区| 欧美在线综合| 老色批av在线精品| 久久精品麻豆| 亚洲国产毛片完整版| 亚洲国产精品久久精品怡红院| 一区二区在线看| 亚洲青色在线| 亚洲欧美激情一区| 狼人社综合社区| 亚洲国产精品第一区二区三区 | 欧美日韩在线观看视频| 欧美乱妇高清无乱码| 欧美视频日韩| 国内成+人亚洲| 99v久久综合狠狠综合久久| 亚洲已满18点击进入久久| 久久久91精品| 亚洲精品免费电影| 亚洲欧美综合网| 麻豆成人在线播放| 国产精品一区二区久久| 国产一区二区三区在线观看网站| 亚洲黄色av| 欧美在线观看一二区| 亚洲第一精品电影| 午夜视频在线观看一区二区| 欧美成人午夜影院| 国产日本欧美一区二区三区| 亚洲黄一区二区三区| 亚洲一区二区毛片| 免费观看一区| 欧美午夜免费影院| 99在线精品视频在线观看| 欧美在线影院| 欧美性久久久| 99v久久综合狠狠综合久久| 久久久成人精品| 亚洲精品一区二区三区99| 久久久国产精品亚洲一区| 欧美午夜无遮挡| 亚洲人成久久| 欧美高清视频一区二区| 欧美一区二区视频网站| 国产精品福利网站| 一本大道久久a久久综合婷婷| 久久久另类综合| 亚洲免费在线| 国产精品成人一区二区网站软件 | 欧美性一二三区| 亚洲日产国产精品| 欧美91大片| 久久亚洲综合色| 激情av一区| 久久gogo国模裸体人体| 亚洲欧美日韩专区| 国产九九精品视频| 亚洲欧美综合精品久久成人| 亚洲午夜高清视频| 欧美揉bbbbb揉bbbbb| 在线亚洲伦理| 一区二区日韩伦理片| 国产精品jizz在线观看美国| 亚洲国产精品久久久久| 欧美中文在线字幕| 欧美一级大片在线免费观看| 国产日韩精品一区二区三区在线| 香蕉久久一区二区不卡无毒影院 | 欧美在线视频日韩| 狠狠色狠狠色综合日日五| 欧美一区二区高清| 欧美一级播放| 亚洲国产日韩综合一区| 亚洲第一福利在线观看| 欧美岛国激情| 亚洲天堂久久| 西瓜成人精品人成网站| 黄色成人免费网站| 亚洲第一精品夜夜躁人人爽| 欧美日韩国产精品成人| 亚洲欧美日韩在线一区| 亚洲午夜电影网| 亚洲日本欧美| 亚洲淫性视频| 国内精品久久久| 欧美aaaaaaaa牛牛影院| 欧美黄在线观看| 亚洲男女自偷自拍| 久久精品99无色码中文字幕 | 欧美精品综合| 欧美一区二区私人影院日本| 久久成年人视频| 欧美国产高清| 久热精品视频在线观看| 免费人成网站在线观看欧美高清 | 在线日韩中文字幕| 亚洲伦理在线观看| 国产美女精品| 亚洲电影观看| 国产亚洲欧美一区二区三区| 欧美激情精品久久久久久大尺度 | 亚洲国产精品久久久久婷婷老年| 欧美日韩国产综合视频在线观看中文| 欧美亚洲免费高清在线观看| 久久久在线视频| 亚洲欧美成人精品| 欧美激情欧美激情在线五月| 久久狠狠亚洲综合| 欧美精彩视频一区二区三区| 久久九九全国免费精品观看| 欧美视频福利| 欧美激情精品久久久| 国语自产偷拍精品视频偷 | 亚洲六月丁香色婷婷综合久久| 亚洲一级片在线观看| 亚洲美女毛片| 久久资源在线| 欧美亚洲视频一区二区| 久久午夜激情| 久久精品一区二区三区四区 | 久久国产精品黑丝| 性色一区二区| 欧美偷拍一区二区| 日韩亚洲国产欧美| 艳妇臀荡乳欲伦亚洲一区| 久久久久久九九九九| 久久xxxx| 欧美视频中文字幕在线| 亚洲精品久久7777| 亚洲精品九九| 巨乳诱惑日韩免费av| 亚洲在线中文字幕| 欧美美女喷水视频| 1769国产精品| 亚洲人成7777| 国产精品免费区二区三区观看| 欧美日韩国产91| 在线观看成人网| 最新成人在线| 久久综合久久综合久久综合| 欧美日韩一区二区三区在线看| 亚洲成人资源| 欧美三日本三级少妇三2023| 久久激情一区| 国语自产精品视频在线看8查询8| 亚洲日本视频| 久久久久一本一区二区青青蜜月| 欧美日本一区二区三区| 亚洲黑丝在线| 一区二区三区免费观看| 亚洲乱码国产乱码精品精可以看| 99人久久精品视频最新地址| 久久av一区二区三区亚洲| 久久久久国产精品人| 亚洲欧洲日产国产网站| 亚洲茄子视频| 亚洲精品一区在线观看香蕉| 免费视频一区| 欧美在线1区| 另类尿喷潮videofree| 亚洲精品中文字幕在线| 99国产一区| 久久久久免费| 在线亚洲伦理| 欧美精品一区二区三区高清aⅴ| 久久动漫亚洲| 欧美精品在线观看91| 欧美日韩国产电影| 欧美日韩综合网| 国产精品久久久久久五月尺| 国产精品视频xxxx| 在线观看视频亚洲| 国产一区二区三区四区老人| 亚洲国产精品一区二区尤物区| 亚洲素人一区二区| 免费永久网站黄欧美| 亚洲欧洲日产国产网站| 亚洲在线视频| 欧美性猛交一区二区三区精品| 亚洲在线观看免费| 欧美成人a视频| 亚洲一区三区电影在线观看| 永久91嫩草亚洲精品人人| 欧美激情视频给我| 久久精品欧洲| 亚洲天堂免费观看| 亚洲电影观看| 久久亚洲精选| 欧美一区二区三区视频在线观看 | 欧美日韩激情小视频| 亚洲一区综合| 91久久精品一区二区三区| 鲁大师成人一区二区三区| 亚洲欧美一区二区精品久久久|