pythonsocket怎么发送浮点型数据

Python016

pythonsocket怎么发送浮点型数据,第1张

通过数据传输发送。socket是python自带的包,是应用层与TCP或IP协议通信的中间软件抽象层,pythonsocket可以通过数据传输发送浮点型数据。浮点型数据分为浮点型常量和浮点型变量,浮点型常量,实型也称为浮点型,实型常量也称为实数或者浮点数。

整型常量和实型常量的区别:

1、整型常量

在C语言中,整型常量分为十进制整型常量、八进制整型常量和十六进制整型常量三种表示形式。

以上三种进制的常量可用于不同的场合。大多数场合中采用十进制常量,但当编写系统程序时,如表示地址等,常用八进制或十六进制常量。

一般情况下,编译程序会根据常量的数值分辨出常量是int还是long int类型。

2、实型常量

实型常量有两种表示形式:一种是十进制小数形式,另一种是指数形式。

整型常量和实型常量:

1、整型常量在C语言中,整型常量分为十进制整型常量、八进制整型常量和十六进制整型常量三种表示形式。以上三种进制的常量可用于不同的场合。

大多数场合中采用十进制常量,但当编写系统程序时,如表示地址等,常用八进制或十六进制常量。一般情况下,编译程序会根据常量的数值分辨出常量是int还是longint类型。

2、实型常量实型常量有两种表示形式:一种是十进制小数形式,另一种是指数形式。

规定是 char,short-&gtint-&gtunsigned-&gtlong-&gtdouble float-&gtdouble所以整型和实型数据比较就是 int转换成double然后进行比较。

他说的没错 这本说的确很好 我也在学习这半书

我这里有点笔记是高手们学习c语言留下的 我想也许对你会有用

C程序入门

第一讲 语言的分类

一。低级语言:计算机语言,采用二进制进行编程,用户难度大,机器易识别。

二。汇编语言:(低级语言)采用简单的英文字母进行编程,用户稍意识别,计算机不能使被识别,需翻译。

汇编程序:将汇编语言译成机器语言。

反汇编语言:将机器语言译成汇编语言。

三。高级语言∶采用近于自然语言进行编程,用户易编程,计算机不能识别,需翻译,速度慢。

解释程序:整句翻译;

编译程序:整个程序翻译;

二,C语言的特点

1,C语言是一门中级语言

低级语言:直接访问硬件

高级语言:自然语言移植性较好

2,C是一门结构化程序设计语言

有属性,循环性,选择性

3,C有丰富的数据类型和运算符

数据类型:数据在计算机内的表现形式

基本数据类型:整型 实型 字符型

int float char

控制符:

%d 整型

%f 实型

%c 字符型

4,C语言的结束符为分号大括号为一个语句或函数范围

5,C语言的构成

#include<文件名。h>

#define 宏名 字符

main 主函数

