三、循环与判断
@if语句:根据比较的结果,决定做、还是不做某些动作,就要用到if语句。一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果为true,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续执行下面的其他语句。
@计算机的判断:计算机的智能是建筑在规则的基础上的,在遇到情况的时候,根据事先制定的规则做出判断,是计算机最基本的能力。能做判断的基础,是能对数据做比较,比较就是关于两个数据是否相等、谁大谁小的结论,这需要用到关系运算:对两个数据之间的关系的运算。
C语言提供了六个关系运算符:
· == 相等
· != 不相等
· > 大于
· >= 大于或等于
· < 小于
· <= 小于或等于
注意其中含有两个字符的运算符:==、!=、>=、<=中的两个字符必须紧紧连在一起,中间不能插入空格。关系运算的结果是一个逻辑值,逻辑值只有两种个能的值:true或1(真,表示成立)或flase或0(假,表示不成立)。当两个值的关系符合关系运算符的预期时,
关系运算的结果为true,否则为flase。
@关系运算符的优先级:所有关系运算符的优先级都比算术运算的优先级低,但是比赋值运算的优先级高。判断是否相等的运算符==和!=的优先级比其他的关系运算符都低。
而连续的关系运算是从左到右进行的。
@找零计算器:它需要用户做两个操作,其一输入购买的金额,输入支付的票面,而找零计算器则根据用户的输入做出相应的动作:计算并打印找零,或告知用户当前余额不足以购买。
找零计算器代码:
#include <stdio.h> int main() { // 初始化 float price = 0; float bill = 0; // 读入金额和票面 printf("请输入金额:"); scanf("%f", &price); printf("\n"); printf("请输入票面:"); scanf("%f", &bill); //计算找零 printf("应该找您:%f\n", bill-price); return 0; }
@比较两个数的大小
#include <stdio.h> int main() { int a, b, max; printf("Please input two numbers that are different: \n"); scanf("%d %d", &a, &b); max=b; if(a>b) max=a; printf("The bigger one is %d.\n", max); return 0; }
@if语句可以判断条件是否满足,满足时才做相应的动作,而循环语句可以在满足条件时,不断地重复执行一些动作。循环语句可以多次执行其他语句,它检查一个逻辑条件是否满足,只在循环满足的时候执行它的循环体。
@while语句是一个循环语句,他会首先判断一个条件是否满足,如果满足条件,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号就是循环体。
@do-while和while循环很像,唯一的区别是do-while循环在循环体执行结束的时候才会判断条件。也就是说,循环体至少会执行一遍,然后再来判断条件。与while相同的是,条件满足时执行循环,条件不满足时结束循环。
@判断一个数的位数 在C语言中long long型的输入输出格式是 %I64d 或 %lld。有时需要在特定的环境中,根据所给规则使用其中一种。
#include <stdio.h> int main() { long long num; int c=0; scanf("%lld", &num); while(num!=0) { ++c; num/=10; } printf("%d\n", c); return 0; }
@如果我们把while翻译作“当”,那么一个while循环的意思就是:当条件满足时,不断地重复循环体内的语句。
@循环执行之前,判断是否继续循环,所以有可能循环一次也没有被执行。
@条件成立是循环继续的条件。
@do-while循环,在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,在来检查循环体的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环。do-while语句最后while();一定要有分号!
@for循环,像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而没执行一轮循环,计数器值以一定步进进行调整。例如:
#include <stdio.h> int main() { int n=100; int i; for(i=1; i<=n; i*=2) printf("i=%d\n",i); return 0; }
@在做求和程序时,记录结果的变量应该初始化为0,而做求积的程序时,记录结果的变量应该初始化为1。
@将for循环的控制变量声明放在条件判断的圆括号里,只有在C99标准里才能行。否则编译出错!下面的例子为非C99环境,例如:
int i; for(i=1; i<=n; i*=2) //这种是对的 for(int i=1; i<=n; i*=2) //这种是不对的
@for循环的条件判断里的三个语句可以没有其中任意一个!例如:
#include <stdio.h> int main() { int n; scanf("%d",&n); int i=n; int fact=1; for(; n>1; --n) fact*=n; printf("%d!=%d.\n",i, fact); return 0; }
@for循环的格式:for(初始动作;条件;每轮的动作){}。for(;条件;)==while(条件)。