1.基本数据类型
整型
:处理整型数据用的。
C89
有符号 短整型 整型
长整型(负)
无符号 短整型 整型
长整型(非负)
在64位计算机系统中Mac OS
955888 0200 0054 33379
类型
最小值
最大值
short int
-32768
32767
unsigned short int
0
65535
int
-2147483648 2147483647
unsigned int
0
4294967295
long int
-9223372036854775808
9223372036854775807
unsigned long int
0
18446744073709551615
计算过程:
short int 最小值 -2^15 ~2^15-1
unsigned short int 最小值 0 ~ 2^16-1
int
最小值 -2^31 ~ 2^31-1
unsigned int 最小值 0 ~2^32-1
long int 最小值 -2^63 ~ 2^63-1
unsigned long 最小值 0 ~ 2^64-1
sizeof关键字 用来计算所占内存字节数
sizeof(shrot int)---->2Byte---->2*8 = 16bit
sizeof(int)---->4Byte---->4*8 = 32bit
sizeof(long int)---->8Byte---->8*8 = 64bit
补充:32位
16位系统中所占内存情况
32位
char 1字节
short 2字节
int 4字节
long 4字节
long long 8个字节
#include
int main(int argc, const char *
argv[])
{
//1.复习变量 注意 使用变量前必须要先声明
//声明变量 类型标识符 变量名; 不能有中文
//短整型 short
int 整型 int 长整型 long
int
//2.声明变量并初始化(赋初始值)
int x = 100;
//3.输出10进制整型 %d
printf("输出10进制整型:%d\n",x);
//4.输出8进制整型 %o 以0开头 0123,025;
printf("输出8进制整型:%o\n",x);
printf("输出8进制整型:%#o\n",x);
//5.输出16进制整型 %x 以0x或0X
printf("输出16进制整型:%x\n",x);
printf("输出16进制整型:%#x\n",x);
//6.短整型 短整型
%d或%hd
short int si
= 200;
printf("输出short
int:%d\n",si);
printf("输出short
int:%hd\n",si);
//7长整型 输出长整型
%ld
long int li
= 300;
printf("输出long
int:%ld\n",li);
//8
C99标准中的long long int
long long int lli
= 400;
printf("输出long long
int:%lld\n",lli);
return 0;
}
16位
char 1字节
short 2字节
int 2字节
long 4字节
#include
int main(int argc, const char *
argv[])
{
//1.计算short
int所占内存字节数
printf("short
int所占内存字节数:%lu\n",sizeof(short));
printf("unsigned
short所占内存字节数:%lu\n",sizeof(unsigned short));
//2.计算int
uint 所占内存字节数
printf("int 所占内存字节数:%lu\n",
sizeof(int));
printf("unsigned
int 所占内存字节数:%lu\n",sizeof(unsigned int));
//3.计算long
ulong 所占内存字节数
printf("long 所占内存字节数:%lu\n",sizeof(long));
printf("unsigned
long 所占内存字节数:%lu\n",sizeof(unsigned long));
return 0;
}
思考题:
short
2Byte
16bit
xxxx
xxxx xxxx
xxxx
0111 1111
1111 1111 = 0x7FFF = 32767
1000 0000
0000 0000 = 0x8000=-32768
unsigned short
2Byte 16bit
xxxx xxxx
xxxx
xxxx
#include
int main(int argc, const char *
argv[])
{
//1.给变量 初始化
int a = 0;
char b
= 0;
float c
= 0;
double d
= 0;
//2.给变量赋值
a = 50;
b = 'A';
c
= 3.14f;
d
= 3.14159265857;
//3.表达式的值赋值给一个变量
a = 100 + 50;
b = 97 - 32;
//4.结合sizeof使用
int li
= sizeof(int);
int lc
= sizeof(char);
//5.a+=b
<==> a = a + b;
int i = 0;
i += 1;
int j = 0;
j = j
+ 1;
printf("i = %d j =
%d\n",i,j);
return 0;
}
1.变量
在程序运行过程中其值可以被改变,也就是说这个变量所在的内存地址中存储的数据(2进制数据)可以发生变化。
2.使用变量前必须要声明,且变量名不能重复,还必须是一个合法的标识符。
3.使用变量的时候要初始化。
int x =
0;
作用:给变量赋一个初始值 0.当然根据自己的需要赋一个有具体数值的值
100。目的是防止变量在程序执行过程中出现垃圾值。
4.编码规范 (C命名规范)
1.驼峰命名
getName,isEnd;
2.宏定义
#define MUSIC "/Users/.….."
3.变量 一般都小写
int a;
4.结构体 名称大写
struct Student
{
};
5.公司的前缀
Tarena(Ta)
6.使用空格让你的代码更清晰 a = 100;
7.使用空行让你的代码结构更清晰,函数和函数之间要空一行。
C99
long long int
实型
:处理浮点类型的数据的。
C89
单精度浮点:表示范围和有效位数少。
float 使用%f 或 .2f
6~7位
float 内存所占字节数 4Bytes =
32bits
xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
x 最高位,第31位是符号位 0正 1负
第23位 ~第30位 这8bits 叫做指数位。
第0位 ~第22位
这些位 是有效位数。
双精度浮点:表示范围和有效位数多。
double 使用%lf 或.nlf 所占 内存字节数 8
Bytes = 64bits 有效位数 7~13 实际上
可以比这个更宽泛15 ~
16位。
double的表示范围 -1.7*10^308 ~1.7*10^308
C99
长双精度浮点:表示的范围更宽泛。
long double
#include
int main(int argc, const char *
argv[])
{
//1.声明一个单精度浮点类型的变量并赋值3.1415
float pi
= 3.1415f;
//2.输出浮点类型的数据
printf("pi =
%f\n",pi);
//%f 打印出来的数据 是6位有效位数 3.141500
//3.变量可以通过 = 赋值运算符,赋一个新的值
pi =
3.1415926f;
//4.输出新的pi的值 从第7位开始四舍五入
printf("pi =
%f\n",pi);
//5.输出指定位数的小数 保留小数点后2位。
printf("pi =
%.2f\n",pi);
//6.双精度浮点类型 double 输出%lf
%e %E
double du
= 128.45;
printf("du =
%lf\n",du);//默认6
//小数点后17位,最多到16位
du
= 3.14159265857123456;
printf("du =
%.16lf\n",du);
printf("du =
%.17lf\n",du);
return 0;
}
字符型:用来表示计算机中得字符数据类型。可见字符 a A ,
8,(,];都是可见字符。control 键 enter回车键等 控制字符。
有英文字符,有数字字符,中文字符。引文字符(含标点符号)以及数字字符都占一个占位符,中文字符(汉字),标点2个占位符。
字符集
ASCII码,UTF-8,16,32,64很多,GB2300 GB2312 BIG5等。
1.字符类型常量
'a'~'z' 'A'~'Z' '0'~'9' ',' '.''[' ')' '*'
'&';
转义字符
\n 换行 \r回车
\b退格键
\t 水平制表符 \v垂直制表符
补充:
"\033[30m XXXXX"
31m
注意:只要一提到是字符常量 'a','A','9';字符串有所区别 "字符串常量";
2.字符类型变量
char ---->1Bytes--->8bit
有符号的字符类型
char
表示的范围 -2^7 ~ 2^7-1 -128 ~
127
无符号的字符类型 unsigned char
无符号表示的范围 0 ~ 255 (共 256字符)
注意:C语言中
字符类型其实就是一个特殊的整型,存储的是字符的ASCII码。
3.ASCII码
小写 'a' ~ 'z'
97
大写 'A' ~ 'Z'
65
====》65 + 32 = 97
数字 '0' ~ '9'
48
4.字符类型输入和输出
printf("%c\n");
scanf("%c",&变量名);
#include
int main(int argc, const char *
argv[])
{
//1.模拟QQ登陆 1.QQ号 2.密码(数字)
int no =
0;//账号
int password
= 0;
//UI界面
printf("=========================\n");
printf("
QQ2014版\n");
printf("QQ账号:\n");
//2.输入账号
账号是个整数
scanf("%d",&no);
printf("QQ密码:\n");
//3.输入密码 密码理解状态下纯数字 6位
scanf("%d",&password);
printf("=========================\n");
//4.输出数据
printf("QQ号:%d 密码:%d\n",no,password);
//-----------------------------------
//输入 输入浮点类型的数据
//输入一个上网的时长 2.5 小时
double hour =
0;
//提示用户输入上网时长
scanf("%lf",&hour);
//输出一下上网的时长
printf("上网时长:%.2lf\n",hour);
//-------------------------------
//从键盘上输入字符
或多个字符
char sex = 0;
printf("请输入您的性别:男M 女W\n");
//清空输入缓冲区 多余\n
setbuf(stdin, NULL);
//然后再输入
scanf("%c",&sex);
//输出
printf("性别:%c\n",sex);
return 0;
}
2.构造类型
3.指针类型
4.空类型
5.自定义类型
二、数据操作
1.运算符和表达式
1.1 算术运算符和算数表达式
+(正) -(负) * /(取整) %(取余)
四则运算 +
加法运算,也可以表示正数。a + b;
-
减法运算,也可以表示负数。a - b,-5;
* 乘法运算。 a *
b;
/
除法以及取整运算。a/b
% 取余数。
++ 自增运算符
--
自减运算符
注意:/ 取整 和% 取余数,可以做按位取值。
例子:1256 ---->千 百 十
个上的数。
7199秒---->XX小时XX分钟XX秒。
结论:++i + ++i +
++i这样的表达式,意义不大。让大家知道不要循环的给中间变量取赋值。
#include
int main(int argc, const char *
argv[])
{
int i = 0;
int a = i++ +
i++ + i++;//3 或 0
int j = 0;
int b = ++j +
++j + ++j;//6 或 7
printf("a = %d\n",a);
printf("b = %d\n",b);
return 0;
}
#include
int main(int argc, const char *
argv[])
{
//1.自减运算符 也是在自己的基础上每次减少1
//通常也是和循环一起使用
int i = 5;
i--;
printf("i = %d\n",i);
int j = 5;
--j;
printf("j = %d\n",j);
return 0;
}
1.2
赋值运算符和赋值表达式
= 赋值运算符 右结合
作用给变量赋值用。
a = 100
读作把100 赋值给变量a;
+=,-=,*=,/=,^=等。
a+=b 就相当于a = a + b;
a-=b 就相当于a
= a - b;
a*=b 就相当于a = a * b;
a/=b 就相当于a = a / b;
a^=b 就相当于 a = a ^ b;
#include
int main(int argc, const char *
argv[])
{
//1.声明一个字符类型的变量 a,赋值 'A'
char a
= 'A'; //65 'A'
~ 'Z'
char b
= 'a'; //97 'a'
~ 'z'
char c
= '0'; //48 '0'
~ '9'
//2.使用printf()函数输出 %c 输出的是字符
printf("a = %c\n",a);
printf("b = %c\n",b);
printf("c = %c\n",c);
//3.使用printf()函数输出 %d 输出的该字符的ASCII码的码值。
printf("a码值 = %d\n",a);
printf("b码值 = %d\n",b);
printf("c码值 = %d\n",c);
//4.ASCII进行 字符的大小写转换 a--->A,A--->a
char d
= 'q'; //q->Q
printf("%c\n",d
- 32);
char e
= 'R'; //R->r
printf("%c\n",e
+ 32);
//练习:请你使用ASCII 输出 I LOVE YOU
printf("%d%d%d%d%d%d\n",'I','
','L','O','V','E');
return 0;
}
1.3
关系运算符和关系表达式
1.4
逻辑运算符和逻辑表达式
*1.5 位运算符和位操作表达式
1.6 逗号运算符和逗号表达式
1.7 条件运算符和条件表达式
作业1:复习Day03以前掌握不牢固的知识点。
掌握算术运算符、赋值运算符的用法
掌握基本数据类型中
整型 实型 字符型的基本输出和输入。
掌握ASCII码
知道a~z A~Z 0~9 的码值和计算方法。
掌握C语言程序框架
作业2:编程题 用今天学过的知识,实现一个4则运算的计算器,就是你输入两个数,自动计算出 和 差
积 商。并能准确的显示。
作业3:编程题
计算圆面积,要求你自己设计程序中要使用的变量的类型和个数。计算结果保留小数点后2位。
*作业4:求100以内的所有素数。
*思考题:谷歌面试题2分内做答,答案正确我们将考虑产品经理一职,年薪30万人民币。8个
相同大小,相同颜色的
等大实心球,有一个球在生产过程中不小心掉进一根铁钉,
只有一个托盘天平(没有砝码 游码卡死不能动)请你用该天平找到这个不合格的小球(最多只能称2次)。
2.请你给这个天平设计一套砝码,能够称重出100克以内的任何质量,最少用几个砝码,他们的克重都是多少。
#include
int main(int argc, const char *
argv[])
{
//1.声明2个整型的变量a和b,初始化为0。
int a = 0;
int b = 0;
//保存结果
int res
= 0;
//2.提示用户输入
printf("请输入a和b的值:如 100 50\n");
//3.从键盘输入数据
scanf("%d
%d",&a,&b);
//4.计算变量a 和 变量b的和。
res = a + b;
//5.输出结果
printf("a+b = %d\n",res);
//练习:试计算a -
b,a * b,a / b;
res = a - b;
//输出a - b的值
printf("a-b = %d\n",res);
//a * b
res = a * b;
//输出a 和 b的积
printf("a*b = %d\n",res);
//a / b
res = a/b;
//结果 注意/ 取整运算如果0.5被取整以后输出 0
printf("a/b = %d\n",res);
//思考1:如果想要输出结果为 0.5 如何处理?
printf("a/b =
%.2lf\n",(double)a/b);
//取余数 %
res = a % b;
printf("a%%b =
%d\n",res);
//思考2:输入任意一个秒数转化成XX小时XX分XX秒。 7199秒 =
1小时59分59秒
//1小时 =
3600秒 7199/3600 = 1 小时
//1小时 = 60分钟
//1分钟 = 60秒
int h = 0;//小时
int m
= 0;//分钟
int s
= 0;//秒
int sec
= 0;//你输入的秒数
//提示用户输入一个秒数
printf("请您输入一个时间:如 7199秒\n");
scanf("%d",&sec);
//进行换算
h = sec
/ 3600;//取整 1小时
m =
sec600/60;//取整 1小时
s = sec600`;//拿到剩余的秒数59
//自己搞定秒
printf("%d小时-%d分钟-%d秒\n",h,m,s);
//练习2:5128数字,请你用 /
%两个运算符,分别拿到 千 百 十 个,然后逆序输出8215。
//自增运算符 ++ 就是变量在自己原有的基础上+1
//这两个运算符常常配合循环一起使用。
//i++,++i 都是在自己的基础上加1;
int x = 5;
x++;
printf("x = %d\n",x);
int y = 5;
++y;
printf("y = %d\n",y);
//自减运算符 -- 在原来的基础上值-1
return 0;
}
#include
#include
#include
//找一首你喜欢的歌曲做铃声
#define MUSIC "/Users/tarena/Desktop/love.mp3"
//封装一个函数
void
myClock(void)
{
//保存 小时 分钟 秒
int h
= 0;
int m
= 0;
int s
= 0;
int sum
= 0;
//1小时=3600秒
1分钟=60秒
printf("亲~请输入提醒时间时-钟-秒\n");
//键盘上输入数据
scanf("%d %d
%d",&h,&m,&s);
//转换总秒数
sum =
h*3600 + m*60 +s;
//让计算机数数
while(sum--)
{
sleep(1);
printf("[%d]秒\n",sum);
}
//当倒数计时到0的时候 放一首歌
execl("/Applications/iTunes.app/Contents/MacOS/iTunes","iTunes",MUSIC,NULL);
}
int main(void)
{
myClock();
return 0;
}
加载中,请稍候......