作用:随机获取一个数字
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
#include
#include
int main()
{
//设置随机数种子
srand(time(NULL));
//获取随机数
int num = rand();
printf("num=%d\n", num);
return 0;
}
作用:通过键盘等其他可输入设备给程序中输入数据
语法:
1、定义接收数据的变量
int num = 0;
2、输入
scanf("%d", &num);
例:
#include
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;
}
作用:判断
分类:
if
: 可以判断值相同,也可以判断区间
switch
: 只能判断值是否相同
语法:
if(条件表达式)
{
当条件表达式为真,执行此处代码
}
案例1:
键盘录入,判断是否成年
思路:
1、定义一个变量接收人的年龄
2、判断年龄是否大于等于18
3、如果年龄大于等于18显示已成年
#include
int main()
{
printf("请输入您的年龄:\n");
int age = 0;
scanf("%d", &age);
if(age >= 18)
{
printf("你已经成年了,可以放开浪了!\n");
}
return 0;
}
语法:
if(条件表达式)
{
当条件表达式为真,执行此处代码
}
else
{
当条件表达式为假,执行此处代码
}
案例2:
键盘录入,判断是否成年
思路:
1、定义一个变量接收人的年龄
2、判断年龄是否大于等于18
3、如果年龄大于等于18显示已成年,否则显示未成年
#include
int main()
{
printf("请输入您的年龄:\n");
int age = 0;
scanf("%d", &age);
if(age >= 18)
{
printf("你已经成年了,可以放开浪了!\n");
}
else
{
printf("你还未成年,多喝奶快快长大!\n");
}
return 0;
}
语法:
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
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 **
在 if 中使用 if
#include
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;
}
语法:
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
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;
}
}
**重复执行一段代码 **
while
do while
for
语法:
while(条件表达式)
{
循环体:重复执行的代码
}
执行流程:
- 先判断条件表达式是否为真,如果为真,执行循环体中的代码,
- 执行完毕后再此判断表达式是否为真,如果为真执行循环体中的代码,
- 如果为假结束循环。
注意:
死循环:无法停止的循环
案例1:
//打印1~100 int i = 1; while(i <= 100){ printf("%d\n",i); i++; } //打印100~1 int 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++; }
语法:
do
{
循环体
}
while(条件表达式);
执行流程:
- 先执行一次循环体,
- 再判断条件表达式是否为真,如果为真,再次执行循环体,
- 如果为假结束循环
案例2:
#include
int main()
{
/*
while(0)
{
printf("while循环体执行了");
}
*/
do{
printf("do while\n");
}
while(0);
printf("OVER\n");
return 0;
}
面试题:
1、请问那个循环的循环体至少执行一次
do while
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
int main()
{
for(int i = 0; i < 10; i++)
{
printf("%d\n",i);
}
return 0;
}
break 跳出当前循环
continue 跳过本次循环
goto 跳转到指定位置(禁用)
案例1:break
#include
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
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
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
*/
%10
的操作,就得到它的个位
;/10 % 10
的操作,就去掉了它的十位
;/100 % 10
的操作,就去掉了它的 百位
;例:
键盘录入一个3位数,判断该数是否为水仙花数?
- 水仙花数为:
- 个位的立方+十位的立方+百位的立方 = 该数本身
#include
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; }