程序员必看 c++笔试题汇总(1)(8)
37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明? 答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void),
37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?
答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);
- void main( void )
- {
- String str("zhanglin");
- _onexit( fn1 );
- _onexit( fn2 );
- _onexit( fn3 );
- _onexit( fn4 );
- printf( "This is executed first.n" );
- }
- int fn1()
- {
- printf( "next.n" );
- return 0;
- }
- int fn2()
- {
- printf( "executed " );
- return 0;
- }
- int fn3()
- {
- printf( "is " );
- return 0;
- }
- int fn4()
- {
- printf( "This " );
- 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<<"c++";
- #else
- cout<<"c";
- #endif
39.文件中有一组整数,要求排序后输出到另一个文件中
答案:
- #i nclude
- using namespace std;
- void Order(vector<int>& 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 )
- {
- vector<int>data;
- ifstream in("c:data.txt");
- if ( !in)
- {
- cout<<"file error!";
- exit(1);
- }
- int temp;
- while (!in.eof())
- {
- in>>temp;
- data.push_back(temp);
- }
- in.close(); //关闭输入文件流
- Order(data);
- ofstream out("c:result.txt");
- if ( !out)
- {
- cout<<"file error!";
- exit(1);
- }
- for ( i = 0 ; i < data.size() ; i++)
- out<" ";
- out.close(); //关闭输出文件流
- }
- 上一篇:C++的明天是否会依旧辉煌?
- 下一篇:深入剖析C/C++程序员应聘常见面试题
精彩图集
精彩文章