C语言 - 语句

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;
}
相关推荐
qq_459730033 分钟前
C 语言面向对象
c语言·开发语言
陌小呆^O^1 小时前
Cmakelist.txt之win-c-udp-client
c语言·开发语言·udp
qystca4 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
网易独家音乐人Mike Zhou9 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
搬砖的小码农_Sky12 小时前
C语言:数组
c语言·数据结构
ahadee16 小时前
蓝桥杯每日真题 - 第19天
c语言·vscode·算法·蓝桥杯
Theliars16 小时前
C语言之字符串
c语言·开发语言
Reese_Cool16 小时前
【数据结构与算法】排序
java·c语言·开发语言·数据结构·c++·算法·排序算法
搬砖的小码农_Sky17 小时前
C语言:结构体
c语言·数据结构
平头哥在等你19 小时前
求一个3*3矩阵对角线元素之和
c语言·算法·矩阵