①预处理(以#开头) (不属于C语言)

②书写主函数(。C)

一个C语言程序是与主函数构成,主函数有且只有一个,main。

可以有或没有子函数

执行程序

从子函数开始从左到右,从上倒下。

补充:

数制

一。含义

由一组数组成且按照一定的规则对数据进行管理的制度

二。分类

二进制 八进 十 十六

组成:

二:0 1

八:0--7

十:0--9

十六:0--9和a--f

权:根据位置不同,所表示的数值不同。表示:基数的n次幂(n从0开始)

基数:组成该数制的数字个数。

123

1*100+2*10+3*1

三。转换

1。十制数-->其它进制

规则:

整数:除以相应数制的基数然后除余倒排列。

小数:乘以相应数制的基数然后除整数正排列。

**当乘不尽时,保留前两位.

(13.5)10=(1101.1)2

2.其它进制-->十制数

规则:按权展开,相加求和.

(1101.167)8=(13.)10

3.其它进制

二<--->八

采用421算法

(001 011 011 010 101 110.001 101 011 100)2=(133256.1534)8

规则:从小数点开始向两侧每三个二进制位为一组,不足3位的,整数部分在前面补齐,小数部分在后面补齐,然后,对每一组按权展开相加求和.

八-->二

采用421反算法

将一个八进制位拆分3个二进制位.

(75462.5041)8=(111101100110010.101000100001)2

二-->十六

采用8421算法

规则:从小数点开始向两侧每四个二进制位为一组,不足4位的,整数部分在前面补齐,小数部分在后面补齐,然后,对每一组按权展开相加求和.

(1001 1110 1110 1100 1010.1101 1001 0100)2=(9eca)16

十六-->二

采用8421反算法

将一个十六进制位拆分4个二进制位.

(10afd)16=(10000101011111101)2

八<--->十六

借助二,十进制

第二讲 数据类型 常量 变量

一.数据类型:

数据在计算机内的表现形式

整型

基本数据 单精度

实型(浮点型)

双精度

字符型

结构体

构造类型 共用体

数组

指针型,空类型.

二.常量

<一>.含义,在程序招待过程中,其值不变的量.

<二>.使用形式

1.字面量.

s=2*P*r

2.宏符号

#define X 3.141592627

int x

<三>分类

整型常量 实型常量 字符型常量 字符串常量

A:整型常量

1.表示形式

八进制 十进制 十六进制(二进制不能表示整型常量)

2.书写格式

十进制:由0--9组成,不能以0开头.5 6

八进制:由0--7组成,必须以0开头.eg:05 07

十六进制:由0--9和a--f组成,必须以0x开头. 0x5 0xa 0xa01

3.分类,范围,空间,控制符

十进制:

-5 1111111111111111

5 0000000000000101

123

0 1 999

有符号 (signed) int x%d -32768----32767

短整型(2B)

无符号 unsigned int x%u 0----65535

有符号 (signed) long (int) x%ld -2147483648----2147483647

长整型(4B)

无符号 unsigned long (int) x%lu 0-----429......

八进制(无符号)

符合整数的定义规则 .

短无(2B): %o 0---0177777

长无(4B):%lo 0---037777777777

十进制(无符号)

符合整数的定义规则 .

短无(2B): %x 0---0xffff

长无(4B):%lx 0---0xffffffff

B:实型常量

1。表示形式

十进制 指数形式

2.十进制

由0--9组成,必须有小数点,小数点前面或后面有数据.

单精度:float %f 10(-38)----10(38) 4B

双精度:double %lf 10(-308)---10(308) 8B

3.指数形式

阶码标志:E(e)代表10

double x=1.23457e+3

必须有阶码标志E(e),阶码标志前和后必须有数据,且前面是整数或实数,指数部分:必须是整数.

%e 与%f一致小数点后保留6位,且E也算一位

C:字符型常量

1.书写格式

由一对单引号括起的任意一个字符.

2.分类

ASCII码字符(共256个)

'a'---'z'[97--122] 'A'--'Z'[65--90] '0'---'9' [48--57]

ASCII码值:每个字符对应的十进制整数.(无符号) 0---255

main(){ char cscanf("%c",&c)printf("%c",c-32)}

if(c>=97&&c<=122)

printf("%c is xiaoxie",c)

else if(c>='A'&&c<='Z')

printf("%c is da xie",c)

else if(c>='0'&&c<=57)

printf("%c is shuzi",c)

else

printf("%c is qita",c)

转义字符

书写格式:以\开头,用一对单引号括起一个或多个字符,但是表示是一个字符.

分类:

'\+字母':作用:主要控制光标.

'\n':光标回车换行.

'\t':光标跳到下一个制表位

'\r':光标回到行首

'\b':光标左退一列

printf("******\n*******")

'\+标点':作用:控制输出一个标点符号

'\'':输出一个单引号

'\"':输出一个双引号

'\\':输出一个反斜杠

'\+数字': 作用:表示一个ASCII码字符.

'\0ddd':八进制转义字符:最多三位八进制数*****0可以省略.

'\xdd':十六进制转义字符:最多二位十六进制数

'\0123' '\123'

'\xa1'

printf("%c",'\61')

3.范围(1B)

有符号:-128----127

无符号:0--255

char c=-5

printf("%c",c)

D:字符串常量

书写格式:由一对双引号括起任意零个1个或多个字符。

字符串的长度:组成该字符串的字符个数。

字符串结束标志:'\0'

空间:串长度+1个空间.

控制:%s

char x[100]

scanf("%s",x)

printf("%s",x)

printf("%s","kdfjlkdsjfsdls")

printf("%s","zheng")

"":空串.

三.变量

1.其值在执行程序中可以改变的量.

2.定义格式

存储类型 数据类型 变量名1,变量名2,......变量名n

int x,y,z

存储类型:变量开辟空间的类型.

auto:(默认)自动型 该变量的默认值为随机值.

static:静态型 该变量的默认值为0值.

regiester:寄存器型 该变量的默认值为随机值.

extern:外部参照型 该变量的默认值为0值. (我们使用省略extern型)

static int x

printf("%d",x)

aaa.prg

a1.c int x

a2.c extern int x

a3.c

int x

main()

{

int x

}

变量名:

a:多个变量之间用,隔开

b:相同类型的变量可以写在同一个语句中

int a,b,c

c:变量命名

必须符合合法的用户标识符

标识符:用来表明或表示变量或函数的名字或类型的符号.

关键字:用来标识类型的标识符.(32个关键)

存储类型,数据类型,流程类 ,运算符类(sizeof)

标识符:由字母,数字,下划线组成,不能以数字开头,不能与关键字重名.

int if

_a1

1a

a 1

main()

{

int x,X

float x

****不能与同一范围内的变量名重名.*****

3.给变量赋值.

通过两种:

赋值表达式: =

输入函数:scanf()

x=3

scanf("%d",&x)

a:赋值表达式

格式: 变量名=表达式

左边必须是变量名,右边赋值给左边,并将左边变量的值覆盖.当一个变量进行多次赋值时,该变量只能保留最一次所赋的值.

main()

{

int x

x=2

x=5

scanf("%d",&x)

printf("%d",x)

getch()

}

int x,y,z

x=2

y=3

z=x

x=y

y=z

x=3

y=2

b:scanf()

格式:scanf("控制符",地址项)

scanf("%d%f%c",&x,&y,&z)

3. 数据类型之间转换(两个自动,一个强制)

a:在赋值时,右边数据的类型自动转换成左边变量的类型.

int x

x=1.23

float x

x=10

char c=65

int x='a'

int x=32768

printf("%d,%u",x,x)

b:运算时,数据类型低的转换成数据类型高的(占空间的字节数)

int x

float y

printf("%f ",x+y)

c:强制转换

格式:(数据类型)表达式

数据类型:将要转换成的类型

表达式:要转换的对象.

(float)x+y

(float)(x+y)

x+(float)y

float x=12.345,y

y=x-(int)x

printf("%f",x)

(int)x%2==0

第三讲 运算符及表达式

目:根据运算对象对运算符分为:单目,双目,三目.

表达式:简单和复杂表达式

简单:无运算连接的式子. 3 x (1)

复杂:有运算连接的式子. x+y x=3 x<y

一.算术运算符 +(正)-(负)+ - / * %

规则:

/ :当运算对象都为整数时,结果取整的.若其中一个为实型,结果为实型. 1/2.

%(取余/模):要求:运算对象必须为整型.

int x,y

x%y

x=123

x%10

x/10%10

x/100

表达式

式子的类型:与运算对象中占空间最大的一致.

优先级:正,负-->*/%-->+,-

结合性:单目:从右向左双目:从左向右.

- - -5

x%2/y*z

二.赋值运算符 = += -= /= *= %=(自反赋值)

规则: s=5

自反赋值:左边和右边先按指定的运算符进行运算,然后再赋值给自己.*****左边必须先有值.

x=2

x+=5

x=x+5

表达式:

表达式的值与左边变量的值一致.

printf("%d",x=5)

结合性:从右向左

int x=3

x+=x-=1

三.关系运算符 <><= >= == !=

规则:.

表达式的值:逻辑值,当判断成立时,得到逻辑值真值(用1表示),不成立时,得到逻辑值假值(用0表示)****因为C语言中没有逻辑型数据****

类型:整型.

int x,y

x=3

y=4

printf("%d ",x<y)

c<='z'&&c>='a' 'z'>=x>='a'

优先级:<><= >= -->== !=

结合性:从左向右

x>y>z x>y &&x>z

四.逻辑运算符 &&(逻辑与) 双目 ||(逻辑或) 双目 !(逻辑非)单目

规则:

格式:表达式1&&/||表达式2

&&:表达式1和表达式2必须都为真值(非零值),整个逻辑与表达式才成立.产生逻辑值真值(用1表示)

如果表达式1或表达式2其中一个是假值(0值),整个逻辑与表达式不成立.产生逻辑值假值(用0表示)

x= x=5&&6<9

||:表达式1或表达式2成立,则整个式子成立,产生真值(用1表示).若两个式子都为假值,整个逻辑或表达式为假(用0表示)

x>='a'||x<='z'

!:格式: !表达式

当表达式为真(非零值)值,逻辑非表达式为假(用0表示)

当表达式为假(零值)值,逻辑非表达式为真(用1表示)

x=!(4>5)

优先级:!-->&&-->||

x>='a'&&x<='z' || x>='A'&&x<='Z'

*********

&&:如果表达式1为假了,系统不对表达式2进行计算了

||:如果表达式1为真了,系统不对表达式2进行计算了

int x,y

x=3

y=4

x= x<y&&!5

x,y?

x=x>y||x=9

x,y?

对&&和||而言:不是按优先级计算,而是先计算表达式1,再计算表达式2.

结合性:单目:从右向左

双目:从左向右

! ! ! ! !5

表达式的值:逻辑值

类型:整型.

int x,y

scanf("%

if(x>y)

五。自增/减运算符 ++ -- 单目

规则:

表达式++ 表达式-- 后缀表达式

++表达式 --表达式 前缀表达式

main()

{

int x

x=2

printf("%d",x++)

x=2

printf("%d",++x)

}

变量的值:会自动的增/减1;

表达式的值:

后缀表达式:与变量改变之前值一致。

前缀表达式:会与变量的值一致增/减1;

表达式:

x++ x=x+1 x+=1

六。条件运算符( ? : )三目

规则:

表达式1?表达式2:表达式3

x>y?printf("%d",x):pritnf("%d",y)

int x,y

w=x>y?x:y

printf("%d",w)

int x,y

if(x>y)

printf("%d",x)

else

printf("%d",y)

先计算表达式1,若产生非零值,则执行表达式2,并将表达式2的值作为整个条件表达式的值,若产生

零值,则执行表达式3,并将表达式3的值作为整个条件表达式的值(若执行表达式2,不执行表达式3)

int x,y,w

x=5

y=4

w=x>y?x++:y++

printf("%d,%d,%d",w,x,y)

if(x>y)

x++

else

y++

x,y?

优先级:

单目(++,--,-+!)-->算术双目-->关系-->逻辑运算-->条件-->赋值->逗号.

结合性:从右向左分出正确的表达式,从左向右计算.

?: ? ?: : ? :

w=x>y? x>z?x: z : y>z?y: z

3个

w,x,y,z

if(x>y)

if(x>z)

w=x

else

w=z

else

if(y>z)

w=y

else

w=z

七.逗号 , 双目

作用:分隔,运算符

格式:表达式1,表达式2

规则:从左向右算,取最后一个表达式的值为整个逗号表达式的值.

int x=5,y

y=x++,--x,x,x+1,x

x,x+1,x,(y=x++,++x)

y=(x++,--x,x,x+1,x)

printf("%d",(x,y))

第四讲 流程控制语句

顺序 循环 选择

一.选择语句

if..else 和 switch

作用:根据条件执行程序的某一部分.

A:if...else

1.格式

if(条件表达式)

{

语句组1

}

else

{

语句组2

}

注意:

a:if,else为关键字必须为小写.

b:条件表达式:一般写关系或逻辑表达式.

c:else可选项,{}当执行语句只有一句时,可以省略.

2.执行过程

首先计算条件表达式的值,若为非零值,则执行if分支,否则,若有else分支,则执行else,没有时,执行下面的其它语句.

3.嵌套

在if或else分支中又出现if..else语句.

a:在else中出现if..else

if( )

.....

else if( )

.....

else if( )

.....

else

......

b:在if分支中出现if...else

if1( )

if2( )

if3( )

if4( )

.....

else4

.....

else3

.....

else2

......

else1

........

c:在if和else中出现if...else

if( )

if( )

....

else

....

else

if( )

....

else

....

if(x%4==0&&x%100!=0||x%400==0)

if(x%4==0)

if(x%100==0)

if(x%400==0)

printf("run")

else

printf("ping")

else

run

else

ping

if(x>y)

if(x>z)

w=x

else

w=z

else

if(y>z)

w=y

else

w=z

B:多开关语句switch

格式

switch(表达式)

{

case 常量表达式1:语句组1[break]

case 常量表达式2:语句组2[break]

case 常量表达式3:语句组3[break]

................n:.....n[break]

default :语句组n+1

}

注意:

a:表达式的类型必须与常量表达式的类型一致.整型或字符型.

b: break是可选项, 当遇到break表示该语句执行完毕.

c:default是可选项.{}不可省略.

d:同一个switch语句中,常量表达式的值不能重复.

int x,y

char w

scanf("%d%d%c",&x,&y,&w)

switch(w)

{

case '+':printf("%d",x+y)break

case '*':printf("%d",x*y)break

case '/':printf("%d",x/y)break

case '-':printf("%d",x-y)break

default:printf("wu ci yun suan fu")

}

2.执行过程

......

3.嵌套.

char c

scanf("%c",&c)

switch(c>='a'&&c<='z')

{

case 0:switch(c>='A'&&c<='Z')

{

case 0:switch(c>='0'&&c<='9')

{

case 0:printf("qita")break

case 1:pritnf("shuzi")break

}break

case 1:printf("daxie")break

}break

case 1:printf("xiaoxie")break

}

二.循环语句

for while do...while

作用:根据条件重复执行程序的某一部分.

A:for语句

1.格式

for(表达式1表达式2表达式3)

{

循环体语句

}

for(x=1x<=10000x++)

{

printf("%d",x)

}

注意:

a:表达式1:给循环变量赋初值

b:表达式2:决定是否应该进入循环的条件,一般为关系或逻辑表达式.

c:表达式3:给变量重新赋值.

d:{}可以省略.3个表达式均可省略.同时省略 for()无限循环.

2.执行过程

首先执行表达式1给变量赋初值,然后再判断表达式2是否成立.若成立则进入循环体,当执行到}表示一次循环体执行完毕.再执行表达式3给变量赋新值,然后再判断表达式2是否成立.若成

立,再进入循环体,否则,表示该语句执行完毕.

1.求1---100和

2.接收10个实数,对小数部分求和.

B:while语句

a.格式

while(表达式)

{

循环体

}

注意:{}当循环体只有一句时,可以省略.表达式与表达式2一样,但不能省略.while(1)===for()无限循环.

for(i=1i<=100i++)

printf("%d",i)

int i

i=1

while(i<=100)

{

printf("%d",i++)

}

补充:

输入/出单个字符的函数.**必须预处理<stdio.h>

getchar()和putchar()

格式

变量名=getchar()

putchar(变量名/常量)

main()

{

char x

scanf("%c",&x)

printf("%c",x)

x=getchar()

putchar(x)

}

C.do ...while

a:格式

do

{

循环体

}while(表达式)

注意:

{}均不可省略.先执行一次循环体,再判断表达式是否成立.

至少执行一次.

main()

{

int i

i=1

do

{

printf("%d",i)

}while(++i<=100)

D:嵌套

for(i=1i<=3i++)

for(j=1j<=3j++)

for(k=0k<=59k++)

{

printf("%d:%d:%d",i,j,k)

delay(1)

}

****

***

**

*

for(i=1i<=4i++)

{

for(j=1j<=5-ij++)

printf("*")

putchar('/n')

}

1!+2!+3!+4!+....n!

阶乘。

三.转移

break

作用:只能用在循环体或switch语句中。

用在循环体中,为了终止其所在的循环体。

while(c!='*')

c=getchar()

if(c=='*')

break

continue

只能用在循环体中,提前结束本次循环体语句,而进入下一次循环体。

for(i=1i<=100i++)

{

if(i%2)

continue

printf("%d",i)

}

***********************************************

数组前的笔记

+qq619740933,能帮你讲得尽量帮你讲明白