实验2 C语言分支与与循环基础应用编程——1

news/2024/10/9 20:29:42

一、实验目的

1. 能正确使用if语句实现分支结构

2. 能正确使用while语句、do...while语句实现循环结构

3. 能在具体问题场景中正确区分、使用continue和break

4. 能灵活、组合使用c语句编程解决简单应用问题 

二、实验准备

1. 分支语句 if 和循环语句 while 、 do...while 的用法:语法规则及注意事项

2. 在循环语句中 continue 和 break 语句的功能和用法

3. 使用 while 语句实现多组输入的方法

4. 常见问题的算法 

三、实验内容

1. 实验任务1

代码:

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 
 5 #define N  5
 6 #define N1 397
 7 #define N2 476
 8 #define N3 21
 9 
10 
11 int main(){
12     int cnt;
13     int random_major,random_no;
14     
15     srand(time(NULL));
16     
17     cnt=0;
18     while (cnt < N){
19         random_major =rand() %2;
20         if (random_major){
21             
22             if (random_major){
23                 random_no = rand()%(N2 - N1+1)+N1;
24                 printf("20248329%04d\n",random_no);
25                 
26             }
27             else{
28                 random_no = rand() % N3 +1;
29                 printf("20248395%04d\n",random_no);
30                 
31             
32             }
33             cnt++;
34         }
35         
36         return 0;
37     
38 }
39 }

 

 

运行截图:

 

问题回答:

random_no = rand()%(N2 - N1+1)+N1;用来生成一个在397到496之间的随机数,包括边界

random_no = rand() % N3 +1;用来生成一个1到21之间的随机数,包括边界

这个程序是用来生成两种不同的学号。但是都是限定了格式,有12位一共。

 

 

2. 实验任务2

代码:

 

 1 #include<stdio.h>
 2 #include<math.h>
 3 
 4 int main()
 5     {
 6         double a,b,c;
 7         double delta,p1,p2;
 8         
 9         while (scanf ("%lf%lf%lf",&a,&b,&c) !=EOF){
10             if (a == 0){
11                 printf("a =0 ,invalid input \n");
12                 continue;
13             }
14             delta= b*b- 4*a*c;
15             p1= -b/2/a;
16             p2 = sqrt(fabs(delta))/2/a;
17             
18             if (delta ==0)
19                 printf("x1 = x2 = %.2g\n",p1);
20                 
21             else if (delta>0)
22             
23             
24                 printf("x=%.2g,x2=%.2g\n",p1+p2,p1-p2);
25             else{
26                 printf("x1=%.2g + %.2gi,",p1,p2);
27                 printf("x2=%.2g - %.2gi\n",p1,p2);
28                 
29             }
30         }
31         return 0;
32     }

 

运行截图:

 

 

 

 

3. 实验任务3

代码:

 

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

 

 

运行截图:

 

 

 

 

 

4. 实验任务4

代码:

 

 1 #include<stdio.h>
 2 int main(){
 3     printf("请输入今日开销,直到输入-1终止:\n"); 
 4     double kaixiao,max=0.0,min=20000.0,sum=0.0;
 5 
 6     while(1){
 7         scanf("%lf",&kaixiao);
 8         if (kaixiao==-1){
 9             break;
10         }
11         
12         
13         if (!(kaixiao>=0 && kaixiao<=20000))
14         {
15             printf("请重新输入在0到2万之间的数\n");
16         }
17         
18         if (kaixiao>max){
19             max = kaixiao;
20         }
21         
22         if (kaixiao<min){
23             min = kaixiao;
24         }
25         
26         sum+= kaixiao;
27         
28     }
29     printf("今日累计消费总额:%.2f\n",sum);
30     printf("今日最高一笔开销:%.2f\n",max);
31     printf("今日最低一笔开销:%.2f\n",min);
32         return 0;
33     }
34     

 

 

运行截图:

 

 

 

 

 

5. 实验任务5

代码:

 

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

 

 

运行截图:

 

 

 

 

 

6. 实验任务6

