一.顺序语句,选择语句,循环语句
1.选择语句
根据条件判断是否执行相关语句
int main()
{
float w;//weight
printf("please input your weight");
scanf_s("%f", &w);
if (w > 100)
{
printf(" please eat less");
}
else
{
printf("please eat more");
}
}
- switch case语句,没有break时就会依次执行 switch只可以部分的替代if else 语句
#include<stdio.h>
int main()
{
char grade = '#';
printf("input grade :(A B C D E):"); // a
scanf_s("%c", &grade);
switch (grade)
{
case 'A':
case 'a':
printf(" 100 - 90 \n");
break; //
//case 97:
/// break;
case 'B':
case 'b': // case 1:
printf(" 89 - 80 \n");
break;
case 'C':
case 'c':
printf(" 79 - 70 \n");
break;
case 'D':
case 'd':
printf(" 69 - 60 \n");
break;
case 'E':
case 'e':
printf(" < 60 \n");
break;
default:
printf("char error \n");
break;
}
return 0;
}
- 注意点
'a'字符常量=>97
"a"字符串常量
case 'a'://不支持字符串,case后面只可可以是整形常量,switch里面的语句不可以重复
case "A":
2. 顺序语句
按照语句出现的先后顺序依次执行
int main()
{
printf("迷失的人会再迷失\n");
printf("相逢的人会再相逢\n");
return 0;
}
3. 循环语句
//三种循环方式
while()
{
}
for( ; ; )
{
}
do
{
}
while();
//无限循环语句:
while(1)
{
}
//输出1-100的和
void main()
{
int i = 1;
int sum=0;
while (i <= 100)
{
sum += i;
i+=1;
}
printf("sum=%d\ni=%d\n", sum,i);
//sum=0;
for (i = 1; i <= 100; ++i)
{
sum += i;
//这个里面的sum的值是while循环里面的那个sum?是的
//如果不想是上面那个的话,可以直接给sum=0
}
printf("sum=%d\ni=%d\n", sum, i);
do
{
sum += i;//这里面呢?这里面
i += 1;
} while (i <= 100);
printf("sum=%d\ni=%d\n", sum, i);
}
- for循环里面的注意点:
for循环中, 式子1中的值只在其定义域内有效
for ((1); (2); (3));
三个里面的都可以省略
for循环的死循环最厉害,其他的
while (1)
{
}
do {
} while (1);
都没这个厉害
4.分支语句
先判断,后选择,选分支,很靠谱
1.单分支语句
2.多分枝语句
一对花括号,就是一个代码块.
例题:
求三个数中的最大的数的五种方法:
当两个数比较大小时,将双分支改成单分支,只需将原先的数值先赋值给max,进行一次比较
//法一:
#include<stdio.h>
int main()
{
int a, b, c,m;
scanf_s("%d %d %d", &a, &b, &c);
m = (a > b ? a : b) > c ? (a > b ? a : b) : c;
printf("三者中最大的数是:%d", m);
return 0;
}
//法二:
#include<stdio.h>
int main()
{
int a, b, c;
int m = 0;
scanf_s("%d %d %d", &a, &b, &c);
if (a > b && a > c)
{
m = a;
}
else if(b>a&&b>c)
{
m = b;
}
else if (c > a && c > b)
{
m = c;
}
printf("%d", m);
return 0;
}
//法三:利用中间变量存储最大值
#include<stdio.h>
int main()
{
int a, b, c;
scanf_s("%d %d %d", &a, &b, &c);
int t = 0;
if (a > b)
t = a;
else
t = b;
if (c > t)
t = c;
printf("%d", c);
return 0;
}
//法四:改进法三利用A存储最大值
#include<stdio.h>
int main()
{
int a, b, c;
scanf_s("%d %d %d", &a, &b, &c);
if (a < b)
a = b;
if (a < c)
a = c;
printf("%d", a);
return 0;
}
//法五:利用函数
#include<stdio.h>
int judge(int a, int b)
{
return(a > b) ? a : b;
}
int main()
{
int a, b, c;
scanf_s("%d %d %d", &a, &b, &c);
int m = judge(judge(a, b), c);
printf("%d", m);
return 0;
}
//法六:冒泡排序法,比较三次,防止出现213型
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int t = 0;
scanf_s("%d %d %d", &a, &b, &c);
if (a > b)
{
t = a;
a = b;
b = t;
}
else if (b > c)
{
t = c;
b = c;
c = t;
}
else if (a > b)
{
t = a;
a = b;
b = t;
}
printf("%d", b);
return 0;
}
5.三目运算符
格式 : <表达式一> ? <表达式二> : <表达式三>
示例: (a>b)?a:b;//a,b两个值比较大小
二.bool类型
1.bool只有true和false,在c语言中的三种假分别是:空指针NULL /0/false
2.在使用时.c文件要加头文件#include<stdbool.h> ;
在.cpp文件中直接使用
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef int BOOL;//注意这里的BOOL,TRUE,FALSE是大写呀
#define TRUE 1
#define FALSE 0
int main()
{
bool x = true;
printf("%d", x);
return 0;
}
3.关系表达式
错误示范
int d=a<b<c;
改正:
做比较时,应该是:b>a&&b<c
数学语言与C语言:类型,边界,公式转化成C语言
4.运算符 &&(左) ||(左) !(右)
简洁与或
a&&b//左结合,当a=0时,判断到a就不往后进行
0 0
0 1
1 0
1 1
三.常见语句
1.空语句 定义 : 语句可以为空,就是除了末尾处的分号以外什么符号都没有
int i,j;
i=12; ; j=13;
空语句所带来的问题:
2.跳转语句 break ,continue, goto,return
-
break只能跳出一层循环
-
continue 结束的只是本次循环 break
continue直接向(3)走,如果(3)里面没有合适的值,那么就会出现死循环 for ((1); (2); (3));
-
goto语句,最好向下跳,向上跳容易产生代码的二义性,只能在一个函数内部跳,
-
return 一旦执行,后面的都不执行,从当前函数退出 exit 都是退出 区别: exit结束进程, return 结束当前函数