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的随机数
c
#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);
例:
c
#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显示已成年
c#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显示已成年,否则显示未成年
c#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,显示回家写作业去
c#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折
c
#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 冬 c#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 分类
while
do while
for
4.3 while
语法:
while(条件表达式)
{
循环体:重复执行的代码
}
执行流程:
- 先判断条件表达式是否为真,如果为真,执行循环体中的代码,
- 执行完毕后再此判断表达式是否为真,如果为真执行循环体中的代码,
- 如果为假结束循环。
注意:
死循环:无法停止的循环
案例1:
c//打印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++; }
4.3 do while
语法:
do
{
循环体
}
while(条件表达式);
执行流程:
- 先执行一次循环体,
- 再判断条件表达式是否为真,如果为真,再次执行循环体,
- 如果为假结束循环
案例2:
c
#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
c
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:
c
#include <stdio.h>
int main()
{
for(int i = 0; i < 10; i++)
{
printf("%d\n",i);
}
return 0;
}
5. 流程控制语句
break 跳出当前循环
continue 跳过本次循环
goto 跳转到指定位置(禁用)
案例1:break
c
#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
c
#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
c
#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位数,判断该数是否为水仙花数?
- 水仙花数为:
- 个位的立方+十位的立方+百位的立方 = 该数本身
c#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; }