我是靠谱客的博主 忧心宝马,这篇文章主要介绍C语言小白成长日记for,if语句的综合运用,现在分享给大家,希望可以做个参考。

for,if语句的综合运用

C语言小白成长日记:记录成长的每一天
博主为专科大一新生,初学C,以下存在不足之处还望多加指导


学完for循环,今天布置了3道C语言练习题,发现有一道题很有意思,有什么不一样呢?下面我们来一起看看题目: 随机产生N个【A ,B】区间的三位整数并输出,要求N、A、B由键盘输入。
题目分析:

仔细阅读题目我们会发现题目中给出了生成随机数的个数,限制了生成随机数值的范围,但是并未限制A,B的输入范围。所以说我们需要解决的是:

  1. 生成随机数功能.
  2. 生成用户输入指定的随机数个数.
  3. 生成的随机数必须为三位整数且在输入的区间范围内.

此题的思路和解题方向我们已经逐渐了解,那么我们该如何来一步步完成实现呢?接来我们开始逐步完成程序。


1.生成随机数功能:

本题中因为要随机生成三位数,因此用到 rand() 函数来实现随机功能(并不是真正意义上的随机,而是伪随机)具体使用方法请移步:C语言之随机数函数( rand() )的使用方法
以下为要用到的 time() rand() 函数需要包含头文件,以及进行伪随机数序列初始化语句:

复制代码
1
2
3
4
#include <stdlib.h>//rand()函数头文件 #include <time.h>//time()函数头文件 srand(time(NULL));//伪随机数序列初始化

2.生成用户输入指定的随机数个数:

题目中,需要生成生成用户指定的随机数个数,经过分析我们知道会进行随机数的循环生成和输出,即用户需要生成多少个随机数,则随机数的生成和输出就会循环多少次,在这里我们需要使用所学习的:已知次数的循环语句for 循环

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
for (i = 0;;) { num = rand() % (b - a + 1) + a;//生成指定范围内的随机数 printf("%dn", num);//输出所生成的随机数 i++;//设置计步器,记录循环次数,即记录生成随机数个数 if (i == n)//进行判断生成的随机数个数是否等于用户输入值 { break;//条件为真,则跳出循环. } } printf("n");

3.生成的随机数必须为三位整数且在输入的区间范围内:

阅读题目,我们会发现题要求生成三位正整数,但题中未对区间进行范围限定,且未指明区间的数据类型。首先我们进行定义变量:

复制代码
1
2
3
4
int i = 0, n,num;//i:计步、n:用户随机产生个数、num:随机数 int a,b;//分别代表始末区间

区间范围A<B(始末区间隐含条件)而不同的区间范围则需要我们分类进行程序设计:
1.当输入的区间,两个数都是三位数时,随机数范围由用户给出的区间进行决定。
如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (a >= 100 && a <= 999 && b >= 100 && b <= 999 && a =< b) { for (i = 0;;) { num = rand() % (b - a + 1) + a; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); }

2.当起始值A<100,B仍为一个三位数时,随机数范围为100~B,是用户给出的“B”值进行决定
如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (a < 100 && b >= 100 && b <= 999) { for (i = 0;;) { num = rand() % (b - 100 + 1) + 100; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); }

3.当起始值A<100,B>999时,随机数范围为100~999,不由用户给出的区间值进行决定
如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (a < 100 && b > 999) { for (i = 0;;) { num = rand() % (999 - 100 + 1) + 100; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); }

4.当起始值A为一个三位数时,B>999时,随机数范围为A~999,是用户给出的“A”值进行决定
如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (a >= 100 && a <= 999 && b > 999) { for (i = 0;;) { num = rand() % (999 - a + 1) + a; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); }

5.当输入的区间不合法(A>B)或最大值小于100或最小值大于999时,则都将无法生成三位随机数
如下:

复制代码
1
2
3
4
5
if (a > b || b < 100 || a > 999 && b > 999) { printf("n输入错误!!!n"); }

最终完整程序代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*随机产生N个【A ,B】区间的三位整数并输出,要求N、A、B由键盘输入。*/ #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand(time(NULL)); int i = 0, n, a, b, num; printf("请分别输入产生随机数个数、始末区间数,以空格隔开: "); scanf("%d%d%d", &n, &a, &b); if (a >= 100 && a <= 999 && b >= 100 && b <= 999 && a < b) { for (i = 0;;) { num = rand() % (b - a + 1) + a; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); } if (a < 100 && b >= 100 && b <= 999) { for (i = 0;;) { num = rand() % (b - 100 + 1) + 100; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); } if (a < 100 && b > 999) { for (i = 0;;) { num = rand() % (999 - 100 + 1) + 100; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); } if (a >= 100 && a <= 999 && b > 999) { for (i = 0;;) { num = rand() % (999 - a + 1) + a; printf("%dn", num); i++; if (i == n) { break; } } printf("n"); } if (a > b || b < 100 || a > 999 && b > 999) { printf("n输入错误!!!n"); } return 0; }

以上便是本次分享的全部内容,如存在不足之处请指出,谢谢您的浏览!


最后

以上就是忧心宝马最近收集整理的关于C语言小白成长日记for,if语句的综合运用的全部内容,更多相关C语言小白成长日记for,if语句内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部