代码:

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h> 
 4 #define x1 1
 5 #define x2 30
 6 int main(){
 7     
 8     int y,m=1;
 9     
10     srand(time(NULL)); 
11     
12     
13     int x=rand()% (x2-x1+1)+x1;
14     
15     
16     printf("猜猜2024年11月哪一天会是你的lucky day\n\n开始喽,你有三次机会,猜吧(1~30):")    ;
17      
18     while(1){
19     scanf("%d",&y);
20     
21     if (m==3){
22         
23             printf("\n次数用光啦。偷偷告诉你,11月你的lucky day是 %d 号",x);
24             break;
25     }
26     
27     
28     if (y==x )
29     {printf("\n哇,猜中了:)");
30     break;}
31     
32     else if (y<x )
33     
34     {printf("\n你猜的日期早了,你的lucky day还没到呢\n\n再猜(1~30):");}
35         
36     else if (y>x )
37     
38     {printf("\n你猜的日期晚了,你的lucky day在前面哦\n\n再猜(1~30):");    }
39     
40     
41     m++;
42     } 
43 
44     return 0;
45 }
46     

 

 

运行截图:

 

 

 

 

 

 

 

四、实验总结

1. 实验任务1

 #include<stdlib.h>和#include<time.h>是随机数生成的重要部分。而srand(time(NULL));达到了运行一次生成一次随机数的效果。

 

2. 实验任务2

 if 分支结构的使用。if --else if ---else if ----.....---else

以及continue跳出当前循环的作用,

以及格式控制符%g

 

3. 实验任务3

 输出一个结果,习惯性地在末尾加上\n来换行。

还有字符的判断用单引号' ' 

判断相等,用的是==,判断b<c<a用  b<c && c<a

和EOF的使用。

 

4. 实验任务4

 

输入-1终止程序,我用了while里一个if 语句判断,内部用上了break达到了终止程序的效果。

引入了max,min,sum,判断与kaixiao之间的关系来得到值。

 

 

5. 实验任务5

 格式化输入时%d%d%d和%d  %d  %d 的不同之处

6. 实验任务6

 随机生成数的又一次练习。和一次猜中的终止程序。以及3次都没猜中的谜底揭示。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

redis安装致命错误jemalloc/jemalloc.h

安装报错 在安装redis的时候,执行 make && make install 发生以下错误解决方案其实可以读一下redis里的Readme.md文件,我截图了其中的部分,使用make MALLOC=libc & make install

鼻托历险记

鼻托历险记我是一个鼻托,和我的双胞胎兄弟共同居住在一副眼镜上。 自打出生起,我就和其它部件们被融合成了一个集体。我们已经工作了快两年了,我的主人很贴心的照顾我们,不隔多久就会给和我们一起工作的镜片兄弟精心擦拭一番,也有时会心血来潮,给整个集体一起洗个凉水澡。…

.NetCore中下载文件接口指定文件名时中文被替换为下划线(_)的问题

首先,我这里使用的.net6比如我有这样一个接口:public async Task<IActionResult> Download(string name){//省略业务代码...return File(stream, "application/octet-stream", name);}这里下载的文件名时接口参数传进来的,然后我们调用接口,发现当我传的是…

多校 A 层冲刺 NOIP2024 模拟赛 04

难度 ★★☆☆☆多校A层冲刺NOIP2024模拟赛04 T 02表示法 签到题 记得有一道普及题是没加高精的原吧... 将原数高精除变为二进制,然后记搜就好了。 T 子串的子串 签到题 注意到 \(n\) 很小支持 \(O(n^2)\) 的操作,可以直接预处理出所有 \(l,r\) 的个数,预处理方式可参考数颜…

小白科普:AI 到底是什么,终于有人讲清楚了

本小册主要是针对 AI 初学者的小白用户,那么第一篇肯定就是给大家科普一下,到底什么是 AI 呢?本小册主要是针对 AI 初学者的小白用户,那么第一篇肯定就是给大家科普一下,到底什么是 AI 呢? AI 是“人工智能”的缩写,它听起来好像很复杂,但其实它就像一个超级聪明的机器…

实验1 现代C++编程初体验

1. 实验任务11 #include <iostream>2 #include <string>3 #include <vector>4 #include <algorithm>5 6 using namespace std;7 8 // 声明9 // 模板函数声明 10 template<typename T> 11 void output(const T& c); 12 13 // 普通函数声明 1…

关于C++中的异常概念理解

1. 基本概念 异常,即 exception,是C++中的基本概念之一,在某段程序发生无法继续正常执行的情况时,C++允许程序进行所谓抛出异常(有时也被称为吐出异常)的行为,这些被抛出的异常,会自动地从触发点开始向外传播,直到被捕获(有时也被称为吞下异常)或者程序终止。2. 语法…