求解一道难倒马云的题目C++的题目

一道经典C++题目,原来还可以这样用!
经典绝妙题目,考考你的C/C++应用能力
#include &iostream.h&
/////////////////////////////////////////////
int main(int argc, char* argv[])
cout&&"风声雨声读书声声声入耳\n";
/////////////////////////////////////////////
以上是一段完整的C/C++语言代码,可以实现在控制台输出文本:
风声雨声读书声声声入耳
要求:利用你学过的C/C++知识,不改变main函数,编程在控制台输出文本:
风声雨声读书声声声入耳
家事国事天下事事事关心
&& &作者:
lianlxz_518&
17:42   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
直接用/*...*/注释掉原来的main函数,同时编写新的main函数。(嘿嘿,够淫荡吧!)
#include &iostream.h&
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";
&return 0;
&& &作者:
lianlxz_518&
17:44   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
只要“不改变main函数”,即保持反斜线之间的部分内容不变,就可以提出来与大家讨论哦!!
&& &作者:
lianlxz_518&
17:49   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
重写iostream.h,使得每次调用cout&&"
";都在后面接着显示家事国事天下事事事关心\n
嘿嘿,比较复杂,我就不写了.
&& &作者:
robber_tys&
17:53   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
#include &iostream.h&
#include &iostream.h&
cout&&"家事国事天下事事事关心\n";
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
这是我想到的最简单的
写一个类,此类析构函数输出字.
再把此字声明为全局变量,由于全局变量类析构函数在程序结束前一瞬间才得到执行,所以就行
第二个方法就是去掉头文件 ,自己写个iostream类
第三个方法就是在程序执行之前,截取主函数执行权,把它转移到你要执行的代码,然后再转移到主函数去执行,此方法可以先写一个类,声明为全局变量,在类中加入能够修改主函数头部的机器代码(这种方法强烈依靠操作系统,软件平台移植性不强,而且需要机器代码,所以不同硬件也要不同考虑),具体可参见我前面发的有关C++
thunk技术中怎么改变指令的方法!
&& &作者:
liujioure&
23:22   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
谢谢大家捧场!可能大家是初学C++的.为了帮大家一下,我把我说的第二种方法写出来给大家看看。如果有时间,把第三种实现方法也写出来。可惜最近忙,没什么时间,请大家见谅
#include &stdio.h&
class ostream
void operator && (const char *str)
printf("%s",str);
&printf("%s","家事国事天下事事事关心\n");
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
&& &作者:
liujioure&
15:55   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
利用宏命令,重新指定cout的意义。
#include &iostream.h&
#define cout
cout&&"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";if(0)cout
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
&& &作者:
60.209.248.*&
10:08   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
#include &iostream.h&
ostream& operator&& (ostream& o,char* str)
const char* tmp =
const char* add = "家事国事天下事事事关心\n";
o && tmp &&
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
&& &作者:
14:22   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
#include &iostream.h&
ostream& operator&& (ostream& o,char* str)
const char* tmp =
"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";
/////////////////////////////////////////////
int main(int argc, char* argv[])
cout&&"风声雨声读书声声声入耳\n";
/////////////////////////////////////////////
&& &作者:
14:25   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
#include &iostream.h&
int main(int argc, char* argv[])
cout&&"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";
#define main main_
/////////////////////////////////////////////
int main(int argc, char* argv[])
cout&&"风声雨声读书声声声入耳\n";
/////////////////////////////////////////////
&& &作者:
13:44   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
再再来一个
#include &iostream.h&
#define return cout && "家事国事天下事事事关心\n";
/////////////////////////////////////////////
int main(int argc, char* argv[])
cout&&"风声雨声读书声声声入耳\n";
/////////////////////////////////////////////
&& &作者:
13:50   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
我是楼主,给大家提供又一个解决方案:
利用条件编译的宏命令,跳过旧版本的main函数,条件编译新的main函数。
#include &iostream.h&
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";
&return 0;
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
&& &作者:
lianlxz_518&
13:05   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
#include &iostream.h&
namespace main1
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
void main ()
main1::main(0,0);
cout&&"家事国事天下事事事关心\n";
QQ:6403045
&& &作者:
211.90.183.*&
12:03   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
利用宏命令,重新指定main的意义。(特别注意“\”的用法!)
#include &iostream.h&
#define main main(int argc, char* argv[])\
&cout&&"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";\
&return 0;\
int not_used
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
&& &作者:
lianlxz_518&
16:47   回复此发言
&回复:经典绝妙题目,考考你的C/C++应用能力
根据29楼的创意改编
#include &iostream.h&
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";
&return 0;
#include &iostream.h&
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n";
&return 0;
/////////////////////////////////////////////
int main(int argc, char* argv[])
&cout&&"风声雨声读书声声声入耳\n家事国事天下事事事关心\n";
&return 0;
&& &作者:
23:46   回复此发言
文章引用自:http://post.baidu.com/f?kz=
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。C++循环结构
23道题(含答案)_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C++循环结构
23道题(含答案)
&&C++函数练习题
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩10页未读,
定制HR最喜欢的简历
你可能喜欢百度知道 - 信息提示
知道宝贝找不到问题了&_&!!
该问题可能已经失效。
秒以后自动返回一道C++面试题和补码、无符号数减法运算 - 简书
一道C++面试题和补码、无符号数减法运算
面试题在文章第4节。在看面试题之前,可以先看一下1-3节的知识点。
Two's Complement(二补数、补码)是对二进制数的数学运算,运算过程为:对二进制序列每一位取反(0-&1; 1-&0),再加1。
2. 计算机中有符号数的表示
计算机中的数值类型分为整数型和浮点数型,有符号数在最高位设置符号位,其余低位均为数值位。数值位一律采用补码形式存储,并参与计算。采用补码的形式表示有符号数至少有两大好处。
符号位和数值位统一参与运算,不用区分正、负,加法和减法实现简单;
数据的原码和补码之间的相互转换不需要依赖额外硬件电路。
下面分别介绍有符号数的表示方法
正整数的补码是其二进制表示,与原码相同。
例如,在整数类型占用4字节(32位)的系统中,+5的补码是00 。最高位0表示该数值为正数,其余31位表示数值大小。
负整数的补码需要对其绝对值的二进制表示进行补码运算。
例如,-5的补码是11 。最高位为1,表示该数值为负数,其余31位表示数值大小。
在进行运算时,CPU并不会区分是正数还是负数,而是直接进行计算,这正是前面介绍的符号位和数值位的统一。
例如,a=10, b=-5,则a+b的运算过程如下:
===========================================
如果,a=1, b=5,则a-b首先转换成加法a+(-b),再进行计算,过程如下:
a-b ==& a+(-b)
===========================================
对于正整数(最高位为1),将非符号位的二进制位直接转换成十进制,就表示该正数的实际大小。如果一个数是负整数,如何将其补码转换成十进制大小呢?补码运算即可。
例如上面的11 ,最高位符号位是1,所以该数为负数,补码运算之后为00 ,大小为9,所以表示-9。
2.2 浮点数
3. 为什么是补码?
为什么两个数相减a-b用补码形式a+(-b)进行计算的结果是正确的?不妨看一下对b进行补码的过程绝对值的二进制序列取反,再加1。取反在计算机的逻辑电路中就是开关的闭合状态取反即可,即1-&0,0-&1。如果用数学算式表达的话,对一个bit位b的取反运算可以写成
取反b = 1-b (*)
b=0时,取反b为1,1-b=1;
b=1时,取反b为0,1-b=0;
所以算是(*)可以表达取反运算
综上,a-b的计算过程可表达为(8bit为例)
a-b == a+(-b) == a+(-b+1) == a+(b的补码形式)
在8bit系统中, + 1 == ,溢出。
所以,a+(-b+1) = a+(0-b) = a - b
可以看出,补码运算的实现效果巧妙地利用了因计算机系统位数限制而产生的溢出现象。
4. 一个C++面试题
下面代码打印多少?
#include &iostream&
int main(int argc, char **argv)
std::cout && 25u - 50;
25u是unsigned int类型,50为int类型。在这两种操作数进行-运算时,int被提升为unsigned int型,运算变为25u - 50u,结果也应该是unsigned int类型。经过对-50u进行补码运算后带入加法运算,-25的二进制表示形式被存入内存,即11 (int为32位),在打印时按无符号数处理,则直接转换成十进制正整数为。
2^31 + 2^30 + ... + 2^5 + 2^2 + 2^1 + 2^0 =
2^5(1-2^27) / (1-2) + 7 =
更多面试题和答案:
但行好事,莫問前程初学者问一道C++的改写题目
#include &iostream&class Time{public:
};int main(){ Time t1; cin && t1. cin && t1. cin && t1. cout && t1.hour && ":" && t1.minute && ":" && t1. return 0;}将上述C++程序改写为:1:将数据成员改为私有的2:将输入和输出的功能改为由成员函数实现3:在类体内定义成员函数谢谢了!
浏览 845回答 3
#include &iostream&
class Time
friend istream& operator &&(istream&,Time&);//friend是友源函数,使这个函数可以调用类私有的成员变量
friend ostream& operator &&(ostream&,Time&);
void Test(int,int);//这种在类内部只声明不定义的方法就是类外定义,声明时候的参数列表要写不过只写类型名,不写变量名,不写大括号,后面要加; 在类的外面写定义
void Test2(int a)//类内定义
void Test(int x,int y)//类外定义,这个函数无意义只是告诉你什么叫类外定义,在函数名前面加(类名::)
istream& operator &&(istream& in,Time& x)//operator&&函数,,这个函数是重载流输入运算符,使cin可以直接输入这个类
in && x.hour && x.minute && x.
ostream& operator &&(ostream& out,Time& x)//指定cout输出这个类时候的格式
out && x.hour && &:& && x.minute && &:& && x.
int main()
}运算符重载不会的话自己百度下吧,解释其他不方便
#include &iostream&class Time{public:
//第一步:将这个改成private:void print(){
cout && hour && &:& && minute && &:& &&}
//第二步2:这个函数实现输出,类的成员函数调用类的成员函数 可以直接调用,不需要用实例化对象t1
//第三部:这个就是在类体内定义的};void Time::print(){
cout && hour && &:& && minute && &:& &&} //第四部,这个是在类外定义的,内里面跟外面只能选择一个int main(){Time t1;cin && t1.cin && t1.cin && t1.cout && t1.hour && &:& && t1.minute && &:& && t1.
//第二步1:将这段注释掉,改成用成员函数return 0;}
然后还有一个问题,就是在上个题目的基础上,如何修改为:在类体内声明成员函数,而在类外定义成员函数初学者刚学C++,希望大神写的详细一些,谢谢了!
随时随地看视频}

我要回帖

更多关于 一道难倒马云的题目 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信