前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【c语言】知识记录——分支和循环(含随机数知识点)

【c语言】知识记录——分支和循环(含随机数知识点)

作者头像
用户11292525
发布2024-09-26 11:02:28
920
发布2024-09-26 11:02:28
举报
文章被收录于专栏:学习
一 .条件判断语句
(1)if 语句

此处因为我很早就接触过,这里不过多赘述。

基础语法 :

代码语言:javascript
复制
if(表达式)
  { 
     }
else if (表达式)
  {
     }
else
  {
     }
(2)switch语句

   同上理由,不过多赘述。

   基础语法 :

代码语言:javascript
复制
switch (整形常量表达式) {
 case 1(这是例子): 
                  (整形常量表达式);
                   break;
 case 2(这是例子): 
                  (整形常量表达式);
                   break;
 default: 
         (整形常量表达式);
          break;
}

上述的代码中,我们要注意的点有:

1. case 和后边的数字之间必须有空格

2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。

3. 在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实 际需求的就可以。 不过我们通常是把 default 句放在最后处理的。

二 .循环语句
(1)while语句

基本语法:

代码语言:javascript
复制
while(表达式)
 {
    };

练习题:输⼊⼀个正的整数,逆序打印这个整数的每⼀位  例如: 输⼊:1234,输出:4 3 2 1             输⼊:521,输出:1 2 5

解析:①小规律:得到最低位 → n %10(如1234中得到4)

                             去掉最低位 → n / 10 (如1234中得到123)

           ②最后一位,我们打印n%10 ;取倒数第二位,先使数本身去掉了最低位(变成三位数),再取现在变身后的最低位。

代码语言:javascript
复制
#include <stdio.h>

int main()
{

 int n = 0;
 scanf("%d", &n);
 while(n)
 {
 printf("%d ", n%10);
 n /= 10;
 }

 return 0;
}
(2)for语句

       for 循环是三种循环中使⽤最多的

     基本语法:

代码语言:javascript
复制
for(表达式1; 表达式2; 表达式3)

   {
      };

表达式1 ⽤于循环变量的初始化

表达式2 ⽤于循环结束条件的判断

表达式3 ⽤于循环变量的调整 (在该循环完成后的变量调整)

练习题: 计算1~100之间3的倍数的数字之和 

代码语言:javascript
复制
#include <stdio.h>
int main()
{
 int i = 0;
 int sum = 0;
 for(i=1; i<=100; i++)
 //这里 初始数i=1 ;条件i是 <=100 的所有数 ; 每次循环结束,变量i顺次加1

 {
 if(i % 3 == 0) //除以3无余数
 sum += i; // sum=sum+1
 } 
 printf("%d\n", sum);

 return 0;
}
(3) do while语句

基本语法:

代码语言:javascript
复制
do
 {
    };
while(表达式);
(4)三者区别

while for 这两种循环都是先判断: 条件满足 → 进⼊循环,执⾏循环语句  条件不满足 → 跳出循环;

   而 do while 循环则是直接先进⼊循环体(执行循环语句),然后再判断 while括号里的判断表达式( 执行while (表达式)) 表达式为真(即 while(n) 的n结果为1)→ 进行下⼀次循环 表达式为假(即 while(n) 的n结果为0) → 不再继续循环

三 .其他语句

(1)代码跳转——go to语句

可以实现在同⼀个函数内跳转到设置好的标号处。

基本用法:

代码语言:javascript
复制
#include <stdio.h>

int main()
{
 printf("这句话会被正常打印,当代码运行到下一行出现了跳转语句,提示跳到here处\n");
 goto here;

 printf("这句话就不会被打印出来\n");

here:
 printf("直接跳过上面的那个,打印现在这句话\n");
 return 0;
}

注意:

     goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建议是能不用尽量不用

    但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出使⽤ goto 就⾮常的⽅便了。

(2)生成随机数——rand,srand,time的配合用法
需要的头文件

  rand和srand → <stdlib.h>      time → <time.h>

有人会说,为什么打一个随机而已,要三个语法结构,好麻烦~

呐,我们慢慢推一遍为什么————

首先,我们直接运行rand的结果

这个看似随机的值多运行几次,会发现结果都一样

  ——有点问题啊小兄弟

如果再深⼊了解⼀下,我们就不难发现,其实rand函数生成的随机数是伪随机的 (伪随机数不是真正的随机数,是通过某种算法生成的随机数) 真正的随机数的是⽆法预测下⼀个值是多少的。 我搜索的专业网站解释咳咳咳:rand函数是对⼀个叫“种子”的基准值进行运算生成的随机数。 之所以前面每次运行程序产生的随机数序列是⼀样的,那是因为rand函数生成随机数的默认种子是1。

如果要生成不同的随机数,就要让种⼦是变化的。

斯,真讨厌

该死的

于是c语言又提供了⼀个函数叫 srand,用来初始化随机数的生成器的

srand的原型如下:

代码语言:javascript
复制
void srand (unsigned int time);
//哇哦这里提前出现了time

 程序中在调⽤ rand 函数之前先调⽤ srand 函数,通过 srand 函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。

那也就是说给srand的种子是如果是随机的,rand就能生成随机数; 在生成随机数的时候⼜需要⼀个随机数,这就⽭盾了。 在程序中我们⼀般是使用程序运行的时间作为种子的,因为时间时刻在发生变化的。 嘿嘿,我这个过渡句不错吧(不是


专业用词ing: time 函数会返回当前的日历时间,其实返回的是1970年1⽉1日0时0分0秒到现在程序运行时间之间的差值,单位是秒。返回的类型是time_t类型的,time_t 类型本质上其实就是32位或者64位的整型类型。

time函数的参数 timer 如果是⾮NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存 中带回去。

如果 timer 是NULL,就只返回这个时间的差值。

time函数返回的这个时间差也被叫做:时间戳


如果只是让time函数返回时间戳,我们就可以这样写:

代码语言:javascript
复制
 time(NULL);
//调⽤time函数返回时间戳,这⾥没有接收返回值

使用time函数的返回值设置种⼦ 因为srand的参数是unsigned int类型,我们将time函数的返回值强制类型转换


随机数范围设置:

随机数范围设置

随机数运用形式

a + rand ( ) % ( b - a + 1 ) ————(范围 a 到 b) srand((unsigned int)time(NULL))


 有了上面的基础,

 那我们就可以让生成随机数的代码改写成如下:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{

 srand((unsigned int)time(NULL));

 printf("%d\n", rand());
 printf("%d\n", rand());
 printf("%d\n", rand());
 printf("%d\n", rand());
 printf("%d\n", rand());

 return 0;
}

多运行几次看看,每次的运行就有差异了。

注意:srand函数是不需要频繁调用的,一次运行的程序中调用一次就够了。

随机数实战运用

见我的作品“【c语言】一些刷题遇到的小知识点—1 ”

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 .条件判断语句
    • (1)if 语句
      • (2)switch语句
      • 二 .循环语句
        • (1)while语句
          • (2)for语句
            • (3) do while语句
              • (4)三者区别
              • 三 .其他语句
                • (1)代码跳转——go to语句
                  • (2)生成随机数——rand,srand,time的配合用法
                  • 随机数实战运用
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档