1.多態類中的虛函數表是Compile-Time,還是Run-Time時建立的?
2.將一個 1M -10M 的文件,逆序存儲到另一個文件,就是前一個文件的最后一個
字符存到新文件的第一個字符,以此類推。
3.main主函數執行完畢后,是否可能會再執行一段代碼?
4.一個父類寫了一個virtual 函數,如果子類覆蓋它的函數不加virtual ,也能實現多態?
在子類的空間里,有沒有父類的這個函數,或者父類的私有變量?
5.給一個字符串、例如 “ababc”要求返回“ab”. 因為“ab”連續重復出現且最長。
? 用C/C++語言寫一函數完成該算法,給出復雜度
6.對序列1、1、2、3、5、8、13。。。。? 是Fab..數列
? 2、3、5、13...是Fab..質數數列,因為他們與自己前面的Fab...數列都互質
給出k,返回第k小的Fab..質數
7.101個硬幣100真、1假,真假區別在于重量。請用無砝碼天平稱兩次給出真幣重還是假幣重的結論。
8.完成字符串拷貝可以使用 sprintf、strcpy 及 memcpy 函數,請問這些函數有什么區別,你喜歡使用哪個,為什么?
9.變量的聲明和定義有什么區別?
10.請寫出下面代碼在 32 位平臺上的運行結果,并說明 sizeof 的性質:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
??????? char a[30];
??????? char *b = (char *)malloc(20 * sizeof(char));
??????? printf("%d\n", sizeof(a));
??????? printf("%d\n", sizeof(b));
??????? printf("%d\n", sizeof(a[3]));
??????? printf("%d\n", sizeof(b+3));
??????? printf("%d\n", sizeof(*(b+4)));
??????? return 0 ;
}
12.請完成以下題目。注意,請勿直接調用 ANSI C 函數庫中的函數實現。
?? a)請編寫一個 C 函數,該函數給出一個字節中被置 1 的位的個數,并請
???? 給出該題的至少一個不同解法。
?? b)請編寫一個 C 函數,該函數將給定的一個字符串轉換成整數。
?? c)請編寫一個 C 函數,該函數將給定的一個整數轉換成字符串。
?? d)請編寫一個 C 函數,該函數將一個字符串逆序。
?? e)請編寫一個 C 函數,該函數在給定的內存區域搜索給定的字符,并返回
???? 該字符所在位置索引值。
?? f)請編寫一個 C 函數,該函數在一個字符串中找到可能的最長的子字符串,
???? 該字符串是由同一字符組成的。
給出演示上述函數功能的一個簡單程序,并請編寫對應的 Makefile 文件
13.我們需要編寫一個圖形相關的應用程序,需要處理大量圖形(Shape)信息,
圖形有矩形(Rectangle),正方形(Square),圓形 (Circle)等種類,應用
需要計算這些圖形的面積,并且可能需要在某個設備上進行顯示(使用在標準
輸出上打印信息的方式做為示意)。
??? a)請用面向對象的方法對以上應用進行設計,編寫可能需要的類
??? b)請給出實現以上應用功能的示例性代碼,從某處獲取圖形信息,
????? 并且進行計算和繪制
??? c)如果你的Square繼承自Rectangle,請給出理由,如果不是,
????? 請給出理由,并且請比較兩種方式的優劣
??? d)請問你所編寫的類,在如下代碼中會有何表現,請解釋
??? void test_rectangle_area(Rectangle& r)
??? {
??????? r.set_width(10);
??????? r.set_height(15);
??????? assert(r.area() == 150);
??? }
14.假設現有一個單向的鏈表,但是只知道只有一個指向該節點的指針p,并且假設這個節點不是尾節點,試編程實現刪除此節點
15.寫一個程序,把一個100以內的自然數分解因數。(自然數分解因數就是將一個自然數分解為幾個素數的乘積,提示,由于該數不是很大,所以可以將質數保存在數組中,以加快計算速度)
16.編寫一個Identify的分配、釋放的函數,為1-10000之間的自然數。
17.分別實現itoa和atoi.
18.Consider the following code:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
int i = 1;
char buf[4];
strcpy(buf, "AAAA");
printf("%d\n", i);
return 0;
}
a) When compiled and executed on x86, why does this program usually not
output what the programmer intended?
b) Name several ways in which the security problem that causes this
program not to output what the programmer intended can be prevented
WITHOUT changing the code.
19.int w=1,x=2,y=3,z=4;
m=(w<x)?w:x;
m=(m<y)?m:y;
m=(m<2)?m:z;
printf("m=%d",m);??????? 說出結果
20.說出結果
#include <stdio.h>
main()
{
??? FILE *fp;
??? int i,a[4]={1,2,3,4},b;
??? fp=fopen("data.dat","wb");//這里幫忙解釋一下
??? for(i=0;i<4;i++)
??? fwrite(&a[i],sizeof(int),1,fp);//這里也幫忙看一下
??? fclose(fp);
??? fp=fopen("data.dat","rb");
??? fseek(fp,-2L*sizeof(int),SEEK_END);//還有這里
??? fread(&b,sizeof(int),1,fp);//這里還有也看一下
??? fclose(fp);
??? printf("b=%d\n",b);
}
21.有雙向循環鏈表結點:
typedef struct node
{
? int date;
? struct node *front,*next;
}_Node;
有兩個雙向循環鏈表A,B,知道其頭指針為:pHeadA,pHeadB,請寫一函數將兩上鏈表中date值相同的結點刪除
22.
char * GetStr()
{
char *tmp;
tmp = "123"
return tmp;
}
void main()
{
printf("%s", GetStr());
}
會輸出123嗎?123創建在堆上還是棧上呢?123的空間是什么時候釋放的?
23.
字符指針、浮點數指針、以及函數指針這三種類型的變量哪個占用的內存最大?為什么?
類ClassB從ClassA派生,那么ClassA *a = new ClassB(…); 試問該表達是否合法?為什么?
如果ClassA中定義并實現虛函數int func(void),ClassB中也實現該函數,那么上述變量a->func()將調用哪個類里面的函數?如果int func(void)不是虛函數,情況又如何?為什么?
char **p, a[16][8];? 問:p=a是否會導致程序在以后出現問題?為什么?
如下所述的if else和switch語句哪個的效率高?為什么?
在同一個進程中,一個模塊是否可以通過指針操作破壞其它模塊的內存,為什么?
應用程序在運行時的內存包括代碼區和數據區,其中數據區又包括哪些部分?
24.Assignment 2: Picture Processing
Use C++, Java, or similar languages or/and any middleware such as EJB and J2EE to process a? picture with a high resolution (3 Mega Pixels for example). Use some methodologies to degrade? the resolution of the picture to make it quicker for browsing. Then divide the degraded? picture into 9 sectors equally. Click any of the 9 sectors will result a detailed picture for? this sector with the same resolution as that of the original picture. This assignment is? designed for you to demonstrate your ability to handle pictures.
25.用<<,>>,|,&實現一個WORD(2個字節)的高低位交換!!
26.要開辟P1,P2,P3,P4內存來做緩沖,大小自定,但這四個緩沖的大小要一樣,并且是連續的!
27.有一浮點型數組A,用C語言寫一函數實現對浮點數組A進行降序排序,并輸出結果,要求要以數組A作為函數的入口.(建議用冒泡排序法)
28.找錯:
#include <string.h>
#include <stdio.h>
class Base
{
private:
char * name;
public:
Base(char * className)
{
name = new char[strlen(className)];
strcpy(name, className);
}
~Base()
{
delete name;
}
char * copyName()
{
char newname [256];
strcpy(newname, name);
return newname;
}
char * getName()
{
return name;
}
static void print(Base base)
{
printf("name: %s\n" , base.name);
}
};
class Subclass : public Base
{
public:
Subclass(char * className) : Base(className)
{
}
};
int main()
{
Base * pBase = new Subclass("test");
Base::print(*pBase);
printf("name: %s\n", pBase->getName());
printf("new name: %s\n", pBase->copyName());
return 0;
}
29.編寫一個函數,函數接收一個字符串,是由十六進制數組成的一組字符串,函數的功能是把接到的這組字符串轉換成十進制數字.并將十進制數字返回.
30.編寫一個函數將一條字符串分成兩部分,將前半部分按ASCII碼升序排序,后半部分不變,(如果字符串是奇數則中間的字符不變,)最后再將前后兩部分交換,然后將該字符串輸出,
測試字符串“ADZDDJKJFIEJHGI”