c语言学习
以《The C Program Language》第二版为例,介绍ANSI C语言知识。
qiu_shaofeng
这个作者很懒,什么都没留下…
展开
-
The C Programming Language 学习(16)——struct 结构体
结构体是自定义的数据类型,需要先声明结构体类型(模板),然后才能申明结构体变量。下面给出一种常用的结构体模板声明方式:struct book { // struct 是关键字 book 自定义的结构体名 char name[MAXL]; // 结构体成员 double price; } ; //结构体模板声明结束struct book lib, *plib, library[...原创 2020-07-01 18:01:00 · 164 阅读 · 0 评论 -
The C Programming Language 学习(15)——命令行参数main(int argc,char *argv[ ])
main 函数原型 int main(int argc, char *argv[ ]); 当main 函数被调用时,命令行传递这两个参数。argc (参数个数,argument accout),代表命令行输入的字符串个数;argv(参数向量,argument vector)是字符指针数组,保存输入的字符串参数。第一个字符串argv[ 0 ]是这个程序的文件名。程序echo,打印除了文件名外的参数。#include<stdio.h>int main(int argc,char *ar.原创 2020-06-15 00:23:19 · 198 阅读 · 0 评论 -
The C Programming Language 学习(14)——字符指针数组
在程序设计中,经常遇到多行字符串,如何表示他们呢?直观的办法,是定义一个二维字符数组:char linechar[MAXLINE][MAXLEN];//MAXLINE个字符串,每个字符串长度最大为MAXLEN用固定长度的数组表示,直观但不灵活;每行字符串的长度一般不相同,更适合用字符指针来表示:char * lineptr[MAXLINE]; // 长度为MAXLINE的字符指针,每个指针指向一个字符串(其长度在输入时候确定)K&R教材以多行文本的输入和输出阐明字符指针数组的用法,.原创 2020-06-13 23:47:51 · 202 阅读 · 0 评论 -
The C Programming Language 学习(13)——指针数组的初始化
指针数组(pointer arrays),又称为指向指针的指针(pointer to pointer)。例如字符指针数组定义为char *name[ 4 ]; 或者char** name;指针数组存储的是指针,使用前必须初始化,有下面两种初始化方式。...原创 2020-06-11 20:55:42 · 427 阅读 · 0 评论 -
The C Programming Language 学习(12)——指针与数组 strcat
指针是保存地址的变量,使用指针可以灵活的处理数组和字符串。例如:char ch[10]; //定义一个字符数组char *str; //定义字符指针str=ch; //指针初始化,ch为数组的首地址地址表现为一个整数,但是地址和整数之间不能互相转换。如果定义int a; int *p;那么 p=a;p=10;a=p;这样的赋值都是错误的;可以用取地址操作符&,操作数必须是变量,不能是表达式、常数,例如p=&a;指针可以进行算术运算,使用++运算符方便访问数组。*str++原创 2020-06-10 23:45:45 · 187 阅读 · 0 评论 -
The C Programming Language 学习(11)——静态局部变量
局部变量通常定义在程序块(函数)的开头,其作用域在程序块(函数)内部,程序块外部不能访问局部变量。局部变量默认的存储类型是auto,它在进入声明该变量的程序块时被建立,在该程序块活动时存在,退出该程序块时撤销。函数内的局部变量可以申明为static类型,在退出该函数时,静态局部变量仍然存在,可以保存该变量的值用于下一次函数调用;注意静态变量只初始化一次。下面通过getop()函数的例子来说明。编写函数int getop(char s[ ]) ,实现四则运算字符串的读取,字符读取使用getchar()函数原创 2020-06-04 21:01:20 · 321 阅读 · 0 评论 -
The C Programming Language 学习(10)——字符串转换为浮点数atof()
许多数学函数使用double类型,下面以字符串转换为浮点数的函数atof_s()为例来说明。该函数能够处理正负尾数和正负指数格式的输入字符串。#include<stdio.h>#include<ctype.h>#include<math.h>#define MAXLINE 100int getline(char s[],int lim);//输入一行 int main() { double sum=0; double atof_s(char s[])原创 2020-06-02 23:12:43 · 170 阅读 · 0 评论 -
The C Programming Language 学习(9)——浮点数的精度和输出
计算机中浮点数由尾数乘以2的整数次幂得到,用于近似表示小数;分为单精度(float)和双精度(double)。float类型尾数是23位,精度小数点后6-7位;double类型尾数是52位,精度小数点后15-16位。可以用分数1/3来测试float和double的精度;printf格式输出时,默认6位小数(四舍五入),使用“%.nf“指定输出位数,观察输出精度。#include<stdio.h>int main(){ float f=0.24; double d=0.24; /原创 2020-06-01 23:10:15 · 215 阅读 · 0 评论 -
The C Programming Language 学习(8)——整型变量的范围
头文件<limits.h>定义了整型变量范围的符号常量,例如UINT_MAX、INT_MIN、INT_MAX等等。可以利用计算机中整数的存储规则来计算,我们以一个字节的char型为例:无符号的数达到最大值1111 1111后再加一,溢出,因而结果为0;有符号的数达到最大值0111 1111后再加一,结果为1000 0000,即最小值。#include<stdio.h>#include<limits.h>int main() { unsigned char uc原创 2020-05-30 18:07:55 · 604 阅读 · 0 评论 -
The C Programming Language 学习(7)——空格替换TAB
Exercise 1-20. Write a program detab thant replaces tabs in int input with the proper number of blanks to space to the next tab stop.徐宝文,李志《c程序设计语言》翻译是“编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方”。制表符是将列分隔为固定的位宽(例如8),按下TAB键则光标跳到8的整数倍位置,即光标只可能出现在0,.原创 2020-05-29 18:49:40 · 391 阅读 · 0 评论 -
The C Programming Language 学习(6)——字符数组
C语言常用字符数组(character arrays)来表示字符串,在存储字符串时,系统会添加'\0'作为结束符。例如字符串"Hello\n",在数组中存储如下图所示,其中'\0'为空字符(NULL),它的值为0。编写一个程序,读入一行字符并打印。考虑用字符数组line[MAXLINE]接收输入的字符串,遇到'\n'或EOF停止;由于数组大小的限制,当接收(MAXLINE-1)个字符后,也需要停止。为了接收任意长度的字符串,可以在主函数中判断接收的状态,当一行字符串超长时,进行循环接收。#in原创 2020-05-28 19:51:05 · 399 阅读 · 0 评论 -
The C Programming Language 学习(5)——函数
C语言程序程序设计中经常用到函数(function),它封装了如何实施任务的细节,使用者只需要了解函数用来做什么,例如scanf、printf、getchar。这些是C标准库提供的函数,用户也可以编写自己的函数,函数定义的语法如下:return-type function-name (parameter declarations, if any) { declarations statements}函数定义圆括号里的参数,称为形式参数(parameter / f...原创 2020-05-27 21:54:58 · 297 阅读 · 0 评论 -
The C Programming Language 学习(4)——单词统计直方图
第一章练习1-13,输入一段文字,要求打印输入单词长度的直方图。定义MAXL为单词最大长度,MAXH为单词的最大出现次数;可以用数组nlen[MAXL+1]记录每种长度单词出现的次数,二维数组hist[MAXH][MAXL+1]记录直方图。这里判断单词,采用了书中的弱规则,即空白符(空格、tab、回车)作为单词的分隔,其他符号都当作单词。完成的程序如下:#include<stdio.h>#define MAXH 15 //单词出现的最大次数 #define MAXL 12 //原创 2020-05-26 22:29:18 · 193 阅读 · 0 评论 -
The C Programming Language 学习(3)——字符输入输出
编写一个程序,复制输入的字符,直到输入结束;并统计输入字符的个数。这个程序用到getchar()和putchar()函数。getchar每次从键盘读入一个字符(按下回车后开始读),返回读入字符的值;putchar是在屏幕上打印一个字符。#include<stdio.h>int main() { int c; double nc=0; /*当遇到结束标志EOF时,跳出while循环 */ while((c=getchar())!=EOF) { putchar(c);//输出字符原创 2020-05-25 23:07:38 · 335 阅读 · 0 评论 -
The C Programming Language 学习(2)——温度转换
编写一个程序,打印输出华氏度(Fahrenheit)到摄氏度(Celsius)的转换表。华氏度从0到,200,间隔为20;每个温度输出为一行。转换公式为:#include<stdio.h>main() { int fahr,celsius; //声明整型变量 int lower,upper,step; lower=0; //赋值 upper=200; step=20; fahr=lower; while(fahr<=upper) {原创 2020-05-24 18:49:38 · 215 阅读 · 0 评论 -
The C Programming Language 学习(1)——Hello World
这套学习笔记以K&R所著的The C Programming Language (2nd Ed.)为依据,例程使用Dev C++ 5.11在Win7平台上调试。这本教科书薄薄的页,内容丰富,叙述简洁优美,涵盖了ANSI C的各个方面,被亚马逊网站誉为计算机科学领域的圣经,影响了一代又一代的程序员。作为从事程序设计课程教学多年的教师,推荐这本教材,既适合初学者,也适用于有一定经验的学习者,因此在这里分享学习的笔记和体会。第一章是C语言快速教程,...原创 2020-05-24 00:05:34 · 366 阅读 · 0 评论