文章目录
运算符
运算符和表达式
运算符是表示某种运算规则的符号
常见的运算有:
赋值运算、算术运算
逻辑运算、关系运算、条件运算
位运算
表达式是由运算符及其所操作的数据(称操作数)组成的式子。表达式还可以是运算符的操作数。
运算符不仅表示某种运算规则,还有优先级和结合性的特征。
算术运算符和算术表达式
基本算术运算符: + - * / %(求余)
结合方向:从左向右
优先级: * / %,+ -
说明:
如果“/”两边都是整数,结果取整数部分
“%” 要求两侧均为整型数
示例:
计算并输出一个三位数的个位、十位和百位数字之和
分析:
该问题的核心是如何分解出各个位置的数
百位:整除100即可 表达式为:n/100
个位:模取10即可 表达式为:n%10
十位:将三位数去头(百位)或掐尾(个位),再整除或模取10即可 表达式为:n%100/10或n/10%10
应用:
#include <stdio.h>
int main()
{
int number = 153, b0 , b1 , b2 , sum ;
b2 = number / 100;
b0 = number % 10 ;
b1 = number %100 /10;
sum = b2 + b1 + b0 ;
printf("b2=%d,b1=%d,b0=%d, sum=%d\n",b2,b1,b0,sum);
return 0;
}
复合赋值运算符和复合赋值表达式
自增自减运算符
作用:使变量值加1或减1
种类:
- 前置
++i, --i
(先执行i=i+1或i=i-1,再使用i值) - 后置
i++,i--
(先使用i值,再执行i=i+1或i=i-1)
说明:
++ --
不能用于常量和表达式,如5++,(a+b)++
++ --
结合方向: 自右向左
优先级: ++ --,* / % ,+ -
示例代码:
#include <stdio.h>
int main()
{
int m1,m2,m3,m4;
int n=3;
printf( ”m1=%d , n=%d\n”, m1=n++ , n );
n=3;
printf( ”m2=%d , n=%d\n”, m2=n-- , n );
n=3;
printf( ”m3=%d , n=%d\n”, m3=++n , n );
n=3;
printf( ”m4=%d , n=%d\n”, m4=--n , n );
return 0 ;
}
符号常量
这里我们使用示例进行引入概念:
- 编程计算并输出半径 r = 5.3的圆周长和面积
分析:半径需要使用变量 r 存储,因此要定义该变量
实际代码为:
#include <stdio.h>
int main()
{
double r = 5.3 ;
printf ( ” Circumference = %f \n”, 2 * 3.1415926 * r ) ;
printf ( ” Circular area = %f \n”, 3.1415926 * r * r ) ;
return 0 ;
}
- 编程从键盘输入圆的半径,并输出圆周长和面积
分析:半径需要使用变量存储,定义变量 r 存储
实际代码为:
#include <stdio.h>
int main()
{
double r ;
scanf ( ” %lf ” , &r ) ;
printf ( ” Circumference = %f \n”, 2 * 3.1415926 * r ) ;
printf ( ” Circular area = %f \n”, 3.1415926 * r * r ) ;
return 0 ;
}
比较前两个例题,分析程序后我们发现,程序中出现的常量3.141592,会造成下列麻烦和问题:
- 很难保证不发生书写错误
- 常量需要改变时,如改为3.14,需要修改程序中所有的常量
- 过多使用字面常量,程序可读性变差
于是我们引入符号常量的概念。
宏常量与宏替换
宏定义:
#define 标识符 字符串
说明:
标识符,也称宏名、宏常量、符号常量
标识符与字符串之间必须有一个空格
标识符习惯上全部使用大写的单词命名
宏定义是编译预处理命令,不是C语句
宏替换:在编译阶段,将字符串替换标识符的过程。宏替换仅是字符串的简单替换,不进行数据类型的检查。
那我们再将方才的例题进行修改:
用宏常量实现计算圆周长和圆面积
下面是修改后的代码:
#include <stdio.h>
#define PI 3.141592
int main()
{
double r;
printf(”Input Radius:”);
scanf(”%lf” , &r );
printf(”Circumference = %f \n”, 2 * PI * r);
printf(”Circular area = %f \n”, PI * r * r);
return 0 ;
}
可以看到,我们用PI代替了3.141593,省略了输入数字的时间,并且即是后期需要修改数值,也不需要再一个个的进行修改。
逗号表达式
由逗号运算符“,”将多个表达式连接起来:
表达式1,表达式2,……表达式n;
逗号表达式的语法规则:
- 先计算表达式1,再计算表达式2,……再计算表达式n;
- 最后整个逗号表达式的结果取表达式n的值。
了解逗号表达式的语法规则。
#include <stdio.h>
main()
{
int a,b;
a=3*5,a*4;
b=(3*5,a*4);
printf("a=%d\nb=%d\n",a,b);
}
算术运算符优先于赋值运算符
赋值运算优先于逗号运算符
标准输入输出函数
字符输入输出
字符常量
字符常量是用单引号“’”括起来的单个字符,例如转义字符也是字符常量,是以反斜杠()开头的字符序列
单个字符输入输出函数
getchar()
: 从系统隐含指定的输入设备输入一个字符,按回车键表示输入结束
(注意:不含参数)putchar(x)
: 将一个字符输出到屏幕的当前光标位置
(注意:需要参数)
说明
字符数据在内存中是以其对应的ASCII码的二进制形式存储,与整型数据类似,只是所占内存空间不同。因此字符数据即可按字符型数据输出,也可按整型格式输出
示例:
编程从键盘输入一个大写字母,转换为小写字母输出
运行代码为:
#include <stdio.h>
int main()
{
char ch;
printf(”Press a key and then press Enter:”);
ch = getchar();
ch = ch + 32 ;
putchar( ch );
putchar( ’\n’ );
return 0 ;
}
数据的格式化屏幕输出
使用格式:
printf ( 格式控制字符串,输出值参数表 ) ;
细解:
printf()函数格式说明符(部分)用法表:
printf()函数格式修饰符用法表:
数据的格式化输入
使用格式:
scanf ( 格式控制字符串,参数地址表) ;
细解:
scanf()函数格式说明符(部分)用法表:
scanf()函数格式修饰符用法表:
数值型数据输入结束说明:
- 遇到空格符、回车符、制表符(Tab键)
- 达到输入域宽
- 遇到非法字符
- 除空格、回车、制表符之外的其他字符
- 如果是整型,小数点也是非法字符
由于C语言仅是过去的笔记,量很大,不做过度细节叙述。
转载烦请注明出处。如果您觉得对您有所帮助,麻烦点赞支持。