experiment2

news/2025/10/16 21:54:41/文章来源:https://www.cnblogs.com/AAA-ZZX/p/19146644

Task1

问题1:

srand(time(NULL));的作用:经过查询,发现这行代码用于初始化随机数生成器的种子,srand()是设置随机种子的函数,time(NULL)返回当前系统时间,将当前时间作为种子,确保每次程序运行时产生的随机数序列不同.如果去掉这行代码,发现每次运行时产生的"随机"学号序列一样,也是经查询得知,因为随机数生成器使用的默认种子(通常是1),导致每次运行rand()函数都产生相同的随机数序列.

问题2:

这个程序的功能是随机生成五个学号

Task2

问题1:

total_price = 0;这行代码如果去掉,发现第二次运算结果不对,因为在第一次运算后total price没有清零,第二次的结果加上了第一次的total price.

问题2:

while循环语句中,第一个continue的语义是当输入编号不在范围内时,跳过当前循环的剩余部分,直接进入条件判断进入下一次循环,即重新显示菜单

第二个continue语义是但是输入负数时,跳过当前循环剩余部分,直接开始下一次循环,即重新输入购买数量

Task3

 1 #include <stdio.h>
 2 int main() {
 3     char ans;
 4     
 5     while(1) {
 6         scanf("%c", &ans);
 7         
 8         
 9         while(getchar() != '\n');
10         
11         if(ans == 'r') {  
12             printf("stop!\n");
13         } 
14         else if(ans == 'g') {  
15             printf("go go go\n");
16         } 
17         else if(ans == 'y') {
18             printf("wait a minute\n");
19         } 
20         else {
21             printf("something must be wrong...\n");
22         }
23     }
24     
25     return 0;
26 }

E2task3

Task4

 1 #include <stdio.h>
 2 int main(){
 3     double expense;
 4     double total;
 5     double max_expense;
 6     double min_expense;
 7     int first_input=1;
 8     printf("输入今日开销,直到输入-1终止:");
 9     while(expense!=-1){
10         scanf("%lf",&expense);
11         if(expense<=0||expense>20000){
12             printf("超出范围\n");
13             continue;
14         }    
15         total += expense;
16         if(first_input){
17             max_expense=expense;
18             min_expense=expense;
19             first_input=0;
20         }else{
21             if(expense>max_expense){
22                 max_expense = expense;
23             }if(expense<min_expense){
24                 min_expense = expense;
25             }
26         }
27         
28     }
29     printf("今日累计消费总额:%.1f\n",total);
30     printf("今日最高一笔开销:%.1f\n",max_expense);
31     printf("今日最低一笔开销:%.1f\n",min_expense);
32     return 0;
33 }

E2task4

Task5

 1 #include <stdio.h>
 2 int main(){
 3     int a,b,c;
 4     printf("请输入三角形三边边长(整数):\n");
 5     
 6     while(1){
 7         scanf("%d%d%d",&a,&b,&c);
 8         if(a+b<=c||a+c<b||b+c<a||a<+0||b<=0||c<=0){
 9             printf("不能构成三角形\n");
10             continue;
11         }
12         if(a==b&&a==c&&b==c){
13             printf("等边三角形\n");
14         }else if(a==c||b==c||a==b){
15             printf("等腰三角形\n");
16         }else if(a*a + b*b == c*c||a*a + c*c == b*b||b*b + c*c == a*a){
17             printf("直角三角形\n");
18         }else{
19             printf("普通三角形\n");
20         }
21     }
22     return 0;
23 }

E2task5

Task6

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 int main(){
 5     int lucky_day,guess,cnt;
 6     srand(time(NULL));
 7     printf("猜猜2025年11月哪一天是你的lucky day\n");
 8     printf("开始喽,你有三次机会,猜吧(1~30):");
 9     lucky_day=rand()%30+1;
10     cnt=0;
11     while(cnt<3){
12         scanf("%d",&guess);
13         cnt++;
14         if(guess<1||guess>30){
15             printf("请输入1~30之间的数字:");
16             continue; 
17         }
18         if(guess==lucky_day){
19             printf("哇,猜中了\n");
20             break;
21         }else if(guess<lucky_day){
22             if(cnt<3){
23             
24             printf("你猜的日期早了,你的lucky day还没到呢\n");
25             printf("再猜(1~30)");}
26         }else{
27             if(cnt<3){
28                 printf("你猜的日期晚了,你的lucky day在前面哦\n");
29                 printf("再猜(1~30):");
30             }
31         }
32     }
33     if (cnt ==3&&guess!=lucky_day){
34         printf("次数用光了,偷偷告诉你,11月份你的lucky day 是%d号",lucky_day);
35     }
36     return 0;
37 }

