- 博客(26)
- 收藏
- 关注
原创 第五章 循环和关系表达式
第五章 循环和关系表达式5.1 for循环//5.1 forloop.cpp#include<iostream>int main(){ using namespace std; int i; for(i = 0; i < 5; i++) cout << "C++ knows loops.\n"; cout << "C++ know...
2019-03-20 12:06:07 847 2
转载 Chapter 1 预备知识
Chapter 1 预备知识1.1 C++简介1.2 C++简史1.3 可移植性和标准2^8=2562^16=65,5362^32=4,294,967,296C++的三大法宝: C++继承了C 语言高效、 简洁、 快速和可移植性的传统。C++面向对象的特性带来了全新的编程方法,这种方法是为应付复杂程度不断提高的现代编程任务而设计的。C++的模板特性提供了另 种全新的编程方法----泛型...
2019-03-15 13:23:41 271
原创 第四章摘抄笔记The C Programming Lanuage
第四章 函数与程序结构函数可以把大的计算任务分解成若干个较小的任务。一个设计得当的函数可以把程序中不需要了解的具体操作细节隐藏起来,从而使整个程序结构更加清晰,并降低修改程序的难度。
2017-08-12 18:22:33 735
原创 练习 3-6 修改itoa函数,使得该函数可以接收三个参数。其中,第三个参数为最小字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度,在必要时应在所得结果的左边填充一定的空格。
修改itoa函数,使得该函数可以接收三个参数。其中,第三个参数为最小字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度,在必要时应在所得结果的左边填充一定的空格。
2017-08-08 22:16:00 684
原创 练习 3-5 编写函数 itob(n, s, b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中。例如,itob(n, s, 16)把整数n格式化成十六进制整数保存在s中。
编写函数 itob(n, s, b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中。例如,itob(n, s, 16)把整数n格式化成十六进制整数保存在s中。
2017-08-08 22:14:33 4497 4
原创 练习 3-4 在数的对二的补码表示中,我们编写的itoa函数不能处理最大的负数,即n等于-2^(字长-1)的情况。请解释其原因。修改该函数,使它在任何机器上运行时都能打印出正确的值。
在数的对二的补码表示中,我们编写的itoa函数不能处理最大的负数,即n等于-2^(字长-1)的情况。请解释其原因。修改该函数,使它在任何机器上运行时都能打印出正确的值。
2017-08-08 22:12:42 1786 1
原创 练习3-3 编写函数 expand(s1, s2),将字符串s1 中类似于a-z 一类的速记符号在字符串s2中扩展为等价的完整列表abc…xyz。该函数可以处理大小写字母和数字。
编写函数 expand(s1, s2),将字符串s1 中类似于a-z 一类的速记符号在字符串s2中扩展为等价的完整列表abc…xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。作为前导和尾随的-字符原样排印。
2017-08-08 22:10:54 3055
原创 练习 3-2 编写一个函数escape(s, t),将字符串t 复制到字符串s 中,并在复制过程中将换行符、制表符等不可见字符分别转换为\n、\t等相应的可见的转义字符序列。要求使用swich语句。
编写一个函数escape(s, t),将字符串t 复制到字符串s 中,并在复制过程中将换行符、制表符等不可见字符分别转换为\n、\t等相应的可见的转义字符序列。要求使用swich语句。再编写一个具有相反功能的函数,在复制过程中将转义字符序列转换为实际字符。
2017-08-08 22:08:54 2438
转载 练习 3-1 在上面有关折半查找的例子中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。
在上面有关折半查找的例子中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。比较两种版本函数的运行时间。
2017-08-08 22:06:11 2068
原创 练习2-10 重新编写将大写字母转换为小写字母的函数lower,并用条件表达式替代其中的if-else结构。
lower函数利用条件表达式替代其中的if-else结构,简写为下面的程序
2017-08-06 07:25:12 966
原创 练习 2-9 在求对二的补码时,表达式x &= (x – 1)可以删除x中最右边值为1 的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。
X与X-1的末尾肯定是不同的,一个是1,另一个是0,进行与运算之后为0,所以可以实现将x最末位置0。
2017-08-06 07:24:11 1165
原创 练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
这个题目呢,首先需要确定数据类型,在这里我选择的数据类型是unsigned类型,具体实现方法很简单,先得到unsigned类型数据的长度len,然后将x的后n位提取出来,左移len-n位得到end,然后将x右移三位得到top,最后将end和top进行或运算即可。为了方便显示结果,在这里我增加了一个显示将十进制数进行二进制显示的一个函数dtob()。通过程序可知unsigned类型数据为32位。#in
2017-08-06 07:23:09 1494
原创 练习 2-8 编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
这个题目呢,首先需要确定数据类型,在这里我选择的数据类型是unsigned类型,具体实现方法很简单,先得到unsigned类型数据的长度len,然后将x的后n位提取出来,左移len-n位得到end,然后将x右移三位得到top,最后将end和top进行或运算即可。为了方便显示结果,在这里我增加了一个显示将十进制数进行二进制显示的一个函数dtob()。通过程序可知unsigned类型数据为32位。#in
2017-08-05 20:19:24 562
原创 练习 2-7 编写一个函数 invert(x, p, n),该函数返回对x 执行下列操作后的结 果值:将x中从第p位开始的n个(二进制)位求反(即,1 变成0,0 变成1),x的其余各位保持不变。
#include<stdio.h>#include <stdlib.h>int invert(int x,int p,int n);void TenToTwo(int);//将十进制数换成二进制数示出int main() { int x, p, n; printf("invert(x, p, n)"); printf("please input x"); scan
2017-08-05 20:17:52 1512
原创 练习 2-6 编写一个函数 setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。
#include<stdio.h>#include <stdlib.h>int setbits(int x, int p, int n, int y);void TenToTwo(int);//将十进制数换成二进制数示出int main() { int x, p, n, y; printf("setbits(x, p, n, y)"); printf("please in
2017-08-05 20:16:35 1250
原创 练习 2-5 编写函数 any(s1, s2),将字符串s2中的任一字符在字符串s1中第一次出现的位置作为结果返回。如果s1中不包含s2中的字符,则返回-1。
“`include
2017-08-05 20:14:39 871
原创 练习 2-4 squeeze(s1, s2),将字符串s1 中任何与字符串s2 中字符匹配的字符都删除。
代码如下:#include<stdio.h>void squeeze(char s1[],char s2[]);int main(){ char s1[]="hello world"; char s2[]="hello"; squeeze(s1,s2); for(int i=0;s1[i]!='\0';++i){ putchar(s1[i]);
2017-08-05 20:13:14 990
原创 练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。
#include<stdio.h>#include<string.h>int htoi(char s[]);int main(){ char s[20]; printf("Please input a hexadecimal number\n"); char c; int i=0; while((c=getchar())!=EOF&&(c!=' ')&&(c
2017-08-05 20:06:22 3466
原创 练习 2-2 在不使用运算符&&或||的条件下编写一个与上面的for 循环语句等价的循环语句。
题目中“上面的for 循环语句”为:for (i=0; i<lim-1 && (c=getchar()) != '\n' && c != EOF; ++i)s[i] = c;简单的编写了一段程序:#include<stdio.h>int main(){ char s[100]; int lim=100; int state=1; int i=0; char
2017-08-05 20:04:07 626
原创 第二章摘抄笔记(二)The C Programming Lanuage
类型转换(当一个运算符的几个操作数类型不同时,就需要通过一些规则把它们转换为某种共同的类型)一般来说,自动转换是指把“比较窄的”操作数转换为“比较宽的”操作数,并且不丢失信息的转换。
2017-08-05 20:00:29 258
原创 第二章摘抄笔记(一)The C Programming Lanuage
第二章 类型、运算符和表达式变量和常量是程序处理的两种基本数据对象。 声明语句说明变量的名字及类型,也可以指定变量的初值。 运算符指定将要进行的操作。 表达式则把变量与常量组合起来生成新的值。 对象的类型决定该对象可取值的集合以及可以对该对象执行的操作。
2017-08-05 19:55:21 245
原创 练习 2-1 编写一个程序以确定分别由signed及unsigned 限定的char、short、int与long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现
方法一:打印标准头文件中的值(头文件limits.h定义了一些表示整型大小的常量)(如果在vc环境下查看的话,将光标放在相应的头文件处,右键选择打开相应的头文件即可,如下图所示)从头文件中可以直接看到各种类型数据的最大值和最小值,可以在程序中直接将相应的值输出即可: 程序如下:#include <stdio.h>#include <limits.h>int main(){printf("Pr
2017-08-05 17:36:02 3232
原创 练习题 第一章
练习 1-13 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。练习 1-22 编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置在输入行的第n 列之前的最后一个非空格之后。要保证程序能够智能地处理输入行很长以及在指定的列前没有空格或制表符时的情况。
2017-08-03 14:01:09 260
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人