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

一、实验目的

  1. 能正确使用if语句、switch语句实现分支结构
  2. 能正确使用while语句、do...while语句、for语句实现循环结构
  3. 能在具体问题场景中使用嵌套分支语句和嵌套循环语句
  4. 能在具体问题场景中正确区分、使用continue和break
  5. 能灵活、组合使用c语句编程解决简单应用问题

二、实验准备

  1. 分支语句和循环语句的用法:语法规则及注意事项
  2. 使用while语句实现多组输入的方法
  3. 常见问题的算法

三、实验内容

1. 实验任务1

在c开发环境下,输入如下程序。

task1.c

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 #define N 5
 6 #define N1 374
 7 #define N2 465
 8 
 9 int main() {
10     int number;
11     int i;
12 
13     srand(time(0)); // 以当前系统时间作为随机种子
14 
15     for (i = 0; i < 5; ++i) {
16         number = rand() % (N2 - N1 + 1) + N1;
17         //374 - 465 + 374
18         printf("202183360038 %04d\n", number);
19     }
20 
21     return 0;
22 }

2. 实验任务2

编写一个模拟红绿灯信息的程序task2.c。具体要求如下:

  • 要求用户从键盘输入字符,用来表示交通信号灯颜色。输入r表示red,输入g表示green, 输入y表示 yellow
  • 判断交通型号灯颜色,打印输出不同的提示信息:
  1. 如果输入的是r,打印输出字符串stop!
  2. 如果输入的是g,打印输出字符串go go go
  3. 如果输入的是y,打印输出字符串wait a minute
  4. 如果输入的是其它字符,打印输出字符串something must be wrong...
  • 要求支持多组输入,直到用户按下CTRL+Z终止程序

3. 实验任务3

编写一个简单的猜日期程序task3.c。具体要求如下:

  • 使用随机函数,生成1~30之间的一个随机整数作为11月的lucky day
  • 用户有三次猜的机会。根据用户输入的日期,提示用户猜的日期是猜中了,或是,早或晚。
  • 如果用户已经猜中了,则无需打印输出lucky day。
  • 如果用户用光三次机会也没有猜中,那么,就打印输出用户在11月的lucky day。

4. 实验任务4

编写程序task4.c,实现从键盘输入正整数n和a,根据计算式,计算s。

 要求支持多组输入,直到用户按下CTRL+Z终止程序。

5. 实验任务5

编写程序task5.c,实现在屏幕上打印图示所示的九九乘法表。

 6. 实验任务6

编写程序task6.c,实现:从键盘输入n, 打印n行按图示方式递减的字符小人阵列。

四、实验结论

1. 实验任务1

运行截图:

回答问题:

  • 问题1:line17代码的作用是确保生成的随机数范围在[374,465]之间,并将该随机数赋值给number;
  • 问题2:输出5个随机的学号(大概是)。

2. 实验任务2

task2.c

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

 运行截图:

 3. 实验任务3

task3.c

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <time.h>
 5 
 6 int main() {
 7     int lucky_day;
 8     int a;
 9     int flag = 0;
10 
11     srand(time(0));
12     lucky_day = rand() % 30 + 1;
13     printf("%d\n", lucky_day);
14 
15     printf("你有三次机会,");
16     for (int i = 0; i < 3; i++) {
17         printf("猜吧:");
18         scanf("%d", &a);
19 
20         if (a == lucky_day) {
21             printf("哇,猜中了d=====( ̄▽ ̄*)b\n");
22             flag = 1;
23             break;
24         }
25         else if (a > lucky_day) {
26             printf("你猜的日期晚了\n");
27         }
28         else if (a < lucky_day) {
29             printf("你猜的日期早了\n");
30         }
31     }
32 
33     if (!flag) {
34         printf("次数用完了。悄悄告诉你:11月你的luck day是%d号", lucky_day);
35     }
36 
37     return 0;
38 }

运行截图:

 4. 实验任务4

task4.c

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 #include <math.h>
 4 
 5 int main() {
 6     int n;
 7     int a;
 8     int temp;
 9     double sum;
10 
11     while (true) {
12         sum = 0.0;
13 
14         scanf("%d %d", &n, &a);
15 
16         temp = a;
17         for (int i = 1; i <= n; i++) {
18             sum = sum + 1.0 * i / temp;
19             temp = a * pow(10, i) + temp;
20         }
21 
22         printf("n = %d, a = %d, s = %lf\n", n, a, sum);
23     }
24 
25     return 0;
26 }

运行截图:

 5. 实验任务5

task5.c

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 
 4 int main() {
 5     for (int i = 1; i <= 9; i++) {
 6         for (int j = 1; j <= i; j++) {
 7             printf("%d×%d = %2d ", j, i, i * j);
 8         }
 9         printf("\n");
10     }
11 
12     return 0;
13 }

运行截图:

 6. 实验任务6

task6.c

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include <stdio.h>
 3 
 4 int main() {
 5     int n;
 6 
 7     scanf("%d", &n);
 8 
 9     for (int i = 0; i < n; i++) {
10         for (int j = 0; j < i; j++) {
11             printf("\t");
12         }
13         for (int k = 2 * (n - i) - 1; k > 0; k--) {
14             printf(" O \t");
15         }
16         printf("\n");
17 
18         for (int j = 0; j < i; j++) {
19             printf("\t");
20         }
21         for (int k = 2 * (n - i) - 1; k > 0; k--) {
22             printf("<H>\t");
23         }
24         printf("\n");
25 
26         for (int j = 0; j < i; j++) {
27             printf("\t");
28         }
29         for (int k = 2 * (n - i) - 1; k > 0; k--) {
30             printf("I I\t");
31         }
32         printf("\n");
33     }
34 
35     return 0;
36 }

运行截图:

 

posted @ 2023-10-16 19:50  注册好容易啊  阅读(24)  评论(0编辑  收藏  举报