习题答案(1~10)

Posted PaQiuQiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了习题答案(1~10)相关的知识,希望对你有一定的参考价值。

文章目录

练习5.1

什么是空语句?什么时候会用到空语句?

只含义一个单独的分号的语句是空语句。如:

;

如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。

while (cin >> s && s != sought)
	;

练习5.2

什么是块?什么时候会用到块?

用花括号括起来的语句和声明的序列就是块。


	// ...

如果在程序的某个地方,语法上需要一条语句,而逻辑上需要多条语句,此时应该使用块

while (val <= 10) 
	sum += val;
	++val;

练习5.3

使用逗号运算符重写1.4.1节的 while 循环,使它不再需要块,观察改写之后的代码可读性提高了还是降低了。

while (val <= 10)
    sum += val, ++val;

代码的可读性反而降低了。

练习5.4

说明下列例子的含义,如果存在问题,试着修改它。

(a) while (string::iterator iter != s.end())  /* . . . */ 
(b) while (bool status = find(word))  /* . . . */ 
		if (!status)  /* . . . */ 
  • (a) 这个循环试图用迭代器遍历string,但是变量的定义应该放在循环的外面,目前每次循环都会重新定义一个变量,明显是错误的。
  • (b) 这个循环的 while 和 if 是两个独立的语句,if 语句中无法访问 status 变量,正确的做法是应该将 if 语句包含在 while 里面,

练习5.5

写一段自己的程序,使用if else 语句实现把数字转换为字母成绩的要求。

#include <iostream>
#include <vector>
#include <string>
using std::vector; using std::string; using std::cout; using std::endl; using std::cin;

int main()

	vector<string> scores =  "F", "D", "C", "B", "A", "A++" ;
	for (int g; cin >> g;)
	
		string letter;
		if (g < 60)
		
			letter = scores[0];
		
		else
		
			letter = scores[(g - 50) / 10];
			if (g != 100)
				letter += g % 10 > 7 ? "+" : g % 10 < 3 ? "-" : "";
			cout << letter << endl;
		
	

	return 0;

练习5.6

改写上一题的程序,使用条件运算符代替if else语句。

#include <iostream>
#include <vector>
#include <string>
using std::vector; using std::string; using std::cout; using std::endl; using std::cin;

int main()

	vector<string> scores =  "F", "D", "C", "B", "A", "A++" ;

	int grade = 0;
	while (cin >> grade)
	
		string lettergrade = grade < 60 ? scores[0] : scores[(grade - 50) / 10];
		lettergrade += (grade == 100 || grade < 60) ? "" : (grade % 10 > 7) ? "+" : (grade % 10 < 3) ? "-" : "";
		cout << lettergrade << endl;
	

	return 0;

练习5.7

改写下列代码段中的错误。

(a) if (ival1 != ival2) 
		ival1 = ival2
    else 
    	ival1 = ival2 = 0;
(b) if (ival < minval) 
		minval = ival;
    	occurs = 1;
(c) if (int ival = get_value())
    	cout << "ival = " << ival << endl;
    if (!ival)
    	cout << "ival = 0\\n";
(d) if (ival = 0)
    	ival = get_value();
  • (a) ival1 = ival2 后面少了分号。
  • (b) 应该用花括号括起来。
  • © if (!ival) 应该改为 else
  • (d) if (ival = 0) 应该改为 if (ival == 0)

练习5.8

什么是“悬垂else”?C++语言是如何处理else子句的?

C++语言规定else与它最近的尚未匹配的if匹配。

练习5.9

编写一段程序,使用一系列if语句统计从cin读入的文本中有多少元音字母。

#include <iostream>

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

int main()

	unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
	char ch;
	while (cin >> ch)
	
		if (ch == 'a') ++aCnt;
		else if (ch == 'e') ++eCnt;
		else if (ch == 'i') ++iCnt;
		else if (ch == 'o') ++oCnt;
		else if (ch == 'u') ++uCnt;
	
	cout << "Number of vowel a: \\t" << aCnt << '\\n'
		<< "Number of vowel e: \\t" << eCnt << '\\n'
		<< "Number of vowel i: \\t" << iCnt << '\\n'
		<< "Number of vowel o: \\t" << oCnt << '\\n'
		<< "Number of vowel u: \\t" << uCnt << endl;

	return 0;

练习5.10

我们之前实现的统计元音字母的程序存在一个问题:如果元音字母以大写形式出现,不会被统计在内。编写一段程序,既统计元音字母的小写形式,也统计元音字母的大写形式,也就是说,新程序遇到’a’和’A’都应该递增 aCnt 的值,以此类推。