E2task6

实验总结:

1.srand(time(NULL))能够生成随机数

2.通过这次实验加强了对while语句的运用,使用if语句,要分清楚层次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/938538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

索引有什么作用?

一句话概念 索引(Index) 就像是数据库里的“目录”或“书的索引页”。 它的主要作用是:加快查询速度,减少数据库扫描整张表的次数。📖 举个简单的例子 假设你有一个商品表 products,里面有几万条记录。 如果你执…

关于卷积神经网络(CNN)的入门学习报告

关于卷积神经网络(CNN)的入门学习报告 在观看了B站上关于卷积神经网络的系列教学视频后,我对CNN的基本原理和核心组件有了初步的认识。 一、 核心动机:解决全连接网络处理图像时的困境 首先,为什么要用CNN?传统的…

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载) - 指南

【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载) - 指南2025-10-16 21:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

10月16日日记

1.今天体测50米,引体向上等。 2.明天学习英语 3.底层无法处理的异常要抛出,有明确处理策略时才捕获,切忌捕获后什么都不做。

LinuxC++——etcd-cpp-api精简源代码函数参数查询参考 - 教程

LinuxC++——etcd-cpp-api精简源代码函数参数查询参考 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

TELUS如何通过Google技术栈实现业务增长与生产力跃升

本文详细介绍了加拿大通信技术公司TELUS通过部署ChromeOS、Google Workspace、Chrome Enterprise Premium和Cameyo构建企业级技术栈,实现登录速度提升3倍、降低运营成本并改善客户服务体验的数字化转型实践。编辑注 今…

云服务器上部署 EasyTier中转服务器

云服务器开放端口 控制台中放开11010端口 连接云服务器安装软件 wget -P /root/ https://ghfast.top/https://github.com/Doboo/scripts/blob/main/easytier.sh && chmod 777 /root/easytier.sh 设置组网信息 …

问世界

在这个世界上,是否所有的问题都有答案?还是说这个世界本身就是个巨大的问题?

为 .NET 10 GC(DATAS)做准备

原作者:maoni 原文链接:https://maoni0.medium.com/preparing-for-the-net-10-gc-88718b261ef2在 .NET 9 中,我们默认启用了 DATAS。但 .NET 9 并不是长期支持(LTS)版本,因此很多人会在升级到 .NET 10 时首次获得…

实用指南:Kotlin协程 vs Java虚拟线程:从Continuation挂起到ForkJoin调度,解锁现代并发新范式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

LLM学习记录DAY3

📘今日学习总结 一、语言模型基础能力的建立:预训练 1.1 预训练的核心思想目标:通过大规模无监督文本学习语言表示。 方式:自回归预测下一个词:\[\mathcal{L}_{\text{LM}}(\mathbf{u}) = \sum_{t=1}^{T} \log P(…

你的程序为何卡顿?从LINUX I/O三大模式寻找答案

你的程序为何卡顿?从LINUX I/O三大模式寻找答案I/O交互流程 在LINUX中,内核空间和用户空间都位于虚拟内存中。LINUX采用两级保护机制:0级供内核使用,3级供用户程序使用。每个进程都有独立的用户空间(0~3G),对其…

日总结 13

BP 神经网络(Back Propagation Neural Network)是一种基于误差反向传播算法训练的多层前馈神经网络,核心是通过反向传播误差来调整网络权重,从而实现对复杂非线性关系的学习与拟合,是深度学习的基础模型之一。 一…

开源许可协议 gpl vs mit?

大一点的项目用GPL,与社区个人共享劳动过程与成果,保护劳动果实不被商业公司吸血、完全抄袭与窃取。 小项目或者纯依赖库,用MIT,方便你我他接手,续上代码更新。

二进制警报器

二进制警报器 在线解决以下问题:给定长度为 \(n\) 的数组,\(q\) 次操作:单点加(或多点加,视为多次单点加)设置警报器 \((S,v)\),当集合 \(S\) 对应位置的和达到 \(v\) 时报警。为了区分,我们将原问题中的报警称…

题解:P8019 [ONTAK2015] OR-XOR

思路 题目要求我们把序列分成 \(m\) 段,使得每段区间的异或和的结果按位或后的结果尽可能地小。那么就有一个显然的贪心,从高到低枚举二进制位,尽可能划分使高位按位或后为 \(0\) 的区间,这么做得到的答案是最优的…

DP 思维好题(转载)

转载自 https://www.luogu.com.cn/discuss/1174071 P3881, P3170, P3179, P3190, P3272, P3290, P3336, P3351, P3600, P3724, P5075, P1721, P1924, P1933, P2145, P3685, P2304, P2289, P2612, P2703, P4365, P4383,…