1、局部變量能否和全局變量重名?
答:能,局部會屏蔽全局。要用全局變量,需要使用 ":: "
局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內。
2、如何引用一個已經定義過的全局變量?
答:extern
可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。
3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?
答:可以,在不同的C文件中以static形式來聲明同名全局變量。
(因此全局變量可定義在被多個c文件包含的頭文件中,但必須是static的)
可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯
4、語句for(?;1?;)有什么問題?它是什么意思?
答:和while(1)相同。
5、do……while和while……do有什么區別?
答:前一個循環一遍再判斷,后一個判斷以后再循環
6、請寫出下列代碼的輸出內容
#include
main()
{
int?a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf( "b,c,d:%d,%d,%d ",b,c,d);
return?0;
}
答:10,12,120
7、static全局變量與普通的全局變量有什么區別?static局部變量和普通局部變量有什么區別?static函數與普通函數有什么區別?
全局變量(外部變量)的說明之前再冠以static?就構成了靜態的全局變量。全局變量本身就是靜態存儲方式,?靜態全局變量當然也是靜態存儲方式。?這兩者在存儲方式上并無不同。這兩者的區別雖在于非靜態全局變量的作用域是整個源程序,?當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。?而靜態全局變量則限制了其作用域,?即只在定義該變量的源文件內有效,?在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用,?因此可以避免在其它源文件中引起錯誤。
從以上分析可以看出,?把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域,?限制了它的使用范圍。
static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件
static全局變量與普通的全局變量有什么區別:static全局變量只初使化一次,防止在其他文件單元中被引用;
static局部變量和普通局部變量有什么區別:static局部變量只被初始化一次,下一次依據上一次結果值;
static函數與普通函數有什么區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝
8、程序的局部變量存在于(堆棧)中,全局變量存在于(靜態區?)中,動態申請數據存在于(?堆)中。
9、設有以下說明和定義:
typedef?union?{long?i;?int?k[5];?char?c;}?DATE;
struct?data?{?int?cat;?DATE?cow;?double?dog;}?too;
DATE?max;
則語句?printf( "%d
",sizeof(struct?date)+sizeof(max));的執行結果是:___52____
答:DATE是一個union,?變量公用空間.?里面最大的變量類型是int[5],?占用20個字節.?所以它的大小是20
data是一個struct,?每個變量分開占用空間.?依次為int4?+?DATE20?+?double8?=?32.
所以結果是?20?+?32?=?52.
當然...在某些16位編輯器下,?int可能是2字節,那么結果是?int2?+?DATE10?+?double8?=?20
10、隊列和棧有什么區別?
隊列先進先出,棧后進先出
11、寫出下列代碼的輸出內容
#include
int?inc(int?a)
{
return(++a);
}
int?multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef?int(FUNC1)(int?in);
typedef?int(FUNC2)?(int*,int*,int*);
void?show(FUNC2?fun,int?arg1,?int*arg2)
{
INCp=&inc;
int?temp?=p(arg1);
fun(&temp,&arg1,?arg2);
printf( "%d\n ",*arg2);
}
main()
{
int?a;
show(multi,10,&a);
return?0;
}
答:110
12、請找出下面代碼中的所以錯誤
說明:以下代碼是把一個字符串倒序,如“abcd”倒序后變為“dcba”
1、#include "string.h "
2、main()
3、{
4、?char*src= "hello,world
";
5、?char*?dest=NULL;
6、?int?len=strlen(src);
7、?dest=(char*)malloc(len);
8、?char*?d=dest;
9、?char*?s=src[len];
10、?while(len--!=0)
11、?d++=s--;
12、?printf( "%s
",dest);
13、?return?0;
14、}
答:
方法1:
int?main()
{
char*?src?=?"hello,world ";
int?len?=?strlen(src);
char*?dest?=?(char*)malloc(len+1);//要為\0分配一個空間
char*?d?=?dest;
char*?s?=?&src[len-1];//指向最后一個字符
while(?len--?!=?0?)
*d++=*s--;
*d?=?0;//尾部要加\0
printf( "%s\n ",dest);
free(dest);//?使用完,應當釋放空間,以免造成內存匯泄露
return?0;
}
方法2:
#include?
#include?
main()
{
char?str[]= "hello,world
";
int?len=strlen(str);
char?t;
for(int?i=0;?i
{
t=str[i];
str[i]=str[len-i-1];?str[len-i-1]=t;
}
printf( "%s ",str);
return?0;
}
1. -1,2,7,28,,126請問28和126中間那個數是什么?為什么?
第一題的答案應該是4^3-1=63
規律是n^3-1(當n為偶數0,2,4)n^3+1(當n為奇數1,3,5)
答案:63
2.用兩個棧實現一個隊列的功能?要求給出算法和思路!
設2個棧為A,B,?一開始均為空.
入隊:
將新元素push入棧A;
出隊:
(1)判斷棧B是否為空;
(2)如果不為空,則將棧A中所有元素依次pop出并push到棧B;
(3)將棧B的棧頂元素pop出;
這樣實現的隊列入隊和出隊的平攤復雜度都還是O(1),?比上面的幾種方法要好。
3.在c語言庫函數中將一個字符轉換成整型的函數是atol()嗎,這個函數的原型是什么?
函數名:?atol
功?能:?把字符串轉換成長整型數
用?法:?long?atol(const?char?*nptr);
程序例:
#include?
#include?
int?main(void)
{
long?l;
char?*str?=?"98765432
";
l?=?atol(str);
printf( "string?=?%s?integer?=?%ld\n
",?str,?l);
return(0);
}
13.對于一個頻繁使用的短小函數,在C語言中應用什么實現,在C++中應用什么實現?
c用宏定義,c++用inline
14.直接鏈接兩個信令點的一組鏈路稱作什么?
PPP點到點連接
15.接入網用的是什么接口?
16.voip都用了那些協議?
17.軟件測試都有那些種類?
黑盒:針對系統功能的測試
白合:測試函數功能,各函數接口
18.確定模塊的功能和模塊的接口是在軟件設計的那個隊段完成的?
概要設計階段
19.
enum?string
{
x1,
x2,
x3=10,
x4,
x5,
}x;
問x=??0x801005,0x8010f4?;
20.
unsigned?char?*p1;
unsigned?long?*p2;
p1=(unsigned?char?*)0x801000;
p2=(unsigned?long?*)0x810000;
請問p1+5=?;
p2+5=?;
選擇題:
21.Ethternet鏈接到Internet用到以下那個協議?
A.HDLC;B.ARP;C.UDP;D.TCP;E.ID
22.屬于網絡層協議的是:
A.TCP;B.IP;C.ICMP;D.X.25
23.Windows消息調度機制是:
A.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧;
24.
unsigned?short?hash(unsigned?short?key)
{
return?(key>
> )%256
}
請問hash(16),hash(256)的值分別是:
A.1.16;B.8.32;C.4.16;D.1.32
找錯題:
25.請問下面程序有什么錯誤?
int?a[60][250][1000],i,j,k;
for(k=0;k <=1000;k++)
for(j=0;j <250;j++)
for(i=0;i <60;i++)
a[i][j][k]=0;
把循環語句內外換一下
26.
#define?Max_CB?500
void?LmiQueryCSmd(Struct?MSgCB?*?pmsg)
{
unsigned?char?ucCmdNum;
......
for(ucCmdNum=0;ucCmdNum
{
......;
}
死循環
27.以下是求一個數的平方的程序,請找出錯誤:
#define?SQUARE(a)
((a)*(a))
int?a=5;
int?b;
b=SQUARE(a++); //b = ((a++)*(a++))
28.
typedef?unsigned?char?BYTE
int?examply_fun(BYTE?gt_len;?BYTE?*gt_code)
{
BYTE?*gt_buf;
gt_buf=(BYTE?*)MALLOC(Max_GT_Length);
......
if(gt_len> Max_GT_Length)
{
return?GT_Length_ERROR;
}
.......
}
問答題:
29.IP?Phone的原理是什么?
IPV6
30.TCP/IP通信建立的過程怎樣,端口有什么作用?
三次握手,確定是哪個應用程序使用該協議
31.1號信令和7號信令有什么區別,我國某前廣泛使用的是那一種?
32.列舉5種以上的電話新業務?