C语言复习笔记
注意!!!
- 换行符 : \n
- 整除 -> / ; 取余 % 保留3位小数 -> %.3f
- 切记赋值 = 相等 ==
- scanf(" ", & );
- 乘法运算时切记: 乘以用星号,不要省略
内容:
if—else 语句
if( ){
}
else if( ){
}
else{
}
for循环
for(i=0;i<n;i++){
}
switch语句
switch(表达式){
case 常量表达式1:语句段1;break;
case 常量表达式2:语句段2;break;
……
case 常量表达式n:语句段n;break;
default : 语句段n+1;break;
}
先求表达式,如果表达式的值与某个常量表达式的值相等,则跳到该变量表达式执行,如果都不相等,则执行default后的语句,最后break,跳出Switch语句。
或可以省略default,省略后如果都不相等则什么都不执行。
int a,b;
char ch;
scanf("%d %d %c",&a,&b,&ch);
switch(ch){
case '+':printf("=%d\n",a+b);break;
case '-':printf("=%d\n",a-b);break;
case '*':printf("=%d\n",a*b);break;
case '/':printf("=%d\n",a/b);break;
default:printf("don't know");break;
}
while循环
while(条件){
循环体;
}
首先判断条件,只要条件满足就一直循环 //可以将while看成if->条件成立,执行//
//不知道循环次数的话用while循环//
eg:
while(fabs(item) >=0){
i++;
}
do - while 语句
先循环一次,在判断条件是否继续循环。
do{
循环体;
}while(条件);
eg:
do{
sum += 1;
}while(sum<5);
字符型数据
-
字符型变量的定义: char ch;
-
字符型:%c
-
字符输入函数:ch=getchar( )
字符输出函数:ch=putchar( )
上述两个函数分别都只能输入或输出一个字符
eg 1:
//只作为理解 char ch; scanf("%f %f %c",&a,&b,&ch); if(ch=='+'){ printf("=%.3f\n",a+b); } else if(ch=='*'){ printf("=%.3f\n",a*b); } else if(ch=='-'){ printf("=%.3f\n",a-b); } else{ printf("=%.3f\n",a/b); }
if (ch == ‘+’ 注意:字符用’ ')
eg 2:
for(i=0;i<n;i++){ ch=getchar( ); //持续输入一个字符 putchar(ch); //输出 }
break 和 continue
-
break的两个用途:1. Switch语句的组成部分; 2. 跳出循环 //只能跳出当前循环,不能跳出多层循环。
eg: for(i=0;i<5;i++){ if(i=4){ printf("hello world"); break; } }
-
continue用法:continue 会跳过当前循环中的代码,强迫开始下一次循环。。//只有这一个用途
for(i=1;i<=10;i++) { if (i%5==0){ continue;//后面的语句也不执行了,重新开始循环 } printf("%d",i); }
continue图解 :
数学公式
求平方 :sqrt(x)
求绝对值:fabs(x)
幂函数 :pow(2,3) -> 二的三次方
逻辑运算符
与: a && b
或: a || b
非: a !b
ASCII 码
函数
-
声明
要在main函数前面or里面声明
double area(double x, double y, double z);
注意不能写成 double x,y,z;
-
定义
-
可以在声明后紧接着定义
-
也可以在main函数后面定义
double area(double x, double y, double z) // 函数首部 { double p,result; p= (x + y + z) / 2; result=sqrt(p * ( p - x ) * ( p - y ) * ( p - z )) ; return result; }
double area(double x, double y, double z); int main() { rerurn 0; } double area(double x, double y, double z) // 函数首部 { double p,result; p= (x + y + z) / 2; result=sqrt(p * ( p - x ) * ( p - y ) * ( p - z ) ) ; return result; }
-
-
调用
int main()
{
s=area(1,2,3);
return 0;
}
-
不返回结果的函数 (void)
-
注意void不能省略,否则被默认定义为int
-
不返回结果的函数,在定义、调用、参数传递、函数声明上,思路完全与以前相同,只是函数类型变为void。
-
局部变量和全局变量
-
局部变量:
- 在函数内定义的变量(包括形参) 作用范围:本函数内部
- 定义在复合语句内的变量 作用范围:复合语句内部的变量
-
全局变量:
- 在函数以外定义的变量,不属于任何函数。作用范围:从定义处到源文件结束(包括各函数)
// 全局变量可以解决多返回值问题
注意:若局部变量与全局变量同名,局部变量优先
(将变量比作抗生素,要对症下药,不要什么都用最强的抗生素药(全局变量),一般,尽量使用局部变量和函数参数。)
-
静态局部变量(static)
-
生存周期直到程序结束
-
上一次的函数调用后的值仍保留,供本次调用继续使用。
作用范围:复合语句内部的变量
-
-
全局变量:
- 在函数以外定义的变量,不属于任何函数。作用范围:从定义处到源文件结束(包括各函数)
// 全局变量可以解决多返回值问题
注意:若局部变量与全局变量同名,局部变量优先
(将变量比作抗生素,要对症下药,不要什么都用最强的抗生素药(全局变量),一般,尽量使用局部变量和函数参数。)
- 静态局部变量(static)
- 生存周期直到程序结束
- 上一次的函数调用后的值仍保留,供本次调用继续使用。