c语言面试题大汇总之华为面试题,计算机c语言面试题大汇总之华为面试题6.doc...
試題5:編寫(xiě)一個(gè)函數(shù),作用是把一個(gè)char組成的字符串循環(huán)右移n個(gè)。比如原來(lái)是“abcdefghi”如果n=2,移位后應(yīng)該是“hiabcdefgh” 函數(shù)頭是這樣的:
//pStr是指向以''結(jié)尾的字符串的指針//steps是要求移動(dòng)的nvoid LoopMove ( char * pStr, int steps ){ //請(qǐng)?zhí)畛?..}
解答: 正確解答1:
void LoopMove ( char *pStr, int steps ){ int n = strlen( pStr ) - steps; char tmp[MAX_LEN]; strcpy ( tmp, pStr + n ); strcpy ( tmp + steps, pStr); *( tmp + strlen ( pStr ) ) = ''; strcpy( pStr, tmp );}
正確解答2:
void LoopMove ( char *pStr, int steps ){ int n = strlen( pStr ) - steps; char tmp[MAX_LEN]; memcpy( tmp, pStr + n, steps ); memcpy(pStr + steps, pStr, n ); memcpy(pStr, tmp, steps );}
剖析: 這個(gè)試題主要考查面試者對(duì)標(biāo)準(zhǔn)庫(kù)函數(shù)的熟練程度,在需要的時(shí)候引用庫(kù)函數(shù)可以很大程度上簡(jiǎn)化程序編寫(xiě)的工作量。 最頻繁被使用的庫(kù)函數(shù)包括: (1) strcpy (2) memcpy (3) memset 試題6:已知WAV文件格式如下表,打開(kāi)一個(gè)WAV文件,以適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)組織WAV文件頭并解析WAV格式的各項(xiàng)信息。 WAVE文件格式說(shuō)明表
偏移地址
字節(jié)數(shù)
數(shù)據(jù)類型
內(nèi) 容
文件頭
00H
4
Char
"RIFF"標(biāo)志
04H
4
int32
文件長(zhǎng)度
08H
4
Char
"WAVE"標(biāo)志
0CH
4
Char
"fmt"標(biāo)志
10H
4
過(guò)渡字節(jié)(不定)
14H
2
int16
格式類別
16H
2
int16
通道數(shù)
18H
2
int16
采樣率(每秒樣本數(shù)),表示每個(gè)通道的播放速度
1CH
4
int32
波形音頻數(shù)據(jù)傳送速率
20H
2
int16
數(shù)據(jù)塊的調(diào)整數(shù)(按字節(jié)算的)
22H
2
每樣本的數(shù)據(jù)位數(shù)
24H
4
Char
數(shù)據(jù)標(biāo)記符”data”
28H
4
int32
語(yǔ)音數(shù)據(jù)的長(zhǎng)度
解答: 將WAV文件格式定義為結(jié)構(gòu)體WAVEFORMAT:
typedef struct tagWaveFormat{ char cRiffFlag[4]; UIN32 nFileLen; char cWaveFlag[4]; char cFmtFlag[4]; char cTransition[4]; UIN16 nFormatTag ; UIN16 nChannels; UIN16 nSamplesPerSec; UIN32 nAvgBytesperSec; UIN16 nBlockAlign; UIN16 nBitNumPerSample; char cDataFlag[4]; UIN16 nAudioLength;} WAVEFORMAT;
假設(shè)WAV文件內(nèi)容讀出后存放在指針buffer開(kāi)始的內(nèi)存單元內(nèi),則分析文件格式的代碼很簡(jiǎn)單,為:
WAVEFORMAT waveFormat;memcpy( &waveFormat, buffer,sizeof( WAVEFORMAT ) );
直接通過(guò)訪問(wèn)waveFormat的成員,就可以獲得特定WAV文件的各項(xiàng)格式信息。 剖析: 試題6考查面試者組織數(shù)據(jù)結(jié)構(gòu)的能力,有經(jīng)驗(yàn)的程序設(shè)計(jì)者將屬于一個(gè)整體的數(shù)據(jù)成員組織為一個(gè)結(jié)構(gòu)體,利用指針類型轉(zhuǎn)換,可以將memcpy、memset等函數(shù)直接用于結(jié)構(gòu)體地址,進(jìn)行結(jié)構(gòu)體的整體操作。透過(guò)這個(gè)題可以看出面試者的程序設(shè)計(jì)經(jīng)驗(yàn)是否豐富。 試題7:編寫(xiě)類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù),已知類String的原型為:
class String{ public: String(const char *str = NULL); // 普通構(gòu)造函數(shù) String(const String &other); // 拷貝構(gòu)造函數(shù) ~ String(void); // 析構(gòu)函數(shù) String & operate =(const String &other); // 賦值函數(shù) private: char *m_dat
總結(jié)
以上是生活随笔為你收集整理的c语言面试题大汇总之华为面试题,计算机c语言面试题大汇总之华为面试题6.doc...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言 int和字母,[求助]从一个包含
- 下一篇: c 语言切换源码,C转换为pas - 源