一 . 判断
1.1 做判断:if语句根据条件做还是不做
if(条件成立){
…
}
#include <stdio.h>
//hour2 > hour1
int main()
{
int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int ih = hour2 - hour1;
int im = minute2 - minute1;
if(im < 0)
{
im = 60 + im;
ih --;
}
printf("时间差是%d小时%d分钟。",ih,im);
return 0;
}
1.2 判断的条件:关系运算,作比较的运算符
注意其中有两个字符的运算符:==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。
#include <stdio.h>
int main()
{
printf("%d\n",5==3);//0
printf("%d\n",5>3); //1
printf("%d\n",5<=3);//0
printf("%d\n",7>=3+4);//1
}
当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0
关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,表示成立)或false(假,表示不成立)。当两个值的关系符合关系运算符的预期时,关系运算的结果为true,否则为false。
判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
6>5>4 结果是0
1.3 找零计算器:判断,注释,流程图
例1:
#include <stdio.h>
int main()
{
// 初始化
int price = 0;
int bill = 0;
// 读入金额和票面
printf("请输入金额:");
scanf("%d", &price);
printf("请输入票面:");
scanf("%d", &bill);
// 计算找零
if ( bill >= price ) {
printf("应该找您:%d\n", bill - price);
} else {
printf("你的钱不够\n");
}
return 0;
}
例2:
#include <stdio.h>
int main()
{
const int MINOR = 35;
int age = 0;
printf("请输入你的年龄: ");
scanf("%d", &age);
printf("你的年龄是%d岁。\n", age);
if ( age < MINOR ) {
printf("年轻是美好的,");
}
printf("年龄决定了你的精神世界,好好珍惜吧。\n");
return 0;
}
例3:
#include <stdio.h>
int main()
{
const double RATE = 8.25;
const int STANDARD = 40;
double pay = 0.0;
int hours;
printf("请输入工作的小时数:");
scanf("%d",&hours);
printf("\n");
if (hours > STANDARD)
pay = STANDARD * RATE + (hours - STANDARD) * (RATE * 1.5);
else
pay = hours * RATE;
printf("应付工资:%f\n",pay);
return 0;
}
例4:
#include <stdio.h>
int main()
{
const int PASS = 60;
int score;
printf("请输入成绩:");
scanf("%d",&score);
printf("你输入的成绩是%d \n",score);
if (score < PASS)
printf("不及格\n");
else{
printf("及格了\n");
printf("再见");
}
return 0;
}
例5:
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d", &a, &b, &c);
int max = 0;
if ( a>b ) {
if ( a>c ) {
max = a;
} else {
max = c;
}
} else {
if ( b>c ) {
max = b;
} else {
max = c;
}
}
printf("The max is %d\n", max);
return 0;
}
2.循环
if语句可以判断条件是否满足,满足时才做相应的动作,而循环语句可以在满足条件时,不断地重复执行一些动作。
重复执行的语句(循环语句)可以多次执行其他语句,它检查一个逻辑条件是否满足,只在满足的时候执行它的循环体。
while语句是一个循环语句,它会首先判断一个条件是否满足,如果条件满足,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号,就是循环体。
do-while循环和while循环很像,唯一的区别是我们在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。
2.1 while循环:
如果我们把while翻译作“当”,那么一个while循环的意思就是:当条件满足时,不断地重复循环体内的语句。
循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行;
条件成立是循环继续的条件。
#include <stdio.h>
int main()
{
int x;
int n = 0;
scanf("%d", &x);
if ( x>0 ) {
while ( x>0 ){
n++;
x /= 10;
}
}else{
n = 1;
}
printf("%d\n",n);
return 0;
}
测试程序常使用边界数据,如有效范围两端的数据、特殊的倍数等 --------个位数、10、0、负数
2.2 do while循环
do
{
<循环体语句>
}while(<循环条件>);
描述:在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环
do-while循环和while循环很像,区别是在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
int n = 0;
do
{
x /= 10;
n++;
} while ( x > 0 );
printf("%d\n",n);
return 0;
}
2.3 for循环
for(初始条件;条件;每轮的动作){
}
for中的每一个表达式都可以省略的
for(;条件;) == while(条件)
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int fact = 1;
int i = n;
// for (i = 1; i <= n; i++){
// fact *= i;
// }
for( ; n>1; n--){
fact *= n;
}
printf("%d!=%d\n",i,fact);
return 0;
}
for ( count= 10; count>0; count-- )
就读成:“对于一开始的count=10,当count>0时,重复做循环体,每-轮循环”在做完循环体内语句后,使得count–。
做求和的程序时,记录结果的变量应该初始化为0,而做求积的变量时,记录结果的变量应该初始化为1
如果有固定次数,用for
如果必须执行一次,用do_ while
其他情况用while