输出首字母缩写形式c语言,C语言学习(1)

一、C语言基础

1. 学习方法

多看+多敲+多思考总结

2. C语言历史

机器码: 01二进制去写代码,困难很大 10+11运算

+ ---》 01001

汇编语言:用助记符替换掉机器码中的序列

+ ---》add

B语言

1972年: 设计unix系统而发明了C语言

3. C语言中变量类型及其使用

变量:用来存放各种类型的数据   商品的价格---》小数表示 4.0 3.5

商品的数量---》整数

商品的名称---》中文字符串或者英文字符串

变量类型:int(整型) float(单精度浮点型) double(双精度浮点型) short(短整型) long(长整型)long long int(长长整型) char(字符类型) bool(类型) struct(结构体) union(联合体) enum(枚举) unsigned(无符号数)

变量的使用:

语法规则: 类型 变量名字;

int ab123;

float price; //英文单词,或者缩写

float jiage; //最恶心的

C语言命名规范:

第一个:变量的名字中只能有字母,数字和下划线组成,并且首字母不能是数字 ab Ab ab78 a79 _abc 7mn(非法) a#b(非法) h@c(非法)

第二个:命名的时候尽量通俗易懂,不要用汉语拼音,用英文单词缩写

(1)整型

d6ce26914a71e65cddc64bf7fa38bc7f.png

大小: 4个字节,32位二进制,知道大小是为了防止使用的时候数据溢出了(超出取值范围了)

存储:

原码:一个整数原本的二进制编码

比如: 8的二进制原码 1000(短除法求)

反码:把原码依次取反

原码:1101 --》反码0010

补码:反码加1

原码:1101 --》补码0010+1 --》0011

正数在计算机中采用原码存放,并且最高位是符号位,0表示正数,1表示负数

1010

负数在计算机中采用补码存放 -88

2b50cb6e8a57b119debf5f6b9cd9a767.png

练习: 熟悉一下短除法,求各种进制

-1的二进制是多少

bbe745bfc30d12209b7462cd9405db15.png

(2)浮点型

float占4个字节

double占8个字节

小数在计算机中是无法精准存储的

比如: 12.5

12.6

3b13151efd36680401e2ca5d18e4d9fe.png

7b1c416ac2b21ac90f326199735676ec.png

(3)short

2个字节

long 32位系统4字节 64位系统8字节

long long int 12字节

(4)char

存放单个字符的ASCII码值 占1个字节

@ # $ % 'a' 'b' 'c' '1' '6' 8 9 0

美国人制定了ASCII码表,把字符编码成整数

man ASCII命令可以查看ASCII码表

'A' -->65

'a' -->97

'0' -->48

char a='@'; //C语言规定字符必须用单引号括起来

(5)布尔类型

bool--》判断真假的,跟C语言的条件判断相配合

注意: 添加#include

只有两个值: true 真 false 假

定义: bool a=true; //等价于 bool a=1;

bool b=false; //等价于 bool b=0;

(6)无符号数

unsigned int a; //无符号数a,不区分正负,当成纯粹的数字来计算,最高位不是符号位了

unsigned float b;

unsigned char c;

练习:

第一题:

char b='b';

char c=b+5; //请问c是多少

#include

intmain()

{char b = 'b';char c = b+5;

printf("C的ASCII值为:%d\n",c);

printf("C的符号为:%c\n",c);return 0;

}

结果如下:

42f4080a4f285f5988b73d1773f95aa1.png

第二题:

char a=389; 请问打印a的值是多少?? 为什么??

考察数据溢出之后计算机是如何处理的

#include

intmain()

{char b = 400;char c =300;

printf("b的值为:%d\n",b);

printf("C的值为:%d\n",c);return 0;

}

结果如下:

b的值为:-112C的值为:44

原理:从结果来看,char类型的变量a存放的值溢出了,系统将溢出的值舍去,取得小于256的数值,判断是否大于127,大于的话先取反码,再补码即+1。

小于127的数即本身。

eg:389-256=133;取反码就是122,再补码即为-123;

eg:300-256=44;即为44。

第三题:

字符跟整数之间的换算

#include

intmain()

{char a = '9';char b = '5';char c = 7;

printf("The a is %d\n",a-'0');

printf("The b is %d\n",b-48);

printf("The c is %c\n",c+'0');return 0;

}

结果如下:

The a is 9The bis 5The cis 7

'9' -->转换成整数 9

'9'-'0' 或者 '9'-48 结果就是整数9

整数9 -->转换成字符'9'

