for,if陳述句的綜合運用
C語言小白成長日記:記錄成長的每一天
博主為專科大一新生,初學C,以下存在不足之處還望多加指導
學完for回圈,今天布置了3道C語言練習題,發現有一道題很有意思,有什么不一樣呢?下面我們來一起看看題目: 隨機產生N個【A ,B】區間的三位整數并輸出,要求N、A、B由鍵盤輸入,
題目分析:
仔細閱讀題目我們會發現題目中給出了生成亂數的個數,限制了生成亂數值的范圍,但是并未限制A,B的輸入范圍,所以說我們需要解決的是:
- 生成亂數功能.
- 生成用戶輸入指定的亂數個數.
- 生成的亂數必須為三位整數且在輸入的區間范圍內.
此題的思路和解題方向我們已經逐漸了解,那么我們該如何來一步步完成實作呢?接來我們開始逐步完成程式,
1.生成亂數功能:
本題中因為要隨機生成三位數,因此用到 rand() 函式來實作隨機功能(并不是真正意義上的隨機,而是偽隨機)具體使用方法請移步:C語言之亂數函式( rand() )的使用方法
以下為要用到的 time() rand() 函式需要包含頭檔案,以及進行偽亂數序列初始化陳述句:
#include <stdlib.h>//rand()函式頭檔案
#include <time.h>//time()函式頭檔案
srand(time(NULL));//偽亂數序列初始化
2.生成用戶輸入指定的亂數個數:
題目中,需要生成生成用戶指定的亂數個數,經過分析我們知道會進行亂數的回圈生成和輸出,即用戶需要生成多少個亂數,則亂數的生成和輸出就會回圈多少次,在這里我們需要使用所學習的:已知次數的回圈陳述句for 回圈
for (i = 0;;)
{
num = rand() % (b - a + 1) + a;//生成指定范圍內的亂數
printf("%d\n", num);//輸出所生成的亂數
i++;//設定計步器,記錄回圈次數,即記錄生成亂數個數
if (i == n)//進行判斷生成的亂數個數是否等于用戶輸入值
{
break;//條件為真,則跳出回圈.
}
}
printf("\n");
3.生成的亂數必須為三位整數且在輸入的區間范圍內:
閱讀題目,我們會發現題要求生成三位正整數,但題中未對區間進行范圍限定,且未指明區間的資料型別,首先我們進行定義變數:
int i = 0, n,num;//i:計步、n:用戶隨機產生個數、num:亂數
int a,b;//分別代表始末區間
區間范圍A<B(始末區間隱含條件)而不同的區間范圍則需要我們分類進行程式設計:
1.當輸入的區間,兩個數都是三位數時,亂數范圍由用戶給出的區間進行決定,
如下:
if (a >= 100 && a <= 999 && b >= 100 && b <= 999 && a < b)
{
for (i = 0;;)
{
num = rand() % (b - a + 1) + a;
printf("%d\n", num);
i++;
if (i == n)
{
break;
}
}
printf("\n");
}
2.當起始值A<100,B仍為一個三位數時,亂數范圍為100~B,是用戶給出的“B”值進行決定
如下:
if (a < 100 && b >= 100 && b <= 999)
{
for (i = 0;;)
{
num = rand() % (b - 100 + 1) + 100;
printf("%d\n", num);
i++;
if (i == n)
{
break;
}
}
printf("\n");
}
3.當起始值A<100,B>999時,亂數范圍為100~999,不由用戶給出的區間值進行決定
如下:
if (a < 100 && b > 999)
{
for (i = 0;;)
{
num = rand() % (999 - 100 + 1) + 100;
printf("%d\n", num);
i++;
if (i == n)
{
break;
}
}
printf("\n");
}
4.當起始值A為一個三位數時,B>999時,亂數范圍為A~999,是用戶給出的“A”值進行決定
如下:
if (a >= 100 && a <= 999 && b > 999)
{
for (i = 0;;)
{
num = rand() % (999 - a + 1) + a;
printf("%d\n", num);
i++;
if (i == n)
{
break;
}
}
printf("\n");
}
5.當輸入的區間不合法(A>B)或最大值小于100或最小值大于999時,則都將無法生成三位亂數
如下:
if (a > b || b < 100 || a > 999 && b > 999)
{
printf("\n輸入錯誤!!!\n");
}
最終完整程式代碼:
/*隨機產生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("%d\n", 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("%d\n", num);
i++;
if (i == n)
{
break;
}
}
printf("\n");
}
if (a < 100 && b > 999)
{
for (i = 0;;)
{
num = rand() % (999 - 100 + 1) + 100;
printf("%d\n", 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("%d\n", num);
i++;
if (i == n)
{
break;
}
}
printf("\n");
}
if (a > b || b < 100 || a > 999 && b > 999)
{
printf("\n輸入錯誤!!!\n");
}
return 0;
}
以上便是本次分享的全部內容,如存在不足之處請指出,謝謝您的瀏覽!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/233919.html
標籤:其他
