C语言基础
常量:是在程序中保持不变的量
变量:编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值。通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。
声明和使用变量
- 声明变量:
Datatype variablename;
- 定义时初始化变量:
Datatype variablename = value;
- 定义后初始化变量:
variablename = value;
计算长方形的面积 //声明变量:数据类型 变量名; int width;//长方形的宽 width=10;//为变量赋值 //声明并赋值 int length=50;//长方形的长 int s=width*length;// 面积 printf("长方形的长是%d,宽是%d,面积是:%d\n",length,width,s); //%d:整形占位符 |
变量命名(标识符)
1. 什么是标识符
标识符就是在程序中自定义的一些符号和名称。要跟关键字区分开来:关键字是C语言默认提供的符号,标识符是程序员自定义的
2. 标识符的作用
1) 标识符,从字面上理解就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来
2) 其实,标识符的作用就跟人类的名字差不多,为了区分每个人,就在每个人出生的时候起了个名字
3) C语言是由函数构成的,一个C程序中可能会有多个函数,为了区分这些函数,就给每一个函数都起了个名称。函数的名称就是标识符的一种。除了函数,以后还会学到“变量”这个概念,变量的名称也是标识符
3. 命名
1> 命名规则(一定要遵守)
l 只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成
l 严格区分大小写,比如test和Test是2个不同的标识符
l 不能以数字开头
l 不可以使用关键字作为标识符
2> 命名规范(最好遵守)
l 尽量起个有意义的名称,比如一个完整的英文单词,别人一看这个名称就能才能这个标识符的作用。如果不懂英文,你也可以用拼音,尽量不要起像abcde、sfsdfsdf等这类看起来没有意义的名称
l 如果标识符中含有多个单词,可以使用驼峰标识(除开第一个单词,后面每个单词的首字母都是大写):firstName、myFirstName,或者使用下划线_来连接:first_name、my_first_name
4. 常见的标识符命名错误
合法标识符 |
非法标识符 |
注释 |
fromNo12 |
from#12 |
标识符中不能使用#符号 |
my_Boolean |
my-Boolean |
标识符中不能使用“-”符号,应使用下划线“_”代替 |
Obj2 |
2ndObj |
标识符不能使用数字开头 |
myInt |
int |
“int”是内建关键字 |
jack_rose |
jack&rose |
符号“&”不能出现在标识符中 |
GUI |
G.U.I |
标识符内部需要出现“.”分隔符 |
基本数据类型
数值类型: 整型:(short,int,long), 非整型 (float,double)
非数值型: char
//计算圆的面积 float pi=3.14;//圆周率 int r=3;//半径 float s=pi*r*r; printf("圆的半径%d,圆周率%f,面积是:%f\n",r,pi,s); //%f:单精度浮点float占位符 |
printf()函数和scanf()函数
int bottom,height; printf("请输入三角形的底边长:"); scanf("%d",&bottom);//将用户输入的值赋值给bottom变量 : &:取地址 printf("请输入三角形的高:"); scanf("%d",&height);//将用户输入的值赋值给height变量 double s=bottom*height/2; printf("三角行的面积为:%7.2lf",s);//%lf:double的占位符 l7.2f:七位有效数字,精确到小数点后2位 |
转换字符串 |
说 明 |
%d |
将参数按整数形式转换输出,对应参数应是int 类型 |
%ld |
将参数按长整数形式转换输出,对应参数应是long 类型 |
%c |
输出一个字符,对应参数应该是一个字符 |
%s |
输出一个字符串,对应参数应该是一个字符串 |
%f |
将参数按带小数点数形式输出,对应参数应是double 类型,默认情况下精确到 6 位小数 |
算术运算符:
二元运算: +,-,*,/,%(取模或求余)
一元运算符: ++num,--num,num++,num—
int num1 = 10; int num2= ++num1+num1--; printf("num2=%d",num2);//22 printf("num1=%d",num1);//10 |
表达式 |
如何计算 |
结果 (num1=5) |
num2 = ++num1; |
num1 = num1 + 1; num2 = num1; |
num2 = 6; num1 = 6; |
num2 = num1++; |
num2 = num1; num1 = num1 + 1; |
num2 = 5; num1 = 6; |
num2 = --num1; |
num1 = num1 - 1; num2 = num1; |
num2 = 4; num1 = 4; |
num2 = num1--; |
num2 = num1; num1 = num1 - 1; |
num2 = 5; num1 = 4; |
通过中间变量实现变量交换:
int num1,num2; int temp;//中间变量 printf("请输入的num1的值"); scanf("%d",&num1); printf("请输入的num2的值"); scanf("%d",&num2); printf("交换前num1=%d,num2=%d\n",num1,num2); temp=num1; num1=num2; num2=temp;//通过中间变量实现交换 printf("交换后num1=%d,num2=%d\n",num1,num2); |
类型转换
- 自动类型转换
- 原则:把表示范围小的类型的值转换到表示范围大的类型的值
- short à int à long à float à double
- 强制类型转换
- 语法:(类型名) 变量或数值
- 例如:
int a = 5, b = 3;
float qu = float(a) / b;
getchar()和putchar()
char a,b; printf("请输入第一个字符:"); a=getchar();//获取输入字符 fflush(stdin); printf("请输入第二个字符:"); b=getchar();//获取输入字符 fflush(stdin); putchar(a);//输出字符 putchar(b); putchar("\n");
|
作业1:
指出标识符的正确性
test1 :合格 由字母和数字组合 且不以数字开头
Mike2jack :合格 由字母和数字组合 且不以数字开头
My_tExt _test:不合格 区分大小写
test!32 :不合格 含特殊符号
haha(da)tt :不合格 含特殊符号()
哈哈_text :不合格 含中文开头 特殊符号
123haha :不合格 以数字开头
78text :不合格 以数字开头
a :合格
_123 _:不合格 含空格
作业2:
根据用户输入的底和高计算梯形的面积(精确到小数点后两位)
- S=(a+c)*h\2
void main(){
float bottem,map,height;
printf("请输入梯形的上底:");//将用户输入的上底值,给bottem
scanf("%f",&bottem); //&取缔值 scanf 用户输入
printf("请输入梯形的下底:");
scanf("%f",&map);
printf("请输入梯形的高:");
scanf("%f",&height);
float s =((bottem+map)*height)/2;
printf("梯形的面积为:%7.2f",s);
}