admin管理员组

文章数量:1530071

第二章.

1.第一个程序及其运行结果:

#include<stdio.h>
其目的就是为了引入头文件,例如输入和输出 ,printf()。大多数代码前边都需要先打上此指令。

main()函数
int main(void);可把它看做是必需物,有了它,才能开始下边的代码。

注释
/* */或者// 其中,前者可以分为多行,而后者只能一行,但是后者可以放在本行的最前方或者最后方。

花括号、函数体和块
{

}
花括号代表函数体的开始和结束,一定不能省略。块(没怎么讲)
声明
例如,int num;
然后赋值 num=1;
需要先声明,相当于建立一个房间,然后赋值,相当于入住的人。
printf()函数
较为简单,和Python中的print()相似,在此不做说明。
return语句
最好每次函数体结束后,在末尾码上 return 0;算是强制规定,如果不写的话,有时会返回0,和printf()值有冲突,容易造成迷惑。
2.第二个程序及其运行结果


注意这里的声明
int feet,fathoms;

int feet;
int fathoms;
等价
3.多个函数
本程序主要演示了如何自己定义函数并且加入到代码中运行


疑问:什么是 “ANSI/ISO C函数原型“ ?

第三章.

第一个程序,示例浮点数的应用:


该程序运行结果:

在printf()中用%f来处理浮点数,%.2f中的.2说明保留两位小数。
scanf()函数用于读取输入的值,%f表示scanf()要读取输入的浮点数。&weight表示把输入的值赋值给名为weight的变量。scanf()函数利用&符号找到weight变量的地点。
int类型
1.声明int变量:
先写上int。再写变量名,最后再加上一个分号。要声明多个变量,可以单独声明每个变量,也可以在int后面列出来多个变量名,变量名之间用逗号隔开。例如:
要想声明erns、hogs、cows、goats。可以如下
int erns;
int hogs;
int cows;
intgoats;
或者 int erns,hogs,cows,goats;
2.初始化变量:
初始化变量就是给变量赋一个初始值。
1.可以直接在声明中完成。例如:int hogs=21;
但有一点很糟糕,如:int dogs,cats=23; 很容易让人误以为dogs和cats都被赋值23,但其实只有cats被赋值,dogs并未被赋值,只是被声明了而已。
2.声明之后,正常赋值。如:hogs=21;
3.声明过后,通过scanf()函数赋值。如:scanf("%f",&hogs);
3.显示进制数
以十进制显示数,用%d;以八进制显示数,使用%o;以十六进制显示数,使用%x。另外,要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。如下图所示:

运行结果如下图

使用字符:char类型

char类型用于储存字符(如字母或标点符号。),但是从技术层面看,char是整数类型。因为char类型实际上储存的是整数而不是字符。多使用ASCII码。c语言把一个字节定义为char类型占用的位(bit)数。
1.声明char类型变量
char类型变量的声明方式与其他类型的相同。例如:
char response;
char itable,latan;
以上声明创建了3个char类型的变量。
2.字符常量和初始化
如果要把一个字符常量初始化为A,可如下:
char grade=‘A’;
其中,单引号必不可少。在c语言中,被单引号括起来的单个字符被称为字符常量,编译器一发现’A’,就会将其转换成相应的代码值。
下面的一些例子:
char brod; //声明一个char类型变量
brod=‘T’; //为其赋值,正确
brod=T; //此时T是一个变量,错误
brod=“T”; //此时“T”是一个字符串,错误
实际上也可以通过数字来赋值,例如
char grade=65; //最好不要这么做
若char grade=‘DIFG’;即把4个8位ASCII码值储存在32位的存储单元中,只有最后八位有效。故给grade的赋值为‘G。
3.非打印字符
单引号只适用于字符、数字和标点符号,而有些ASCII字符打印不出来。例如一些代表性为的字符(如,退格、换行、终端响铃或蜂鸣)
现有三种方法表示这些字符。
第一种:即先前提到过的用ASCII码来表示。例如,蜂鸣字符的ASCII码值为7,故可这样:char beep=7;
第二种方法:使用特殊符号序列表示。这种特殊符号称为转义序列。但是把转义序列赋给字符变量时,必须用单引号把转义序列括起来,如:char nerf=‘\n’;
常用转义序列如下表:

4.打印字符
%c表示输出字符,%d表示输出数字

例:
运行结果如下:
Plese enter a character.
C
The code for C is 67.
解释:&表示把输入的字符赋给变量ch。接着,printf()函数打印ch的值两次,第一次打印一个字符(对应代码中的%c),第二次打印一个十进制整数值(对应代码中的%d)。
_Bool类型
即逻辑值true和false

float、double和long double

计数法如下
指数记数法实际上是科学记数法在计算机上的写法,e后边的数字代表10的指数。
标准规定,float类型必须至少能表示6位有效数字,指float类型必须至少能表示六位有效数字。另一种浮点类型是double类型,必须至少能表示10位有效数字。
1.声明浮点型变量
和整数型一样,如
float noah,jonah;
double trouble;
float noach=6.63e-34;
long double gnp;
2.浮点型常量
多事,有符号的数字(包括小数点),后面紧跟e或E,最后一个有符号数表示10的指数。
3.打印浮点值
例:float aboat=32000.0;
double abet=2.14e9;
long double dip=5.32e-5;

printf(“%f can be written %e\n ”,aboat,aboat);
printf(“And it is %a in hexadecimal,powers of 2 notation\n”,aboat);##
printf("%f can be written %e\n",abet,abet);
printf("%Lf can be written %Le\n",dip,dip)

