77范文网 - 专业文章范例文档资料分享平台

C - C++语言程序设计笔试面试题12

来源:网络收集 时间:2020-06-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

35. There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement

statements, find out the biggest one of the two numbers. 答案:( ( a + b ) + abs( a - b ) ) / 2

36. 如何打印出当前源文件的文件名以及源文件的当前行号? 答案:

cout << __FILE__ ; cout<<__LINE__ ;

__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4

(void);

void main( void ) {

String str(\_onexit( fn1 ); _onexit( fn2 ); _onexit( fn3 ); _onexit( fn4 );

printf( \}

int fn1() {

printf( \return 0; }

int fn2() {

printf( \return 0; }

int fn3() {

printf( \return 0; }

int fn4() {

printf( \return 0; }

The _onexit function is passed the address of a function (func) to be called when the program

terminates normally. Successive calls to _onexit create a register of functions that are executed

in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.

38. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的? 答案:

#ifdef __cplusplus cout<<\#else

cout<<\#endif

39.文件中有一组整数,要求排序后输出到另一个文件中 答案:

#i nclude

#i nclude

using namespace std;

void Order(vector& data) //bubble sort {

int count = data.size() ;

int tag = false ; // 设置是否需要继续冒泡的标志位 for ( int i = 0 ; i < count ; i++) {

for ( int j = 0 ; j < count - i - 1 ; j++) {

if ( data[j] > data[j+1]) {

tag = true ;

int temp = data[j] ; data[j] = data[j+1] ; data[j+1] = temp ;

} }

if ( !tag ) break ; } }

void main( void ) {

vectordata;

ifstream in(\if ( !in) {

cout<<\exit(1); }

int temp;

while (!in.eof()) {

in>>temp;

data.push_back(temp); }

in.close(); //关闭输入文件流 Order(data);

ofstream out(\if ( !out) {

cout<<\exit(1); }

for ( i = 0 ; i < data.size() ; i++) out<

out.close(); //关闭输出文件流 }

40. 链表题:一个链表的结点结构 struct Node {

int data ; Node *next ; };

typedef struct Node Node ;

(1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)

Node * ReverseList(Node *head) //链表逆序

{

if ( head == NULL || head->next == NULL ) return head;

Node *p1 = head ;

Node *p2 = p1->next ; Node *p3 = p2->next ; p1->next = NULL ; while ( p3 != NULL ) {

p2->next = p1 ; p1 = p2 ; p2 = p3 ;

p3 = p3->next ; }

p2->next = p1 ; head = p2 ; return head ; }

(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同 )

Node * Merge(Node *head1 , Node *head2) {

if ( head1 == NULL) return head2 ;

if ( head2 == NULL) return head1 ;

Node *head = NULL ; Node *p1 = NULL; Node *p2 = NULL;

if ( head1->data < head2->data ) {

head = head1 ; p1 = head1->next; p2 = head2 ; } else

{

head = head2 ;

p2 = head2->next ; p1 = head1 ; }

Node *pcurrent = head ;

while ( p1 != NULL && p2 != NULL) {

if ( p1->data <= p2->data ) {

pcurrent->next = p1 ; pcurrent = p1 ; p1 = p1->next ; } else {

pcurrent->next = p2 ; pcurrent = p2 ; p2 = p2->next ; } }

if ( p1 != NULL )

pcurrent->next = p1 ; if ( p2 != NULL )

pcurrent->next = p2 ; return head ; }

(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。

(Autodesk) 答案:

Node * MergeRecursive(Node *head1 , Node *head2) {

if ( head1 == NULL ) return head2 ;

if ( head2 == NULL) return head1 ;

Node *head = NULL ;

if ( head1->data < head2->data ) {

head = head1 ;

head->next = MergeRecursive(head1->next,head2); }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C - C++语言程序设计笔试面试题12在线全文阅读。

C - C++语言程序设计笔试面试题12.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1091052.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: