the c programming language
LiuJingjunSelfImp
真正的成功容不得半点的投机取巧
展开
-
练习1.8
编写一个统计空格、制表符、换行符的程序 代码:#include void countBlank(FILE *fin);int main(int argc, char *argv[]){ countBlank(stdin); countBlank(fopen("main.c", "r")); return 0;}void countBlank(原创 2013-06-19 03:52:41 · 443 阅读 · 0 评论 -
练习1.20
编写程序,将输入中的制表符替换成适当数目的空格,使空格充满到下一个下一个制表位终止的地方。假设制表符的终止位是固定的, 比如每隔n列就会出现一个制表符终止位。n应该作为变量还是符号常量呢? #include #define TABINC 8int main(int argc, char *argv[]){ int c, nb, nt, pos; nb = 0;原创 2013-06-21 14:33:06 · 518 阅读 · 0 评论 -
练习2.1(1)
编写程序确定signed和unsigned限定的char、short、int、long的取值范围。注:这篇文章中只使用打印标准头文件中预定义的值来确定。 代码: #include #include #include void display(void);int main(int argc, char *argv[]){ display(); retur原创 2013-06-21 15:27:22 · 548 阅读 · 0 评论 -
练习2.5
编写函数any(s1,s2),将字符串s2中任一字符在s1中第一次出现的位置作为返回结果。如果s1中不包含s2中的字符,则返回-1 。 代码:#include #include #define MAXLINE 1000int any(const char *s1, const char *s2);int main(int argc, char *argv[]){原创 2013-06-22 02:36:04 · 472 阅读 · 0 评论 -
练习2.3
编程:将十六进制数字组成的字符串(包含可选的0X或0x)转换成与之等价的整型值。 说明:这里的十六进制数字组成字符串,我们把它当作是十六进制数的真值;转换得到10进制的真值。 程序思路:就是”多项式替换法“。 #include #include int htoi(char *s);int main(int argc, char *argv[]){ cha原创 2013-06-22 01:24:43 · 572 阅读 · 0 评论 -
练习2.4
编写函数squeeze(s1,s2),将字符串s1中任何与s2中字符匹配的字符都删掉。 #include #define MAXLINE 1000char *squeeze(char *s1, const char *s2);_Bool inStr(char c, char *s);int main(int argc, char *argv[]){ char s1[MA原创 2013-06-22 02:29:12 · 530 阅读 · 0 评论 -
练习2.6
编写一个函数setbits(x, p, n, y),该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。 代码: #include #include int main(int argc, char *argv[]){ int c = 0; while ((c = fg原创 2013-06-22 15:25:47 · 544 阅读 · 0 评论 -
练习3.1
折半查找 代码: #include #include #include #define ARRAY_LEN 20int binsearch(int x, int v[], size_t b, size_t e);void sort(int v[], size_t b, size_t e);int main(int argc, char *argv[原创 2013-06-22 16:04:44 · 477 阅读 · 0 评论 -
练习4.1
编写函数strrindex(s,t),返回t在s中最左边最早出现的位置,若s中没有t的任意一个字符,则返回-1。 代码: #include #include #define MAXLINE 1000int strrindex(const char *s, const char *t);int main(int argc, char *argv[]){ char s原创 2013-06-23 01:18:22 · 657 阅读 · 0 评论 -
练习4.2
编程:将字符串转换成对应的浮点数。 代码: #include #include #include #include double atof(const char *s);int main(int argc, char *argv[]){ char s[30] = " 1234.567E-2 "; printf("%f\n", atof(s));原创 2013-06-23 02:47:35 · 681 阅读 · 0 评论 -
练习3.5
编写函数itob(n,s,b),将整数n转换成以b为底的数,并将转换结果以字符串形式保存在字符串中。 代码: #include #include #include void itob(int n, char s[], short b);void reverse(char *s);int main(int argc, char *argv[]){ int原创 2013-06-23 01:16:04 · 638 阅读 · 0 评论 -
练习3.3
#include #include #define MAX_LENGTH 1000void expand(char *s1, char *s2);int main(int argc, char *argv[]){ char s1[MAX_LENGTH] = "a-f abcde 0-9"; char s2[MAX_LENGTH] = ""; expand(s原创 2013-06-22 23:04:26 · 519 阅读 · 0 评论 -
练习3.2
编一个函数escape(s,t),将字符串t复制到s中,并在复制过程中将换行符、制表符转换成\n\t可见字符。再编写一个具有相反功能的函数。 代码:#include #include void escape(char *s, const char *t);void rescape(char *s, const char *t);int main(int argc, cha原创 2013-06-22 21:59:46 · 565 阅读 · 0 评论 -
练习3.4
编程:编写itoa(int a, char s[])函数,将数字转换成字符串并保存在s中。 代码:#include #include #include #include #include void itoa(int n, char s[]);void reverse(char *s);void itoa1(int n, char s[]);int main(int a原创 2013-06-22 23:54:33 · 606 阅读 · 0 评论 -
练习1.19
编写函数reverse(s),将字符串s中的字符顺序颠倒过来。使用给函数编一个一个程序,每次颠倒一个输入行的顺序。 代码: #include #include #include #define MAXLINE 1024char *reverse(char *s);int main(int argc, char *argv[]){ char line[MAX原创 2013-06-21 13:59:17 · 476 阅读 · 0 评论 -
练习1.18
编写一个程序:删除每个输入行末尾的空格和制表符,并删除完全是空格的行。 #include #include #include #define MAXLINE 1024char *delStrLastBlank(char *line); //删除这个行字符串末尾的空格和制表符_Bool isAllSpace(char *line); //判断这个行字符串是不是全原创 2013-06-21 13:40:45 · 524 阅读 · 0 评论 -
练习1.11
编程: 写一个单词计数程序额。。。单词的定义。。这里按书上说的。。。采用简单的定义————即字母和数字组成的一个序列!!代码: #include #include #include #define bool _Bool#define true 1#define false 0#define MAXNAME 30size_t wordCount(FILE *fin)原创 2013-06-19 05:12:52 · 473 阅读 · 0 评论 -
闲话 这个目录将会把Brian的The c ..里面的全部课后题答案记录
不论简易。。。都写出源代码 。。。 欢迎各位指点 。。。。感觉今天晚上写不完了。。。一个浮点数存储模式和极限值问题弄了好久。。。也没有弄明白IEEE754在C中的实现。。。 。。。写这些程序没有别的什么意思。。只是想让自己再熟悉一遍C语言,并且希望浏览到的朋友能指出程序(代码)缺点,真心谢谢能批评。。。。。还有就是若能帮到一些正开始学习C语言的朋友,那更加是极好滴:-)。原创 2013-06-19 01:03:15 · 726 阅读 · 0 评论 -
练习1.9
编程:将输入复制到输出,并将其中连续的多个空格替换成一个空格。ps:题目中写上概还是不好(*^__^*) 代码: #include #include #define bool _Bool#define true 1#define false 0/**C99中没有bool类型,但是有_Bool类型,取值0时为false,非0时为true*/void co原创 2013-06-19 04:16:05 · 455 阅读 · 0 评论 -
练习1.4
将华氏温度转换成摄氏温度 直接代码: #include void temperatureConvert(double b, double e);int main(int argc, char *argv[]){ temperatureConvert(-10.0, 20.0); return 0;}void temperatureConvert原创 2013-06-19 03:29:18 · 429 阅读 · 0 评论 -
练习1.1
汗。。hello world 就作为开始吧 //hello.cpp#include int main(int argc, char *argv[]){ printf("Hello World!\n"); return 0;}有以下几个疑问:1、对于c语言编程,c很强大,用于各行各业,编译器、嵌入式、操作系统、游戏等。对于每一个行业,甚至与同一个行原创 2013-06-19 01:43:43 · 494 阅读 · 0 评论 -
练习1.5
逆序打印温度转换表 从300度到0度。。。。这个。。。so simple。。写这些有木有意义。。。还是写下去吧。。。 代码: #include void temperatureConvert(double b, double e);int main(int argc, char *argv[]){ temperatureConvert(300.0, 0.0);原创 2013-06-19 03:40:51 · 418 阅读 · 0 评论 -
练习1.10
编程: 将输入复制到输出,并将中的制表符替换为\t,回退符替换为\b,反斜杠替换为\\,这样可以将制表符和回退符以可见 的方式显示出来。 !!!???回退符号???!!!???没有见到过在文本文件中还存在回退符号的情况,我只能在一个字符串中以char c = '/x8' 的方式表示出一个回退符号。所以在下面的程序中,实际上没有处理到回退符号,但是不影响程序本身的思路!。。原创 2013-06-19 04:56:42 · 636 阅读 · 0 评论 -
练习1.12
编程: 以每行一个单词的形式打印其输入 没多的说,直接上代码: #include #include #include #define bool _Bool#define true 1#define false 0void copyIO(FILE *fin, FILE *fout);int main(int argc, char *argv[]){ co原创 2013-06-19 05:49:35 · 499 阅读 · 0 评论 -
练习1.3
温度转换,并且在顶部打印一个标题。。好吧,这个标题就叫 : temperature convert考虑几个问题:1、double能表示的最值为多少?double能精确到多少位?float 和 long double 呢?2、浮点数之间比较相等有什么特殊的地方吗?3、字面值缺省解释为什么类型?(目标机为32bits) ps:关于浮点数的讨论有点多,今天晚上的任务是写完>上原创 2013-06-19 03:15:57 · 524 阅读 · 0 评论 -
练习1.13
编程:打印输入中单词长度的水平方向的直方图。 代码: #include #include #define MAXLEN 30#define WORD_TABLE_LEN 30void printWordTable(FILE *fin, FILE *fout);int main(int argc, char *argv[]){ printWordTable(f原创 2013-06-19 15:00:20 · 586 阅读 · 0 评论 -
练习1.16
编程:从文本中一行一行的字符,读完之后,将最长的行打印出来。要求能打印任意长度的行。 注:将最长行保存案后打印任意长度的输入行是不可能的!!!因为在读取完整个文本之后,最长的输入行是保存在一个字符数组中的,而字符数组是有长度的,他不可能无限长,这里作者的意思我不明白。这个程序一行最多能够读取1023个字符,如果超过1023还没有遇到回车('\n')或者字符串结束符('\0'),那么下面原创 2013-06-20 15:35:09 · 601 阅读 · 0 评论 -
练习1.13(2)
编写一个程序:打印输入单词的直方图,垂直方向的直方图。例如:长度为1、2、3、4、5、6、7的单词数分别为:1、2、4、4、7、0、5则输出为:1*2**3****4****5*******7*****PS:你们用的画程序流程图的软件是什么?我用visio之后,画出的图片不能上传。。。。。程序思路:1、得到各种长度的单词在输入中出现的次数(称为频度)原创 2013-06-20 13:52:40 · 506 阅读 · 0 评论 -
练习1.17
编写一个程序,打印长度大于80的所有输入行。 这个很简单了,流程图如下:代码如下: #include #include #include #define MAXLINE 1024int getline(FILE *fin, char *line, size_t n);int main(int argc, char argv[]){ char curr原创 2013-06-21 13:06:50 · 578 阅读 · 0 评论