#include <iostream>
using std::cin; using std::cout; using std::endl;

int main()

	unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
	char ch;
	while (cin >> ch)
		switch (ch)
	
		case 'a':
		case 'A':
			++aCnt;
			break;
		case 'e':
		case 'E':
			++eCnt;
			break;
		case 'i':
		case 'I':
			++iCnt;
			break;
		case 'o':
		case 'O':
			++oCnt;
			break;
		case 'u':
		case 'U':
			++uCnt;
			break;
	

	cout << "Number of vowel a(A): \\t" << aCnt << '\\n'
		<< "Number of vowel e(E): \\t" << eCnt << '\\n'
		<< "Number of vowel i(I): \\t" << iCnt << '\\n'
		<< "Number of vowel o(O): \\t" << oCnt << '\\n'
		<< "Number of vowel u(U): \\t" << uCnt << endl;

	return 0;

数据库系统概论第五版(笔记+习题答案)(全)

因学习数据库系统概论,将会对每一个章节进行一个整理,包括笔记和习题答案。


目录

前言

第 1 章 绪论

第 1 章习题答案

第 2 章 关系数据库

第 2 章习题答案

第 3 章 关系数据库标准语言SQL

第 3 章习题答案

第 4 章 数据库安全性

第 4 章习题答案

第 5 章 数据库完整性

第 5 章习题答案

第 6 章 关系数据理论

第 6 章习题答案

第 7 章 数据库设计

第 7 章习题答案


前言

  • 本篇文章学习参考书:《数据库系统概论》第5版 王珊 萨师煊编著
  • 会持续更新直到更新完毕,更新范围为本书的本科生必读范围(1-11章)(如果没有超链接,表示还没有更新到)
  • 作为初学者,初学我们最重要的是掌握其理论、思想,和语句,因为最重要的理论在其它数据库都是通用的,只是因为版本软件问题不一定能全部实现。
  • 本人也是逐渐学习过程,如果笔记和课后习题答案有什么问题可以评论交流。
  • 本文中,我将每一章的大体笔记范围写在章节内,同时在目录章节后面标注章节习题答案,请注意使用。(可以先做着试试在参考,同时有问题可以评论哦)

第 1 章 绪论

1.1 数据库系统概述

1.2 数据模型

1.3 数据库系统的结构

1.4 数据库系统的组成

第 1 章习题答案

第 2 章 关系数据库

2.1 关系数据结构及形式化定义

2.2 关系操作

2.3 关系的完整性

2.4 关系代数

2.5 关系演算(本章节不要求学习)

第 2 章习题答案

第 3 章 关系数据库标准语言SQL

3.1 SQL概述

3.2 学生—课程数据库

3.3 数据定义

3.4 数据查询

3.5 数据更新

3.6 空值的处理

3.7 视图

第 3 章习题答案

第 4 章 数据库安全性

4.1 数据库安全性概述

4.2 数据库安全性控制

4.3 视图机制

4.5 数据加密

4.6 其他安全性保护

第 4 章习题答案

第 5 章 数据库完整性

5.1 实体完整性

5.2 参照完整性

5.3 用户定义完整性

5.4 完整性约束命名字句

5.5 域中的完整性限制(本章节不要求学习)

5.5 断言

5.7 触发器

第 5 章习题答案

第 6 章 关系数据理论

6.1 问题的提出

6.2 规范化

6.3数据依赖的公理系统

6.4 模式的分解(本章节不要求学习)

第 6 章习题答案

第 7 章 数据库设计

7.1 数据库设计概述

7.2 需求分析

7.3 概念结构设计

7.4 逻辑结构设计

7.5 物理结构设计

7.6 数据库的实验和维护

第 7 章习题答案

第 7 章之后的章节,理论性较弱,更多的在于实战方面,还有就是相关性强的方面,有普及知识的,也有真正进入实战的,后续章节属于拓展性,学校教学要求也不高,更多自学,后续章节我将会把 8—11 章节的课后习题答案整理。

有需要的同学可以评论回复,我将会在前面整理完后更新。

以上是关于习题答案(1~10)的主要内容,如果未能解决你的问题,请参考以下文章

最详细数据结构(C语言版 第2版)课后习题答案全集 严蔚敏 等 编著

专升本计算机最新甘肃省专升本考试C语言部分复习题带答案

专升本计算机最新甘肃省专升本考试C语言部分复习题带答案

数据结构(C语言版 第2版严蔚敏版)完整课后习题答案汇总

新书上市 | C 语言经典教材配套“习题解答”,原书累计印数 10 万 +

c语言程序设计第二版宁爱军编课后习题答案