c程序设计笔记2018.10.16

转义字符详解
\a
\a是 转义字符 007,响铃符 BEL。
printf("%d “,’\a’); 输出 7
printf(”%c “,’\a’); 发出一声“嘀”
printf(”\a"); 发出一声“嘀”
printf("\007"); 发出一声“嘀”

\b
\b = 退格键(backspace)printf(“%d\b, x);
先输出x的当前值,然后再将其消掉,就像我们打字时按退格键一样。

\f
\f的意思是:换页。将当前位置移到下一页的开头。

\n
换行键

\r
\r = 回车键(carrige return)

\t
\t 的意思是 :水平制表符。将当前位置移到下一个tab位置。

\v
垂直制表符

\
打印\


打印’

\“
打印“

\ddd(\ooo ??)
\xhh
用于用八进制或十六进制表示ASCII码


数据类型:基本类型、指针类型、构造类型、空类型。

基本类型
	整型
		int 、short int、long int、unsigned int、unsigned short int、unsigned long int
	实型(浮点型)
		单精度float、双精度型double、长双精度型long double
	字符型
		char、unsigned char
指针类型(*)
构造类型
	数组、枚举(enum)、结构体(struct)、共用体(union)
空类型(void)

浮点数由整数部分,小数点和小数部分组成,小数点不可缺,整数部分和小数部分可省略其一

指数形式的实数表示方法 aEn 缺一不可,n为十进制整数

C语言中用单引号括起来的单个字符称作字符常量

双引号括起来的零个一个或多个字符称作字符串常量

在程序中,经常通过变量名找到地址,对地址单元进行写入或读取。

输入数据遇以下情况时,认为该数据结束

	回车、跳格、空格
	按指定的宽度结束,%5d只取5列
	遇非法输入
			例如
			scanf("%d%c",&a,&b)
			135w
			135会对应a,w会对应b

变量说明语句(变量定义语句)

	存储类型  数据类型  变量名表

存储类型由存储类型定义符(相关保留字)表示,用于指定变量的存储区域和作用域。
数据类型用于指定每一变量所需的存储容量和数据的取值范围及精度。变量名表用,隔开

C允许字符变量参与数值运算,ASCII码中大小写字母相差32

const用于限定被定义的变量为恒值变量,只允许在初始化时赋值。

绝对值函数abs ,fabs ,labs分别用于求整数,浮点数,长整型数的绝对值。

exp返回以e为底,参数为幂的指数值。pow(x,y)返回x的y次幂

log(x)返回lnx log10()返回以10为底参数的对数值

rand srand

putchar()字符数出到标准设备
putchar(67)=putchar(‘C’)=putchar(’\x43’)=C

getchar()字符输入函数,只接受第一个字符

运算符优先级从高到低

初等运算符([]、()、->)
单目运算符
算数运算符
关系运算符
逻辑运算符(不包括逻辑非运算符!)
赋值运算符
逗号运算符

分析 k+=k-=k*k

k=5结果为-40

j=++i 先加一后赋值
j=-i++ -与++运算机相同,++右结合性,所以先i++然后-i赋给j

条件运算符和条件表达式简化if else结构

max=(a>b)?a:b


习题

已有

	int a,b;
	scanf("%d,%d",&a,&b);

若要求a=11,b=22,则正确的数据输入是___________

11,22

若定义float x=3.5,int z=8,则表达式x+z%3/4等于多少?

解:
在运算符中/和%的优先级比+要高%优先级笔/高。另外,%只适用于int型。/运算符对于实型做除法运算,对于整型做取整运算。所以8%3/4=(8%3)/4=2/4取整数=0
所以答案为3,5

已知char a=’R’;则正确的赋值表达式是()。A)a=(a++)%4B)a+2=3 C)a+=256–D)a=’\078’


A是正确的,
B常量不能是赋值左值(a是变量,但是a + 2是常量)
C+=256字符型变量越界,另外字符常量不可以–
D‘\078’八进制表示方式,但是出现了8,如果a = 78就是正确的

若有定义:int b=7;float a=2.5, c=4.7;则下面的表达式 a+(int)(b/3*(int)(a+c)/2)%4 的值


1)括号永远优先级最高
2)无括号的默认优先级

  • / 运算优先级最高
    % 运算优先级次高
  • -运算优先级最低
    故a+c后取整

已知定义 int i=3 ,k。则语句k=(i–)+(i–)运行后求k

解k=6, i=1

若有定义:int x,y;,则表达式(x=2,y=5,x*2,y++,x+y)的值是

解 8 =2+6

注:
常量和表达式不能进行自增自减运算

若有定义Int b;则语句b=9/5+9%5;运行后,b的值为
5

若有定义int a,b=3;float x=3.5,y=2.5;(float)(a+b)/2+(int)x%(int)y的值为

(float)(a+b)/2=2.5 故 ans=3.5

double a=5.2; 则,a+=a-=(a=4)*(a=3)的结果是

ans=-12
a=3
a+=a-=9

若有定义:int x,y;则表达式(x=2,y=5,x++ ,x +y++ )的值是
表达式中 第一个x++若要输出则x等于2,第二个x+y++中的x等于3(这里x已经完成自增运算)而此时y++还取原来的值,即y等于5,所以x+y++的值为3+5等于8,根据逗号表达式的原则,整个式子的值为8,此后则x=3,y=6(这时y才完成自增运算)

以下程序段中,要将 a 的值的低 4 位取反,b 的值应取 unsigned char a=0x39,b; b= ; a=a^b;

ans=15

猜你喜欢

转载自blog.csdn.net/qq_43261873/article/details/83067498