逻辑语句
双分支结构: if / else 语句
格式:
if (条件)
{
code1;
}
else
{
code2;
}
语法含义:
判断condition条件是否成立。
如果条件为真:执行code1的代码;
如果条件为假:执行code2的代码。
#include <stdio.h>
int main()
{
// 1.定义一个变量,用来记录身高
int height = 0;
printf("please input your height >> ");
scanf("%d", &height);
// 2.判断身高
if (height >= 120)
{
puts("成年人,还想逃票?");
}
else
{
printf("小朋友去动物园不需要买票!\n");
}
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
char ch = 0;
ch = getchar();
if(ch >= 'A' && ch <= 'Z')
{
printf("ch = %c\n",ch + 32);
}
else
{
printf("ch = %c\n",ch - 32);
}
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int ba = 0;
int seat = 0;
printf("请输入你的余额:");
scanf("%d",&ba);
if(ba>2)
{
printf("乘客请上车。\n");
printf("是否有座位:");
scanf("%d",&seat);
if(seat == 1)
{
printf("好好坐好,享受旅程!\n");
}
else
{
printf("还是站好吧!\n");
}
}
else
{
printf("您该充值了。\n");
}
return 0;
}
多分支:if else
当判断条件不止一个,就用if ...else.... if....else....。
格式:
if(condition1)
{
code1;
}
else if(condition2)
{
code2;
}
''''''
else if(condition N)
{
codeN;
}
else
{
code;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int score = 0;
printf("please input your score >>");
scanf("%d",&score);
if(85 <= score && score <= 100)
{
putchar(65);
}
else if(75 <= score && score < 85)
{
putchar(66);
}
else if(60 <= score && score < 75)
{
putchar(67);
}
else
{
putchar(68);
}
putchar(10);
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 0,b = 0,c = 0;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if((a+b)>c && (a+c)>b && (b+c)>a)
{
if(a == b && a == c)
{
printf("等边三角形\n");
}
else if(a==b || a==c || b==c)
{
printf("等腰三角形。\n");
}
else if(((a*a + b*b) == c*c)||((b*b + c*c) == a*a) || ((a*a + c*c) == b*b))
{
printf("直角三角形\n");
}
else
{
printf("普通三角形\n");
}
}
else
{
printf("不是三角形。\n");
}
return 0;
}
多分支语句:switch ....case....
itch...case....运行速度 > if .... else if .... else ,能使用switch...case.... 尽量使用switch....case....
switch..case格式:
switch (表达式)
{
case 常量/常量表达式1:
代码块;
break;
case 常量/常量表达式2:
代码块;
break;
.....
default:
其他分支结构;
break;
}
注意:
<1>. switch 后面的表达式,可以是变量,也可以是一个完整的表达式.
一般这个结果都是一个整数.不可以是 float/double浮点数据.
<2>. case 后面的内容一定是一个常量.case后面的表达式内容就是switch表达式
可能出现的结果.
case 对于 语句来说,属于入口.
<3>. break 相当于 switch..case语句中的出口, 如果没有break, case进入之后
就会一直执行, 直到遇见break 或者 switch case这个语句结束. (case击穿)
<4>. default语句: default分支相当于 if..else 语句中的else部分.
defalult无论在switch..case当中的那一个位置,都是最后进行判断的.
default如果不写 break 也会发生case击穿.
#include <stdio.h>
int main(int argc, const char *argv[])
{
int score = 0;
printf("please input your score >>");
scanf("%d",&score);
switch(score / 10)//根据十位数字分班
{
case 10:
case 9:
case 8:
putchar('A');
break; //case击穿
case 7:
putchar('B');
break;
case 6:
putchar('C');
break;
default: //相当于if...else...的else
//无论在哪个位置,都是最后一个执行
//如果放在前面,不写break也会击穿。
putchar('D');
break;
}
putchar(10);
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int year = 0,mouth = 0;
scanf("%d%d",&year,&mouth);
switch(mouth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31天\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("30天\n");
break;
case 2:
if((((year%4) == 0)&&((year%100 )!= 0))||((year%400)==0))
{
printf("28天\n");
}
else
{
printf("29天\n");
}
break;
default:
printf("出错\n");
break;
}
return 0;
}
循环语句
c语言的循环:一直循环做某事,直到条件不允许为止。
循环语句格式:
-
- while 循环
- do ... while ... 循环
- for 循环
while循环
while(condition)
{
code;
}
判断condition条件是否成立,成立就执行code直到不满足条件。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int number = 0,i = 0;
while(i < 100)
{
i++;
number = number + i;
}
printf("sum = %d\n",number);
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 0;
while(i < 99)
{
i++;
if((i % 7) == 0)
{
printf("过! \n");
}
else if((i % 10) == 7)
{
printf("过! \n");
}
else if((1 / 10) == 7)
{
printf("过! \n");
}
else
{
printf("%d \n",i);
}
}
putchar(10);
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned int number = 0;
int i = 0;
int count_0 = 0;
int count_1 = 0;
scanf("%d",&number);
while(i < 32)
{
if((number & 0b1) == 0)
{
count_0++;
}
else
{
count_1++;
}
number = number>>1;
i++;
}
printf("count_0 = %d,count_1 = %d\n",count_0,count_1);
return 0;
}
int main(int argc, const char *argv[])
{
int i = 100;
while(i <= 999)
{
int a = i%10;
int b = i/10%10;
int c = i/100;
if(((a*a*a)+(b*b*b)+(c*c*c))==i)
{
printf("水仙花数字%d\n",i);
}
i++;
}
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 1;
int b = 1;
int i = 2;
int c = 0;
printf("%d %d ",a,b);
while(i < 20)
{
c = a + b;
printf("%d ",c);
a = b;
b = c;
i++;
}
putchar(10);
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int line = 1;
int j = 1;
while(line <= 5)
{
while(j <= line)
{
printf("*");
j++;
}
printf("\n");
line++;
j = 1;
}
return 0;
}
for循环
for 循环也是C语言中循环语句的一种. for 循环的使用场景与while使用的场景是一样的. 但是他们之间的格式有些不一样的.
// while 循环: int i = 0 初始条件 condition i++ 条件改变语句.
for 循环将循环相关的内容存放同一行中:
格式:
for(表达式1; 表达式2; 表达式3)
{
code; // 循环体.
}
for循环执行逻辑:
<1>. 先执行表达式1; (表达式1里面的内容就是 while循环中的初始条件. eg int i = 0)
<2>. 执行表达式2(判断条件);
a. 判断条件为真: 执行循环体,执行表达式3(条件改变语句 i++), 重复步骤2直到不满足条件为止.
b. 判断条件为假: 跳出循环.
#include <stdio.h>
int main()
{
// 1.target: 使用for循环向女朋友道歉;
/*
int i = 0;
while (i < 100)
{
printf("i am so sorry\n");
i++;
}
*/
for(int i = 0; i < 100; i++)
{
printf("对不起, 我错了, 我再也不敢了\n");
}
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num = 0;
int a = 1,b = 1,c = 0;
scanf("%d",&num);
for(int i = 1;c < num ; i++)
{
c = a + b;
a = b;
b = c;
printf("c = %d\n",c);
}
if(c == num)
{
printf("%d 是斐波那契数字。\n",num);
}
else
{
printf("%d 不是斐波那契数字。\n",num);
}
return 0;
}
#include <stdio.h>
int main(int argc, const char *argv[])
{
for(int i = 0;i < 5; i++)
{
for(int j = 0;j < 5-i-1; j++)
{
printf(" ");
}
for(int k = 0 ; k <= i; k++)
{
printf("*");
}
putchar(10);
}
return 0;
}