理解了下题意,应该就是计算达到木板伸出的要求长度,所需的最少块数
碰到的一点小问题,表达式1/2默认为整型,所以结果为0。
输出是要求输入0.00为结束符,而不是输入一个,计算一个,由于要一次性输出,本想考虑动态数组,可是不知道预先输入几个数字,后改用链表,使用链表时,犯了个致命错误,头节点未申请就使用,尾节点未串起来,好久没用都生疏了,看到AC的瞬间,无比开心。
#include <iostream>
using namespace std;
struct Node
{
public:
int data;
Node* next;
};
class List
{
Node*head;
Node* tail;
public:
//默认构造函数
List(){head=NULL;}
void pushList(int a);//链表结点的插入
void outputList();//链表结点的输出
};
void List::pushList(int a)
{
if(head == NULL)
{
head=(Node*)new Node;
head->data=a;
head->next=NULL;
tail=head;
}
else
{
Node* s=(Node*)new Node;
s->data = a;
s->next = NULL;
tail->next = s;
tail = s;
}
}
void List::outputList()
{
Node* current = head;
while(current!=NULL)
{
cout<<current->data<<" card(s)"<<endl;
current=current->next;
}
}
int main()
{
float m;
List mlist;
while(cin>>m)
{
if(m == 0.00)
{
break;
}
double x=0.5;
int n = 1;
while(x<m)
{
n++;
x = x+1.0/(n+1);
}
mlist.pushList(n);
}
mlist.outputList();
return 0;
}
一点容易忘记的C++语言特性:
1. 默认的继承访问权限。struct是public的,class是private的
2. 类成员函数可以访问私有成员