100分,请进来来做做这几道面试题

whwjn 2007-04-12 12:33:33
1、完全数是指该数的所有因子之和等于它自身的数。例如6是完全数(1+2+3),28也是完全数(1+2+4+7+14)。28之后的下一个数相当大,手工计算比较难求。试给出一个算法,判断一个整数是否为完全数。
2、可将仓库中存储的商品看成实体,试仿照下面示例的描述方法,描述该实体;
示范:在银行账户中存款
输入:存款金额m和当前余额b。
输出:新余额b'。
步骤:令b'=b+m并终止。
3、给定字母表∑={1,1}。串s由1开头,中间有零个或多个0或1,最后由1结束。试用BNF描述串s的语法。

谢谢。
...全文
1248 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanlei809973921 2008-08-19
  • 打赏
  • 举报
回复
小菜存在的意义就在于不断的学习~~~
liusujian02 2008-08-05
  • 打赏
  • 举报
回复
2、可将仓库中存储的商品看成实体,试仿照下面示例的描述方法,描述该实体;
示范:在银行账户中存款
输入:存款金额m和当前余额b。
输出:新余额b '。
步骤:令b '=b+m并终止。

class base
{
public:
int left;

virtual int in(int income)
{
return (left = left+income);
}
};

class goods : public base
{
/*定义商品库存的固有属性*/
}

void main()
{
base * m_pBase = NULL;
goods newObj;
m_pBase = &newObj;
return m_pBase->in(20);
}

有利于程序以后的扩展~
amei_zhang83 2007-04-13
  • 打赏
  • 举报
回复
哦,学习中,好像这几个题是课后练习题呢!
长尾巴的悟空 2007-04-13
  • 打赏
  • 举报
回复
oh,my god.
what about you?
so hard for me
羊小丸子 2007-04-13
  • 打赏
  • 举报
回复
3:
A->0|1|E
B->A|AB
S->1B1
(E为空)
lin_style 2007-04-12
  • 打赏
  • 举报
回复
第二题谁写个看看。

没做过
AWolfBoy 2007-04-12
  • 打赏
  • 举报
回复
我不是已经给出公式了吗,这个是一个标准的求完全数的公式,经过验证的。
n-1 n
2 (2 - 1)

其中n>0,当取1时为1,取2时为6,取3时为28
你可以依次把n递增,取结果小于1000的数就可以了

(上面公式表示为[2的(n-1)次方乘以(2的n次方-1)])
windily 2007-04-12
  • 打赏
  • 举报
回复
AWolfBoy(龍行江湖) 能讲的详细一点吗
lotomer 2007-04-12
  • 打赏
  • 举报
回复
//第一题源码
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

bool CheckNum(int n)
{
int sum = 0;
for (int x = 1; x != n; ++x)
{
if (n % x == 0)
{
sum += x;
}
}
return sum == n;
}


int _tmain(int argc, _TCHAR* argv[])
{
int n;
cout<<"\t求指定范围内的完全数。"<<endl;
cout<<"请输入指定范围(整数)"<<endl;
cin>>n;
cout<<"\t统计结果"<<endl;
cout<<"1到"<<n<<"以内的完全数统计如下:"<<endl;
for (int x = 1; x != n; ++x)
{
if (CheckNum(x))
cout<<x<<endl;
}
system("PAUSE");
return 0;
}
wangzhangyong411 2007-04-12
  • 打赏
  • 举报
回复
第二道:

#include <stdio.h>

class CTemp
{
private:
float fleft;
float fin;
float temp;

public:
CTemp();
~CTemp();
void peek();
void in();
void out();
};

CTemp::CTemp()
{
fleft = 0;
fin = 0;
temp = 0;
}

CTemp::~CTemp()
{
}

void CTemp::in()
{
printf("请输入存入数量:");
scanf("%f", &fin);
fleft = fleft + fin;
}

void CTemp::peek()
{
printf("剩余:%g 上次存取:%g\n", fleft, fin);
}

void CTemp::out()
{
printf("请输入取出数量:");
scanf("%f", &temp);
if (temp > fleft)
{
printf("剩余不足\n");
return;
}
fin = -temp;
fleft = fleft + fin;
}

void main()
{
CTemp a;
a.in();
a.peek();
a.out();
a.peek();
}

顶下


wangzhangyong411 2007-04-12
  • 打赏
  • 举报
回复
1
bool foo(int n)
{
int temp = 0;
for (int i = 0; i<n; i++)
{
if (n % i == 0)
temp += i;
}
if (temp == n)
return true;
return false;
}
kxy4341 2007-04-12
  • 打赏
  • 举报
回复
第一题
bool Mycheckit(int input)
{
int sum=0,div;
if(input<=0)
{
printf("请输入正整数!");
return false;
}
else
{
for(div=1;div<=input/2;div++)
{
if(input%div==0)
sum+=div;
else
;
if(sum>input)
{
return false;
}
}
}
if(sum==input)
return true;
else
return false;
}
shunan 2007-04-12
  • 打赏
  • 举报
回复
第三题:
S= 1A
A= 1A | 0A | B
B= 1
或者:
S=1A1
A=1A | 0A | e //e 表示为空字符
AWolfBoy 2007-04-12
  • 打赏
  • 举报
回复
完数是有一个规则的,不需要这样来穷举
n-1 n
2 (2 - 1)
tanlijun37 2007-04-12
  • 打赏
  • 举报
回复
第二道题:
bool isfulldigit(int digit)
{
if (digit < 1)
{
cout << "输入的数字不能小于1" << endl;
return false;
}
int sum = 1;
for(int i = 2; i <= digit / 2; i++)
{
if (digit % i == 0)
{
sum += i;
}
}
if (sum == digit)
{
return true;
}
return false;
}
marrco2005 2007-04-12
  • 打赏
  • 举报
回复
<串S> := 1[<中间串>]1
<中间串> := 0 | 1 | 0<中间串> | 1<中间串>
jixingzhong 2007-04-12
  • 打赏
  • 举报
回复
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
   找出1000以内的所有完数。
1. 程序分析:请参照程序<--上页程序14.
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
static int k[10];
int i,j,n,s;
for(j=2;j<1000;j++)
{
n=-1;
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
n++;
s=s-i;
k[n]=i;
}
}
if(s==0)
{
printf("%d is a wanshu",j);
for(i=0;i<n;i++)
printf("%d,",k[i]);
printf("%d\n",k[n]);
}
}
getch();
}
orc1984 2007-04-12
  • 打赏
  • 举报
回复
Up 没时间写 晚上写吧
whwjn 2007-04-12
  • 打赏
  • 举报
回复
好多高手啊,学习啊
MOTA 2007-04-12
  • 打赏
  • 举报
回复
穷举太浪费时间了`!!!!

要尝试其他办法看了`~!!
加载更多回复(10)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