c++程序教程钱能第二章习题
时间: 2023-10-21 19:25:37 浏览: 46
您好!感谢您的提问。以下是一些 C 程序教程中第二章的习题:
1. 编写一个程序,输入两个整数,然后计算并输出它们的和。
2. 编写一个程序,输入两个整数,然后计算并输出它们的差。
3. 编写一个程序,输入两个整数,然后计算并输出它们的乘积。
4. 编写一个程序,输入两个整数,然后计算并输出它们的商。注意处理除零错误。
5. 编写一个程序,输入一个整数,然后判断并输出它是奇数还是偶数。
6. 编写一个程序,输入一个字符,然后判断并输出它是大写字母、小写字母还是其他字符。
7. 编写一个程序,输入一个年份,然后判断并输出它是闰年还是平年。
希望以上习题能对您有所帮助!如果您有更多问题,请随时提问。
相关问题
钱能c++程序设计教程第三版答案
“钱能c 程序设计教程第三版”是一本经典的计算机编程教程,它涵盖了C语言的基础知识和进阶技巧。在这本书里,读者可以学习到如何使用C语言进行程序设计和开发,包括数据类型、控制结构、函数、数组、指针等内容。此外,书中还介绍了如何使用C语言进行文件操作、内存管理、结构体和指针等高级技术。这本书对于初学者来说是一个很好的入门教材,同时也适合有一定编程经验的人进一步深入学习和提升技能。
在“钱能c 程序设计教程第三版”中,读者可以找到许多例题和习题,可以帮助他们巩固所学知识,并且提供了答案供读者参考。此外,书中还穿插着一些实际的编程案例,帮助读者更好地理解如何运用所学知识解决实际问题。
总的来说,这本书不仅能够帮助读者建立扎实的C语言基础,还可以培养他们解决问题的能力和编程思维。无论是想要学习编程的初学者,还是希望提升编程技能的程序员,都能从这本书中受益匪浅。它是一本经典的计算机编程教材,不仅适合个人自学,也可以作为相关专业的教材,推荐给对计算机编程感兴趣的读者。
C++程序设计教程(钱能) 课后习题 9.1
题目描述:
设计一个线性表的模板类LinearList,采用双向链表来存储数据元素,包括如下成员函数:
1. 构造函数:初始化线性表为空表;
2. 析构函数:删除线性表
3. 复制构造函数:复制线性表
4. 赋值运算符:将一个线性表赋值给另一个线性表
5. 函数IsEmpty:判断线性表是否为空表
6. 函数Size:返回线性表的长度
7. 函数GetData:返回线性表中第i个元素的值
8. 函数Insert:将一个元素插入到线性表的第i个位置上
9. 函数Delete:删除线性表中第i个元素
10. 函数Clear:清空线性表
11. 函数Traverse:遍历线性表并打印每个元素的值
要求:
1. 采用双向链表实现
2. 线性表元素类型可以是任意类型
3. 线性表应该具有异常处理机制
4. 在main函数中进行测试
参考代码:
```
#include <iostream>
#include <stdexcept>
using namespace std;
template <class T>
class LinearList
{
private:
struct Node
{
T data;
Node* prev;
Node* next;
};
Node* head;
int len;
public:
LinearList()
{
head = new Node;
head->prev = head->next = head;
len = 0;
}
~LinearList()
{
Clear();
delete head;
}
LinearList(const LinearList& l)
{
head = new Node;
head->prev = head->next = head;
len = 0;
Node* p = l.head->next;
while (p != l.head)
{
Insert(len + 1, p->data);
p = p->next;
}
}
LinearList& operator=(const LinearList& l)
{
if (this != &l)
{
Clear();
Node* p = l.head->next;
while (p != l.head)
{
Insert(len + 1, p->data);
p = p->next;
}
}
return *this;
}
bool IsEmpty() const
{
return len == 0;
}
int Size() const
{
return len;
}
T GetData(int i) const
{
if (i < 1 || i > len)
throw out_of_range("Index out of range");
Node* p = head->next;
for (int j = 1; j < i; j++)
p = p->next;
return p->data;
}
void Insert(int i, const T& x)
{
if (i < 1 || i > len + 1)
throw out_of_range("Index out of range");
Node* p = head;
for (int j = 1; j < i; j++)
p = p->next;
Node* q = new Node;
q->data = x;
q->prev = p;
q->next = p->next;
p->next->prev = q;
p->next = q;
len++;
}
void Delete(int i)
{
if (i < 1 || i > len)
throw out_of_range("Index out of range");
Node* p = head->next;
for (int j = 1; j < i; j++)
p = p->next;
p->prev->next = p->next;
p->next->prev = p->prev;
delete p;
len--;
}
void Clear()
{
while (!IsEmpty())
Delete(1);
}
void Traverse() const
{
Node* p = head->next;
while (p != head)
{
cout << p->data << ' ';
p = p->next;
}
cout << endl;
}
};
int main()
{
LinearList<int> L1;
for (int i = 1; i <= 10; i++)
L1.Insert(i, i);
cout << "L1: ";
L1.Traverse();
LinearList<int> L2 = L1;
cout << "L2: ";
L2.Traverse();
LinearList<int> L3;
L3 = L1;
cout << "L3: ";
L3.Traverse();
L1.Delete(5);
cout << "L1: ";
L1.Traverse();
cout << "L2: ";
L2.Traverse();
cout << "L3: ";
L3.Traverse();
return 0;
}
```