格式化输入输出
'a' 字符常量 “a”字符串常量(即是 ‘a\0’)
定义字符串:char *b="hello world"
占位符
%s 打印字符串 遇到 \0停止
%-xd (x为常数字) 输出:左对齐 一共x位
%xd 右对齐 输入:则表示接收x位
getchar输入:
{char ch;
ch = getchar;
//输入量使变量等于该量}
putchar输出:
{char ch='c';
putchar(ch);
// 输出变量ch所定义的字符c
//或者直接putchar(’c‘)
putchar(97 / "\n")
//可以输出变量,字符,数字,转义字符}
运算符
自增自减:
++a:前自增(先自增,再运行表达式) a=2; b=++a; 则a=3; b=3
a++:后自增(先运行表达式,再自增) a=2; b=a++; 则a=3; b=2
{ int a=10,b,c=10,d;
d=++c*10;
printf(" d=%d \n c=%d",d,c) ;
//先运行a=a+1,再运行c=a*10,
b=a++*10;
printf(" b=%d \n a=%d\n",b,a) ;
//先运行b=a*10,再运行a=a+1 }
b=a++*10;
printf(" b=%d \n a=%d\n",b,a) ;
//先运行b=a*10,再运行a=a+1 }
简单写法:a=a 运算符 x 可以写成 a 运算符 =x
比较运算符:
1表示真,0表示假
!是非
所有的非零值都是真值:
a不等于0;!a为0;!!a为1
优先级:
1:【】 ()
2:- ++ -- & ! (右到左)
3:/ * %
4:+ -
6:> >= < <=
7:== !=
11:&&
12:||
14:=赋值 /=除后赋
类型转换
自动转换:遵循一定规则,由编译系统自行完成
强制类型转换:把表达式的运算结果强制转换为所需的数据类型
运算符:(类型)
优先级为2 小于()
高: double ← float
↑
long
↑
unsigned int
↑
低 signed int ← char,short
float p=3.14;
int b=2;
int sum = (int)p*b; //p由float变为int
printf("%d\n",sum); //输出为6
程序流程结构
选择结构: if 和 switch
if(条件)
{
语句
}
else if(条件)
{
语句
}
else 语句;
三目运算符 ? :
表达式1 ?表达式2 :表达式3
双比较
int a=10 , b=20 , c;
c=a>b?a:b; //判断a>b,若真为a,假为b
printf("%d\n",c);//c=20
三比较
int a=10, b=20, c;
c=a>b?(a>c;?a:c):(b>c?b:c);
printf("%d\n",c);
定义
include <stdio.h>
#define Max(a,b) (a)>(b)?(a):(b) \\定义表达式
{
int a=10,b=20;
printf("%d\n",Max(a,b));
}
switch:
switch(score/10) \\条件
{
case 10:
printf("优秀\n"); \\语句
break; \\防止继续运行下列程序
case 9:
print("良好\n");
break;
case 8:
printf("良好\n");
break;
default: \\其他情况:
printf("不及格\n");
break;
}
执行效率高,但是不允许嵌套。
while循环:
while(i<10) \\进入循环的条件 可只为变量,判断为真才进入循环
{
printf("%d\n",i); \\循环执行语句
i++;
while
}
do{
printf("%d\n",i);
i++;
}while(i<10); \\继续循环的条件 可只为变量,判断为真才继续循环