运行之后分别如下:32000.000000 3.200000e+04
0x1.f4p
2140000000.000000 2.140000e+09
0.000053 5.320000e-0
用 %f打印十进制记数法的float和double类型浮点数,用%e打印指数记数法的浮点数,如果系统支持十六进制格式的浮点数,可用a和A分别替代e和E。打印long double类型要使用%Lf、%Le和%La。

第四章

前导程序



该代码有以下新特性
用数组储存字符串。在该程序中,用户输入的名被储存在数组中,该数组占用内存中40个连续的字节,每个字节储存一个字符值。
使用%s转换说明来处理字符串的输入和输出。注意,在scanf()中,难么没有&前缀,而weight有。
用c预处理器把字符常量DENSITY定义为62.4.
用c函数strlen()获取字符串的长度。
字符串
没有专门用于储存字符串的变量类型,字符串都被储存在char类型的数组中。数组由连续的储存单元组成,字符串中的字符被储存在相邻的存储单元中,每个单元储存一个字符。
数组的末尾位置的字符\n为空字符了,用来标记字符串的结束。是非打印字符。ASCII码值是0.字符串一定以空字符结束,故数组的容量必须必带存储字符串中的字符数多1.例如40个存储单元,只能储存39个字符,剩下一个字节留给空字符。
数组
可以把数组看成一行连续的多个存储单元。可通过以下声明创建一个包含40个存储单元(或元素)的数组,每个单元储存一个char类型的值;
char name[40];
name后边的方括号表明这是一个数组,方括号中的40表明该数组中的元素数量。char表明每个元素的类型。
如何利用字符串代码距离
#include<stdio.h>
#define PRAISE “You are an extraordinary being.”
int main(void)
{
char name[40];

 printf("What is your name?")
 sacnf("%s",name);
 printf("Hello,%s.%s\n",name,PRAISE);
 
 return  0;

}
输出如下:
What is your name?Angela Plains
Hello,Angeia.You are an extraordinary being.
其中%s表示要在此处输入一个字符串。
另外,我们不需要亲自把空字符放入字符串末尾,scanf()在读取输入时就已经完成这项工作。也不用在PRAISE末尾添加空字符,暂时可理解为双引号内的为字符串,编译器自动在末尾添加空字符。
注意,scanf()只读取了Angela Plains中的Angela,它在遇到第一个空白(空格 制表符 或者换行符)时就不再读取输入。因此,scanf()智慧读取字符串中的一个单词,而不是一整句。
strlen()函数
由于sizeof运算符,以字节为单位给出对象的大小,sstrlen()函数给出字符串中的字符长度。而一个字节储存一个字符,故人们会认为流量中方法应用于字符串得到的结果相同,但事实并非如此。如下:
#include<stdio.h>
#include<string,h>
#define PRAISE“You are an extraordinary being.”
intmain(void)
{
char name[40];
printf(“What is your name?”);
scanf("%s",name);
printf(“Your name of %zd letters occupies %zd memory cells.\n”,
strlen(name),sizeof name);
printf(“The phrase of praise has %zd letters”,
strlen(PRAISE));
printf(“and occupies %zd memory cells.\n”,sizeof PRAISE);
return 0
}
运行结果:
What is your name?Serendipity Chance
Hello,Serendipity.You are an extraordinary being.
Your name of 11 letters occupies 40 memory cells.
The phrase of praise has 31 letters and occupies 32 momory cells.
解释:string.h头文件包含多个于字符串相关的函数原型,包括strlen()。c语言中将函数库中相关的函数归为一类,并为每类函数提供一个头文件。例如,printf()和scanf()函数都隶属于标准输入和输出函数,使用stdio.h头文件。
如何处理很长的printf()语句?
1.在参数之间断为两行,但不要在双引号中的字符串中间断开。
2.使用printf()语句打印一行内容,只在第二行printf()语句中使用换行符\n。

sizeof运算符报告,name数组由40个储存单元,但是只有前11个单元用来储存Serendipity,所以strlen()得出的结果是11,name数组的地12个单元储存空字符,strlen()并未将其计入。strlen()统计的字符数包括空格和标点符号。
常量和预处理器
例如pi=3.1415就是常量。
如何创建常量?
第一种方法就是声明一个变量,然后将该比阿娘设置为所需的常量。可以如下:
float taxrate;
taxrate=0.015;
第二种方法就是使用预处理器:
#define TAXRATE 0.015
contest限定符
contest int MONTHS=12;//MONTHS在程序中不可修改,值为12.

第五章

循环
程序示例如下:

输出结果如下:

while循环的原理。当程序第一次到达while循环时,会检查圆括号中的条件是否为真。若为真,程序进入块中继续执行。若为假,转到紧跟while循环后面的第一个语句。
基本运算符

=、+、-、*、/。没什么好说的。
其他运算符
sizeof运算符和size_t类型
由上一节已经知道,sizeof运算符以字节为单位返回运算对象的大小
求模运算符%
用于整数运算,给出其左侧整数除以右侧整数的玉树。与python中的相同,不做过多解释。不能用于浮点数。
递增运算符++
++可以出现在其作用的变量名的前边,是前缀模式。也可以出现在其作用的变量名的后边,是后缀模式。区别,例如a_post=a++; //后缀:使用a的值之后,递增a。b_pre=++b;//前缀,使用b的值之前,递增b。
递减运算符- -
同样有前缀和后缀两种模式,。
优先级
x
y++相当于(x)
(y++)

由于周四才拿到教材,还余3节未学完,下周补上。

本文标签: 学习笔记前五