IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C++面向对象的程序设计谭浩强 第七章课后题 -> 正文阅读

[数据结构与算法]C++面向对象的程序设计谭浩强 第七章课后题

1. 输入三角形的三边a,b,c,计算三角形的面积的公式是area=

s=(a+b+c)/2构成三角形的条件是: a+b>c, b+c>a, c+a>b

编写程序,输入a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。

?

#include <iostream>
using namespace std;
class Triangle {
public:
	double a, b, c, s, area;
	void SetTriangle();
	void IsTriangle();
};
void Triangle::SetTriangle()
{
	cin >> a >> b >> c;
}

void Triangle::IsTriangle()
{
	if ((a + b) <= c || (b + c) <= a || (c + a) <= b) {
		cerr << "输入不合法" << endl;
	}
	else
	{
		s = (a + b + c) / 2;
		area = sqrt(s * (s - a) * (s - b) * (s - c));
		cout << "area=" << area << endl;
	}
}

int main()
{
	Triangle t;
	t.SetTriangle();
	t.IsTriangle();
}

2. 从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	float a[5];
	int i = 0;
	for (i = 0; i < 5; i++) {
		cin >> a[i];
	}
	cout << setiosflags(ios::fixed) << setprecision(3);

	for (i = 0; i < 5; i++) {
		cout << setw(10) << a[i] << endl;
	}

}

3.编程序,在显示屏上显示一个由字母B组成的三角形。

?

#include  <iostream>
#include<iomanip> 
#pragma warning(disable:26451)
using namespace std;
int main()
{
	int size = 0;
	cin >> size;
	for (int i = 1; i < size; i++) {
			cout << setw(10 - i) << setfill(' ') << " " << setw(2 * i - 1) << setfill('B') << "B" << endl;
	}
}

4.?(简答题)

建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作:?

(1) 从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);

(2) 从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;

(3) 从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。

