标签:
(运算符、算数运算符、关系运算符、逻辑运算符、三目运算符、ASXLL码)
概念:是编译程序执行特定的算术或逻辑操作的符号;
分类:算术运算符、 关系运算符、逻辑运算符、按位运算符。
按照运算操作数分为:
运算遵循规则:数学的运算规则,先看优先级,再看结合律(从左到右【赋值运算为从右往左x=y=z】);
“ + ”加法运算符 “ - ”减法运算符 “ * ” 乘法运算符 “ / ”除法运算符 “ % ” 取余运算符.
概念:把“=”号右面的值赋值给左边的变量;
注意:等号的左边一定是变量;
复合赋值运算符:+=, -=, *=, /=, %=;
概念:让连接的操作数自身的值+1或者-1
概念:计算常量、变量、数据类型在我们内存中占用的字节数;
“ == ” “ > ” “ < ” “ >= ” “ <= ” “!=”
用法:对数据进行比较,看是否成立,条件成立=真(1),条件不成立=假(0).
int b=1!=2>3<4; 等效于:2>3为假=0. 0<4为真=1, 1!=1为假=0.所以最终结果=0;
“ ||”或 “ && ”与 “ ! ”非
用法:对于多个表达式进行并列真假判断
注意:
<真假判断表达式1>?<表达式2>:<表达式3>;
如: 1+2>4?2+2:3+4; 这个运算过程为:1+2=3, 3>4为假.则运行3+4这个表达式.所以最终结果为7.
概念:美国标准信息交换码
字符运算会自动转换成ASCLL表对应的值:
‘a’-‘b’ =( 97-98)
常用:
(顺序结构、选择结构--if/swich、循环结构--do...while/for)
是指编程中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作其中的一个
--当程序执行的过程中有多个选择时使用
格式:
1.if(表达式){
语句块;
}
2.if(表达式1){
语句块1;
}else if(表达式2){
语句块2;
}else{
语句块3;
}
等等............
注意:
--同if一样也用于条件判断,当表达式的结果有多种情况时用switch比较方便
格式:
switch(表达式){ --->表达式:返回值是整型
case 常量1: 语句1; --->常量必须是整型
break;
case 常量n; 语句n; --->语句中定义变量会造成作用于紊乱:(int a=10)错!
break;
default: 语句n;
如果上面条件都不满足执行default;
}
注意:
概念:
break和continue语句都可以用在循环中,用来跳出循环(结束循环);
break语句还可以用 在switch语句中,用来跳出switch语句。
注意:
// if(表达式)else{ ...... break;......}
1)break语句对if-else的条件语句不起作用;
2)在多层循环中,一个break语句只向外跳一层。
3)continue表示跳过本次循环,而不是跳出循环体;
概念:
是指编程循环语句,当满足条件时进入循环,循环判断,直到不满足条件跳出循环,根据条件反复执行一段代码的时候用
格式:
while (条件) { ---先判断再执行:条件为真执行代码块,条件为假不执行;
语句块;
}
注意:
int num = 3;
while (3 == num) {
printf("num = %d\n",num);
num++;
}
1、通常把常量写在前面
2、while 后如果只有一条语句它可以省略大括号
3、while小阔号后面不可以直接写分号(没有意义)
4、作用域:内部代码块中定义的变量不可以在外边代码块中访问
5、作用域紊乱:while (1 < 3) int num = 5;
6、最简单死循环(条件一直为真,循环无法结束):while (1);
格式:
do{
语句块;
} while(条件);
特点:与while相比,先执行后判断,至少会执行一次语句块;
格式:
for(表达式1 ;表达式2 ;表达式3 ){ ---3个语句,2个分号隔开。
语句块4;
}
执行过程:
1—>2—>4—>3—>2—>4—>3......
表达式1:循环变量初赋值,开始前执行,只执行一次;
表达式2:循环条件,为真,就执行语句块4的代码。为假,循环结束;
表达式3:循环变量增值:每次执行完毕后执行;
注意:
1.for(int a=0;a<5;a++){
语句块1;
for(int b=0;b<10;b++){
语句块2;
}
}
核心:
案例1:(while)
1 思路:
2 1)接收用户输入的字符串
3 2)判断用户是不是敲了回车键
4 //定义字符变量接收字符
5 char ch;
6 //定义一个计数器变量,用于保存字符的个数
7 int count=0;
8 //接收用户输入的字符串的第一个字符
9 scanf("%c",&ch);
10 //通过循环依次获取输入缓冲区的其他字符
11 //ch = ‘\n‘ 判断取到的字符是否是换行符
12 //此处如果是换行符,表示用户输入结束
13 while (ch!=‘\n‘) {
14 //计数器+1
15 count++;
16 //再次获取输入缓冲区的下一个字符 scanf("%c",&ch);
17 }
18 }
19 //打印计数器的值 printf("count = %d\n",count);
案例2:(while,switch)
1 思路:
2
3 1)一直循环等待用户输入
4
5 2)输入四个字符,打印对应的方向
6
7 switch
8
9 //定义变量存储用户输入的内容
10
11 char ch;
12
13 //定义标志,0-正常,1-退出
14 int flag=0;
15 printf("请控制小人移动:w.上 s.下 a.左 d.右 q.退出\n");
16
17 while (!flag) {
18
19 scanf("%c",&ch); switch (ch) {
20
21 //判断用户输入了大写和小写的w的情况
22
23 case ‘w‘:
24 case ‘W‘:
25
26 printf("上\n");
27
28 break;
29
30 //判断用户输入了大写和小写的s的情况
31
32 case ‘s‘:
33
34
35 case ‘S‘:
36
37 printf("下\n");
38
39 break;
40
41 //判断用户输入了大写和小写的a的情况
42
43 case ‘a‘:
44 case ‘A‘:
45
46 printf("左\n");
47
48 break;
49
50 //判断用户输入了大写和小写的d的情况
51
52 case ‘d‘:
53 case ‘D‘:
54
55 printf("右\n");
56
57 break;
58
59 case ‘q‘:
60
61 case ‘Q‘:
62
63 printf("已退出\n");
64
65 flag = 1;
66 break;
67
68 } }
案例3:(if...else,while)
1 思路
2 //1、定义变量,保存玩家竞猜的数字和电脑随机产生的数字
3 //2、让电脑随机产生一个1-1000之间的数
4 /*
5 难点:如何产生1-1000的数?
6 arc4random_uniform(1000) 产生的是 0-999之间的整数
7 arc4random_uniform(1001) 产生的是 0-1000之间的整数,
8 我们要求的是1-1000,所以不符合
9 arc4random_uniform(1000)+1 产生的是:0(+1)-999(+1),是 1-1000之间的数
10 得出结论: 要产生m,n之间的随机数公式
11 arc4random_uniform(n-m+1)+m
12 如产生 10-50之间的随机数
13 arc4random_uniform(50-10+1)+10;
14 1-1000之间的随机数
15 arc4random_uniform(1000-1+1)+1
16 */
17 //3、通过循环控制,让用户最多可以竞猜10次
18 // 判断如果竞猜的数字>随机产生的数??示猜大了
19 // <随机产生的数 ??示 猜小了
20 // ==随机产生的数 ??示 猜对了, 如果猜对了,循环则要停止,游戏结束
21
22 //代码实现
23 int main() {
24 //定义变量
25 int inputNum=-1,randomNum=-1,m=1,n=1000;
26 int flag=1;
27 int oldNum=0;//用于保存上一次竞猜的值
28 int count=1;
29 int totalCount = 10;
30 //设定游戏总次数
31 //产生一个随机数
32 // 10-50
33 // m,n之间的随机数
34 // arc4random_uniform(n-m+1)+m;
35 randomNum = arc4random_uniform(n-m)+m;
36 //循环竞猜
37 printf("%d\n",randomNum);
38 while (flag) {
39 if (count<=totalCount) {
40 //??示用户输入一个数字 printf("\n请竞猜[%d,%d]之间的一个数字,%d次机会:\n",m,n,totalCount);
41 scanf("%d",&inputNum);
42 // 判断如果竞猜的数字>随机产生的数??示猜大了
43 if (inputNum > randomNum) {
44 printf("上次竞猜:%d,本次竞猜:%d \n竞猜结果:猜大了!\n剩余次数:%d \n",oldNum,inputNum,totalCount-count);
45 }else if (inputNum < randomNum){
46 // <随机产生的数 ??示 猜小了
47 printf("\n上次竞猜:%d,本次竞猜:%d \n竞猜结果:猜小了!\n剩余次数:%d
48 \n",oldNum,inputNum,totalCount-count);
49 }else{
50 // ==随机产生的数 ??示 猜对了,如果猜对了,循环则要停止,游戏结束
51 printf("\n上次竞猜:%d,本次竞猜:%d \n竞猜结果:猜对了!\n",oldNum,inputNum); printf("本次竞猜结束!\n");
52 flag = 0;
53 }
54 //竞猜后,让本次的值保存到oldNum中 oldNum = inputNum;
55 //计数器增加
56 count++;
57 }else{
58 printf("%d次都没有猜对,你的智商不适合玩这个游戏!\n",totalCount);
59 //让程序退出
60 flag = 0;
61 }
62 }
63 return 0; }
案例4:双层for循环打印图形
1 /*
2 使用循环打印三角形
3 ---*
4 --***
5 -*****
6 *******
7 */
8 #include<stdio.h>
9 int main(){
10 for (int a=0; a<4; a++) {
11 for (int b=0; b<a+4; b++) {
12 if(b<3-a){printf(" ");
13 }else
14 printf("o");
15 }
16 printf("\n");
17 }
18 return 0;
19 }
标签:
原文地址:http://www.cnblogs.com/lk-ios/p/5010964.html