计算机的语言有三大类,分别为机器语言,汇编语言以及高级语言。而学习的C语言则为高级语言,作为高级语言,C语言更加贴近我们日常生活的思维方式,使人们能用更易理解的方式编程。
1.优先等级:
强制类型转换>算术运算(自左向右)>关系运算符>赋值运算符(自右向左)
强制类型转换如:
int a=5;
int b=6;
double d=(double)(a/b);//先计算再转换double类型
double d=(double)a/b;//先转换成double类型再计算
连续关系运算符从左向右
如:6>5>4,先运算6>5,结果为1,再运算1>4,结果为0.
if注意事项:
if只不加大括号时只对应下一句,回车空格无关,有;即为一条语句
if,do while,while和for的区别:
if条件判断,条件满足则运行后离开,不满足即刻离开。
if(a>0){
printf("hello")
}
do while循环先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。
do while循环的语法为do{循环体}while(表达式);
int i=0;
do {
printf("hello");
}while(i==0);
while循环当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出(而不是立即跳出循环)。
while循环的表达式为:while(表达式){循环体}。
while循环的语法为:while (<条件>) {需执行的代码 }。
while(a>0){
printf("hello");
}
for循环先判断后执行执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。
for循环的表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。
for循环的语法为:for (变量 = 开始值;变量 <= 结束值;变量 = 变量 + 步进值) {需执行的代码 }。
for(初始条件;循环继续的条件;循环每轮最后做的动作)
#include<stdio.h>
int main()
{
int n=2;
int i;
int fact=1;
for(i=2;i<=n;i++){//i++是在一轮循环结束后再进行的
fact*=i;
}
printf("%d",fact);
return 0;
}
算术运算符:
算术运算符 含义 算术运算符 含义 + 加法运算 %(10%3=1) 求余运算 - 减法运算 ^ (3^2=9) 乘幂运算 * 乘法运算 ! (3!=3*2*1=6) 阶乘运算 / 除法运算 | | 绝对值
判断符号==(等于),!=(不等于),<=(小于),>=(大于)
复合赋值运算:/= += -= *=
例如x/=10,即将x/10,再将其结果赋值于x,等效于x=x/10.
#include<stdio.h>
int main()
{
int x;
int n=0;
scanf("%d",&x);
n++;
x/=10;//令x/10,再对x赋值结果
while(x>0){//重复运算,直到不符合x>0这个条件
n++;
x=x/10;//算术运算优先于赋值运算,先计算x/10,再将x=计算结果
}
printf("%d\n",n);
}
多路分支:switch case和else if
switch case的使用:直接跳到符合条件的case
#include<stdio.h>
int main()
{
int type;
scanf("%d",&type);
switch(type){
//()内输入控制表达式 (只能是整数值)
case 1://常量 可以是常数,也可以是常数的表达式如a,b
printf("你好");
break;//离开switch语句 ,若无break,将一直运行下一条指令,直到break离开。
case 2:
printf("早上好");
break;
default:
printf("这什么啊");
break;
}
return 0;
}
若没有break做结尾,则程序会一直运行下去,例如下面的a为1时,进入case1,输出hello,但是没有break做结尾,则接着输出world,直到遇到break才退出switch语句。
#include<stdio.h>
int main()
{
int a;
switch(a):
case 1:
printf("hello");
case 2:
printf("world");
break;
}
级联else if:一步一步地确认是否符合条件
#include<stdio.h>
int main()
{
int f;
int x=0;
scanf("%d",&x);
if(x<0){
f=-1;
}else if(x==0){
f=0;
}else if(x>5){
f=2*x;
}else{
f=3*x;
}
printf("%d\n",f);
return 0;
}
单双精度浮点数:
单精度浮点数最多有7位十进制有效数字,如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。float %f
双精度浮点数可以表示十进制的15或16位有效数字,超出的部分也会自动四舍五入。double %lf
#include<stdio.h>
int main()
{
printf("输入两个数字:");
double a;
double b;
scanf("%lf %lf",&a,&b);
printf("%f\n",a+b);
int F;
scanf("%d",&F);
}
if嵌套:
#include<stdio.h>
int main()
{
const int ready=24;
int code=0;
int count=0;
scanf("%d %d",&code,&count);
if(code==ready)
if(count<20)
printf("一切正常\n");
else//对应的是最近的if,若需要对应第一个if,需要一个大括号
printf("继续等待\n");
else//对应第一个if
printf("lalala");
return 0;
}
!!!以后的if语句都要加大括号,以便于观察
#include<stdio.h>
int main()
{
const int ready=24;
int code=0;
int count=0;
scanf("%d %d",&code,&count);
if(code==ready)
{
if(count<20){
printf("一切正常\n");
}else//对应的是最近的if,若需要对应第一个if,需要一个大括号
{
printf("继续等待\n");
}
} else//对应第一个if
printf("lalala");
return 0;
}
随机数:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand(time(0));
int a=rand()%100+1;// %100可以使a的取值在100以内,因为%100是除以100求余
//2,3,7条都是为了rand随机指令做准备
printf("%d\n",a);
return 0;
}