#include <iostream>
#include <fstream>
using namespace std;
void Set1()
{
    int a[10];
    ofstream outfile1("f1.dat");
    ofstream outfile2("f2.dat");
    cout << "请输入10个整形数字";
    for (int i = 0; i < 10; i++){
        cin >> a[i];
        outfile1 << a[i] << " ";
    }
    cout << "请输入10个整形数字";
    for (int i = 0; i < 10; i++){
        cin >> a[i];
        outfile2 << a[i] << " ";
    }
    outfile1.close();
    outfile2.close(); 
}
void Set2()
{
    ifstream infile("f1.dat");
    ofstream outfile("f2.dat", ios::app);
    int a;
    for (int i = 0; i < 10; i++)
    {
        infile >> a;
        outfile << a << " ";
    }
    infile.close();
    outfile.close();
}
void Set3()
{
    ifstream infile("f2.dat");
    int a[20];
    int num = sizeof(a) / sizeof(a[0]);
    int temp = 0;
    for (int i = 0; i < num; i++) {
        infile >> a[i];
    }
    for (int i = 0; i < num-1; i++) {
        for (int j = 0; j < num -1 - i; j++) {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    infile.close(); 
    ofstream outfile("f2.dat", ios::out);
    for (int i = 0; i < 20; i++){
        outfile << a[i] << " ";
        cout << a[i] << " ";
    }
    outfile.close();
}
int main()
{
    Set1();
    Set2();
    Set3();
    return 0;
}

5.?(简答题)

编程序实现以下功能:?

(1) 按职工号由小到大的顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存。

(2) 从键盘输入两个员工的数据(职工号大于已有的职工号),增加到文件的末尾。

(3) 输出文件中全部职工的数据。

(4) 从键盘输入一个号码,从文件中查找有无此职工号,如有则显示此职工是第几个职工,以及此职工的全部数据。如没有,就输出“无此人”。可以反复多次查询,如果输入查找的职工号为0,就结束查询。

#include<iostream>
#include<fstream>
using namespace std;
struct worker
{
	int num;
	char name[20];
	int age;
	double pay;
};
int main()
{
	worker wk[7] =
	{
	2020033193, "xi",20,2300,
	2020033196, "yang", 21, 1555.5,
	2020033191, "wang", 18, 2000.1,
	2020033194, "Xu", 17, 3000.1,
	2020033192, "zhang", 18, 666.6,
	}, wk1;
	ofstream outfile1("worker.dat");
	ofstream outfile("worker.dat", ios::out);
	fstream iofile("worker.dat", ios::in | ios::out | ios::binary);
	int i, m, num,temp1,temp2;
	double temp3;
	char arr[20];
	cout << "五个员工" << endl;
	for (int i = 0; i < 5 - 1; i++) {
		for (int j = 0; j < 5 - i - 1; j++) {
			if (wk[j].num > wk[j + 1].num){
				temp1 = wk[j + 1].num;
				wk[j + 1].num = wk[j].num;
				wk[j].num = temp1;
				strcpy_s(arr, wk[j + 1].name);
				strcpy_s(wk[j + 1].name, wk[j].name);
				strcpy_s(wk[j].name, arr);
				temp2 = wk[j + 1].age;
				wk[j + 1].age = wk[j].age;
				wk[j].age = temp2;
				temp3 = wk[j + 1].pay;
				wk[j + 1].pay = wk[j].pay;
				wk[j].pay = temp3;
			}
		}
	}
	for (i = 0; i < 5; i++){
		cout << wk[i].num << " " << wk[i].name << " " << wk[i].age << " " << wk[i].pay << endl;
		iofile.write((char*)&wk[i], sizeof(wk[i]));
	}
	cout << "请输入您要插入的2个员工数据:" << endl;
	iofile.seekp(0, ios::end);
	for (i = 0; i < 2; i++){
		cin >> wk1.num >> wk1.name >> wk1.age >> wk1.pay;
		iofile.write((char*)&wk1, sizeof(wk1));
	}
	cout << "七个员工" << endl;
	iofile.seekg(0, ios::beg);
	for (i = 0; i < 7; i++){
		iofile.read((char*)&wk[i], sizeof(wk[i]));
		cout << wk[i].num << " " << wk[i].name << " " << wk[i].age << " " << wk[i].pay << endl;
	}
	bool find;
	cout << "输入要搜索的员工号,输入0停止。";
	cin >> num;
	while (num)
	{
		find = false;
		iofile.seekg(0, ios::beg);
		for (i = 0; i < 7; i++)
		{
			iofile.read((char*)&wk[i], sizeof(wk[i]));
			if (num == wk[i].num)
			{
				m = iofile.tellg();
				cout << num << " 不是" << m / sizeof(wk1) << endl;
				cout << wk[i].num << " " << wk[i].name << " " << wk[i].age << " " << wk[i].pay << endl;
				find = true;
				break;
			}
		}
		if (!find)
			cout << "没找到" << endl;
		cout << "输入要搜索的员工号,输入0停止。";
		cin >> num;
	}
	iofile.close();
	return 0;
}

6.?(简答题)?在例7.17的基础上,修改程序,将存放在c数组中的数据读入并显示出来。

#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;
struct student
{
	int num;
	char name[20];
	double score;
};
int main()
{
	student stud[3] =
	{
		1001,"Li",78,
		1002,"Wang",89.5,
		1004,"Fang",90
	}, stud1[3];
	char c[50] = { 0 };
	int i;
	ostringstream strout;
	for (i = 0; i < 3; i++){
		strout << stud[i].num << " " << stud[i].name << " " << stud[i].score << " ";
	}
	strout << ends;
	strcpy_s(c, strout.str().c_str());
	cout << "array c:" << endl << c << endl << endl;
	istringstream strin(c);
	for (i = 0; i < 3; i++){
		strin >> stud1[i].num >> stud1[i].name >> stud1[i].score;
	}
	cout << "data from array c to array stud1:" << endl;
	for (i = 0; i < 3; i++){
		cout << stud1[i].num << " " << stud1[i].name << " " << stud1[i].score << endl;
	}
	cout << endl;
	return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:41:41  更:2021-12-04 13:44:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 10:49:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码