一道C++编程题

2025-03-22 14:51:52
推荐回答(2个)
回答1:

多数问题为存心造成  打错字为主

修改后如下

#include
#include//加一个头文件 为strXXX函数
using namespace std;
class binary 
{
 char bits[16];
 public:
  binary(char *);
binary(int);
friend binary operator +(binary,binary);
friend binary operator -(binary,binary);
operator int();
void print();
};

binary::binary(char *p)
{
int d=strlen(p)-1;
int g=15;
while(d>=0&&g>=0)  bits[g--]=(p[d--]=='0'?'0':'1');
while(g>=0)  bits[g--]='0';
}

binary::binary(int n)
{
int i;
for(i=15;i>=0;i--) 
{
bits[i]=(n%2)+'0';
n>>=1;
}
}

binary operator+(binary n1,binary n2)
{
int carry=0,v,i;
binary r((char *)"0");

for(i=15;i>=0;i--) 
{
v=(n1.bits[i]=='0'?0:1)+(n2.bits[i]=='0'?0:1)+carry;
r.bits[i]=(v%2==0?'0':'1');
carry=v>>1;//value 应为v
}
return r;
}

binary operator-(binary n1,binary n2)
{
int carry=0,v,i;
binary r((char *)"0");
for(i=15; i>=0;i--) 
{
v=(n1.bits[i]=='0'?0:1)-(n2.bits[i]=='0'?0:1)+carry;
r.bits[i]=(v%2==0?'0':'1');
carry=v>>1;//value 应为v
}
return r;
}

binary::operator int()//binary 打错了 
{
int i,v=0;
for(i=0;i<16; i++)  
v=v*2+(bits[i]=='0'?0:1);
return v;
}

void binary::print()//binary 打错了 
{
char str[17];
strncpy(str,bits,16);
str[16]='\0';
cout<}

int main()
{
binary n1=(char *)"1011";
binary n2=int(n1)+15;
binary n3=n1-binary(7);
n1.print();
n2.print();
n3.print();
cout< cout< cout< cout< return 0;
}

PS:你用的什么IDE? 给出的错误太笼统了 有可能的话 换一个吧 太差

回答2:

//在vs2008下完成编译,如果在其他编译器上不能正确编译,请更改下面的#include
语句和using
语句(一般是将没有.h后缀的添加上.h后缀,去掉using语句)
#include

#include

#include

using
std::cout;
using
std::endl;
using
std::strlen;
template
T>
T
maxn(T
inArray[],int
arrayCount)//函数模板
{
//temp是用来存放最大值的临时变量,赋予数组第一个值的值
T
temp
=
inArray[0];
//开始循环
比较是否有temp大的,有则将其值付给temp
for(int
i
=
1;i{
if(temp
temp
=
inArray[i];
}
return
temp;//返回特姆坡(最大值)
}
//显示具体化
maxn函数
char*
template>
char*
maxn(char*
inArray[],int
arrayCount)
{
int
iIndex
=
0;//iIndex记录数组中
最长字符串的下标
//付初始值为0
//开始循环,查看是否有比inArray的第iIndex字符串更长的
//字符串,有则更新iIndex
for(int
i
=
1;i{
if(strlen(inArray[iIndex]){
iIndex
=
i;
}
}
//返回字符串长度最大的地址
return
inArray[iIndex];
}
int
main()
{
//分别定义整形
双精度
字符指针
数组,并初始化
int
intArray[6]
=
{1,2,3,4,5,6};
double
dArray[4]
=
{1.2,2.3,3.4,4.5};
char*
cArray[5]
=
{"12","345","456","0","123456"};
//使用maxn函数计算个数组,并输出
cout<<"int
max
:
"<cout<<"double
max
:
"<cout<<"char*
max
:
"<return
0;
}