C语言-语句
1. 随机数
作用:随机获取一个数字
- 对应的头文件
stilib.h
time.h
- 相关函数
srand()
rand()
-
使用:
1、
设置随机数种子
,一个程序只需设置一次srand(time(NULL));
2、获取随机数
int 变量名 = rand();
-
获取指定范围的随机数
获取0~10的随机数srand(time(NULL));int 变量名 = rand() % 11;获取65~90的随机数srand(time(NULL));int 变量名 = rand() % 26 + 65;获取97~122的随机数srand(time(NULL));int 变量名 = rand() % 26 + 97;获取50~100的随机数srand(time(NULL));int 变量名 = rand() % 51 + 50;
例:获取0~10的随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main()
{//设置随机数种子srand(time(NULL));//获取随机数int num = rand();printf("num=%d\n", num);return 0;
}
2. 输入
作用:通过键盘等其他可输入设备给程序中输入数据
语法:
1、定义接收数据的变量int num = 0;
2、输入scanf("%d", &num);
例:
#include <stdio.h>int main()
{printf("请输入第一个数: \n");int num01 = 0;scanf("%d", &num01);printf("请输入第二个数: \n");int num02 = 0;scanf("%d", &num02);int sum = num01 + num02;printf("和为: %d\n", sum);return 0;
}
3. 分支语句
作用:判断
分类:
if
: 可以判断值相同,也可以判断区间
switch
: 只能判断值是否相同
3.1 if
3.1.1 基本 if 结构
-
语法:
if(条件表达式) {当条件表达式为真,执行此处代码 }
-
案例1:
键盘录入,判断是否成年
思路:
1、定义一个变量接收人的年龄
2、判断年龄是否大于等于18
3、如果年龄大于等于18显示已成年#include <stdio.h>int main() {printf("请输入您的年龄:\n");int age = 0;scanf("%d", &age);if(age >= 18){printf("你已经成年了,可以放开浪了!\n");}return 0; }
3.1.2 if…else…结构
-
语法:
if(条件表达式) {当条件表达式为真,执行此处代码 } else {当条件表达式为假,执行此处代码 }
-
案例2:
键盘录入,判断是否成年
思路:
1、定义一个变量接收人的年龄
2、判断年龄是否大于等于18
3、如果年龄大于等于18显示已成年,否则显示未成年#include <stdio.h>int main() {printf("请输入您的年龄:\n");int age = 0;scanf("%d", &age);if(age >= 18){printf("你已经成年了,可以放开浪了!\n");}else{printf("你还未成年,多喝奶快快长大!\n");}return 0; }
3.1.3 else if 结构
-
语法:
if(条件表达式1) {当条件表达式1为真,执行此处代码 } else if(条件表达式2) {当条件表达式2为真,执行此处代码 } ... else if(条件表达式n) {当条件表达式n为真,执行此处代码 } else {当以上条件都不为真,执行此处代码 }
注意:
1、
else if
可以有多个
,也可以一个没有
2、当多个条件同时满足时
,只执行最上面的一个
-
案例3:
去网吧上网
年龄大于150或小于0,报警
年龄60~150,显示老爷子回家逗孙子吧
年龄18~59,显示欢迎光临
年龄0~17,显示回家写作业去#include <stdio.h> int main() {printf("请输入您的年龄\n");int age;scanf("%d",&age);if(age > 150 || age < 0){printf("报警\n");}else if(60 <= age && age <= 150){printf("回家逗孙子吧\n");}else if(18 <= age && age < 60){printf("欢迎光临\n");}else{printf("回家写作业去吧\n");}return 0; }
注意:
- 0、NULL、false 都是 false
- **其他皆为 true **
3.1.4 if 嵌套
在 if 中使用 if
- 案例4:满100打8折,会员在打8折
#include <stdio.h>
int main()
{double money = 0;int isVip = 0;printf("请输入本次消费金额\n");scanf("%lf",&money);printf("请输入是否为会员(1:是会员,0不是会员)\n");scanf("%d",&isVip);if(money >= 100){double newMoney = money * 0.8;if(isVip){newMoney = newMoney * 0.8;}printf("本次应付:%.2f元,本次实付:%.2f元,本次优惠:%.2f元\n",money,newMoney,money-newMoney);}else{if(isVip){double newMoney = money * 0.8;printf("本次应付:%.2f元,本次实付:%.2f元,本次优惠:%.2f元\n",money,newMoney,money-newMoney);}else{printf("本次应付:%.2f元,本次实付:%.2f元,本次优惠:%.2f元\n",money,money,0);}}return 0;
}
3.2 switch
语法:switch(变量名){case 常量1:当变量值等于把常量1时执行此处代码break;case 常量2:当变量值等于把常量2时执行此处代码break;...case 常量n:当变量值等于把常量n时执行此处代码break;default:当变量不等于以上所有常量时,执行此处代码break;}
注意:1、case可以有多个, 也可以一个没有2、default可有可无, 最多只能有一个3、break跳出当前代码块, break可以不写,不写会导致贯穿4、不支持判断字符串内容是否相同
-
案例:
思路:
1、定义变量记录输入的月份
2、提示用户输入月份
3、等待用户输入月份
4、判断月份属于那个季节2,3,4 春 5,6,7,8,9 夏 10,11 秋 12,1 冬 #include <stdio.h> int main() {int month = 0;printf("请输入月份\n");scanf("%d",&month);switch(month){case 2:case 3:case 4:printf("春\n");break;case 5:case 6:case 7:case 8:case 9:printf("夏\n");break;case 10:case 11:printf("秋\n");break;case 12:case 1:printf("冬\n");break;default:printf("输入有误\n");break;} }
4. 循环语句
4.1 作用
**重复执行一段代码 **
4.2 分类
whiledo whilefor
4.3 while
语法:
while(条件表达式)
{循环体:重复执行的代码
}
执行流程:
- 先判断条件表达式是否为真,如果为真,执行循环体中的代码,
- 执行完毕后再此判断表达式是否为真,如果为真执行循环体中的代码,
- 如果为假结束循环。
注意:
死循环:无法停止的循环
案例1:
//打印1~100int i = 1;while(i <= 100){printf("%d\n",i);i++;}//打印100~1int i = 100;while(i >= 1){printf("%d\n",i);i--;}//打印100以内的偶数int i = 0;while(i <= 100){printf("%d\n",i);i = i + 2;}int i = 0;while(i <= 100){if(i % 2 == 0){printf("%d\n",i);} i++;}
4.3 do while
语法:
do
{循环体
}
while(条件表达式);
执行流程:
- 先执行一次循环体,
- 再判断条件表达式是否为真,如果为真,再次执行循环体,
- 如果为假结束循环
案例2:
#include <stdio.h>
int main()
{/*while(0){printf("while循环体执行了");}*/do{printf("do while\n");}while(0);printf("OVER\n");return 0;
}
面试题:
1、请问那个循环的循环体至少执行一次
do while
4.4 for
int i = 0; //初始化变量while(i < 10) //循环条件
{重复执行的代码 //循环体i++; //改变变量
}
语法:
for(表达式1;条件表达式2;表达式3)
{循环体4
}
解释:
- 表达式1: 初始化变量
- 条件表达式2: 循环条件
- 表达式3: 改变变量
执行流程:1,2,4,3,2,4,3 … 2
注意:表达式1只执行一次
案例3:
#include <stdio.h>
int main()
{for(int i = 0; i < 10; i++){printf("%d\n",i);}return 0;
}
5. 流程控制语句
break 跳出当前循环
continue 跳过本次循环
goto 跳转到指定位置(禁用)
案例1:break
#include <stdio.h>
int main()
{for(int i = 0; i < 10; i++){if(i == 5){// break跳出当前循环break;}printf("%d\n",i);}printf("OVER\n");return 0;
}//输出:0 1 2 3 4
案例2:continue
#include <stdio.h>
int main()
{for(int i = 0; i < 10; i++){if(i == 5){continue;}printf("%d\n",i);}printf("OVER\n");return 0;
}// 输出: 0 1 2 3 4 6 7 8 9
案例3:goto
#include <stdio.h>
int main()
{printf("11111\n");printf("22222\n");goto xxx;printf("33333\n");printf("44444\n");printf("55555\n");xxx:printf("66666\n");return 0;
}/*
输出:
11111
22222
66666
*/
6. 整数分解
- 一个整数是由1至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算
- 对一个整数做
%10
的操作,就得到它的个位
; - 对一个整数做
/10 % 10
的操作,就去掉了它的十位
; - 对一个整数做
/100 % 10
的操作,就去掉了它的百位
; - 依此类推。
- 对一个整数做
例:
键盘录入一个3位数,判断该数是否为水仙花数?
- 水仙花数为:
- 个位的立方+十位的立方+百位的立方 = 该数本身
#include <stdio.h> int main() {printf("请输入一个数: \n");int num = 0;scanf("%d", &num);int g = num % 10; // num / 1 % 10;int s = num / 10 % 10; // num / 10 % 10;int b = num / 100; // num / 100 % 10;if (g*g*g + s*s*s + b*b*b == num){printf("恭喜,你输入的 %d 是一个水仙花数!\n", num);}else{printf("这个数不是水仙花数! 再来一次?\n");}return 0; }