9+'0' 或者9+48 结果是57

二、C语言程序的结构

1. 最简单的C语言程序

#include //头文件

int main() //C语言程序的入口,main函数

{

printf("hello world!\n"); //帮助我们在屏幕上打印一句话

return 0; //结束整个main函数

}

2. linux中编译C语言程序

gcc hello.c -o hello

gcc --》linux中编译器的名字

-o --》 output 输出

3. linux中执行C语言程序

./程序的名字

三、C语言的格式控制符号以及输入和输出

1. 格式控制符号

作用:由于C语言区分不同的数据类型,在输入输出这些数据的时候需要使用不同的格式控制符号来跟变量类型对应

八进制数的标准写法:

int a=10; 二进制10 --》2

八进制10 --》8

十六进制10 --》16

// int a=b10; //二进制

int a=010; //八进制10

int a=0x10; //十六进制10

int a=10; //十进制的

对应关系:

%d --> int

%f -->float 默认保留6位有效数字

%lf -->double

%hu -->short

%ld -->long

%lld -->long long int

%c -->char 输出的是字符本身

%d -->char 输出是字符的ASCII码值

%x -->十六进制,字符小写打印

%X -->十六进制,字符大写打印

%#x -->标准形式打印十六进制,前面加上0x

%o -->八进制

%#o -->标准形式打印八进制,前面加上0

%10.2f -->前面10表示位宽不够左边补空格   后面的2表示保留2个小数位

%-10.2f -->前面10表示位宽 后面的2表示保留2个小数位

%.9f --》指定了保留9个小数位,位宽没有指定,默认位宽

%10d -->10是位宽,靠右对齐,左边补空格

%-10d --> 靠左对齐,右边补空格

%s -->字符串

%5s

%p -->变量地址

例如:

#include #include

intmain()

{int a=199;float b=96.5;double c=89.3;short d=45;long e=125;long long int f=8934;char g='@';bool h=true;

printf("a is:%d\n",a);

printf("a is:%x\n",a);

printf("a is:%X\n",a);

printf("a is:%#x\n",a);

printf("b is:%f\n",b);

printf("c is:%lf\n",c);

printf("d is:%hu\n",d);

printf("e is:%ld\n",e);

printf("f is:%lld\n",f);

printf("g is:%c\n",g);

printf("g is:%d\n",g);return 0;

}

结果如下:

a is:199ais:c7

ais:C7

ais:0xc7bis:96.500000cis:89.300000dis:45eis:125fis:8934gis:@

gis:64

例如:

#include

/*这是一个例子程序,讲解代码书写规范

这个例子很重要,大家 养成好的习惯

//块注释中不能嵌套块注释,但是可以嵌套单行注释*/

intmain()

{int a=0b1010; //定义了整型变量,给它赋值一个二进制数

float b=15.6;double c=8933.3;char d='o';

printf("a is:%10d\n",a);

printf("a is:%-10d\n",a);//-10d表示位宽,靠左对齐!

printf("b is:%f\n",b); //b is:15.600000//小数点前面数字表示位宽(整个数字占用多少位置)

printf("b is:%10.7f\n",b); //b is:15.6000004

printf("b is:%18.7f\n",b); //b is: 15.6000004

printf("b is:%18.3f\n",b);

printf("b is:%3.7f\n",b); //位宽不能小于这个数据本身的位宽

}

结果如下:

a is: 10ais:10bis:15.600000bis:15.6000004bis: 15.6000004bis: 15.600bis:15.6000004

作业:

2  8  10  16进制之间的相互转换

二进制--》转换八进制

二进制--》转换16进制

进制之间的转换规则

二进制--》八进制

二进制--》十六进制

每三个二进制为一组换算成对应的八进制即可

每四个二进制为一组换算成对应的十六进制即可

八进制取值范围:0---7   最大的数字7换成二进制111  (421码)

十六进制取值范围:0---F  最大的数字15换成二进制1111  (8421码)

八进制--》二进制

每个八进制位换算成三个二进制即可

八进制 071 ---》 7 --》二进制111

1 --》二进制001   //不够三位的补零对齐

071--》二进制111 001

十六进制--》二进制

每个十六进制位换算成四个二进制即可

十六进制 0A3---》 A --》二进制1010

3 --》二进制0011  //不够四位的补零对齐

0A3--》二进制1010 0011

八进制--》十六进制

思路:先把八进制转成2进制,然后再把2进制转成16进制即可

八进制   0745 --》二进制111 100 101 --》16进制0001    1110     0101

1           E          5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值