日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C指针原理(38)-C快速入门

發布時間:2025/3/12 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C指针原理(38)-C快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為增加游戲的趣味性,待猜的數字可使用一個產生1-500以內的隨機整數,可按以下方式計算這個整數(%為取余操作):

1-500以內的隨機整數=隨機整數%499+1

可借助stdlib.h中定義的srand函數來生成公式右邊所需要的隨機數,該函數需要一個數值做為產生隨機數的種子(也就是這個函數的唯一個參數),通常使用當前時間值作為參數,當前時間值可以通過time函數(以0做為參數調用,該函數在time.h中定義)。

比如下面代碼產生2個隨機整數:

#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){srand((int)time(0));printf("第一個隨機數:%d 第二個隨機數:%d\n",rand()%499+1,rand()%499+1);}

dp@dp:~/cquick % gcc a.c -o mytest

dp@dp:~/cquick % ./mytest

第一個隨機數:429 第二個隨機數:44

可將上面代碼組合成本程序的第一個自定義函數getnumber,供main函數調用。最后代碼如下:

#include <stdio.h>#include <stdlib.h>#include <time.h>int getnumber(){srand((int)time(0));return rand()%499+1;}int main(){int mynum;int ispass=0;while(1){printf("你好,請輸入一個數字:");scanf("%d",&mynum);if (mynum>500 ||mynum<1){printf("數字僅限于1-500之間,請重新運行本程序!\n");}else{printf("\n你輸入的數字是:%d\n",mynum);break;}}printf("number:%d\n",getnumber());}

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

你好,請輸入一個數字:55

你輸入的數字是:55

number:109

程序最后一個printf語句取得要猜的隨機整數后,輸出到屏幕,這只是測試(游戲中可不能把結果告訴玩家,接下來,將對這個程序繼續完善,將去掉這個printf語句)。

(5)反復接受玩家輸入,只到數字猜中為止

C程序通過else if語句塊可實現一組條件語句塊擁有多個不同的條件語句,它的使用形如:

if (條件1){

}

else if(條件2){

}

Else if(條件3){

}

Else if(條件n){

}

Else{

}

實現這一步的功能使用了這個語句塊結構。

#include <stdio.h>#include <stdlib.h>#include <time.h>int getnumber(){srand((int)time(0));return rand()%499+1;}int main(){int mynum;int ispass=0;int guessnum=getnumber();while (1){while(1){printf("你好,請輸入一個數字:");scanf("%d",&mynum);if (mynum>500 ||mynum<1){printf("數字僅限于1-500之間\n");}else{printf("\n你輸入的數字是:%d\n",mynum);break;}}if (mynum>guessnum){printf("數字大了!\n");}else if(mynum<guessnum){printf("數字小了!\n");}else{printf("祝賀您,您猜中了!\n");break;}}}

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

你好,請輸入一個數字:55

你輸入的數字是:55

數字小了!

你好,請輸入一個數字:280

你輸入的數字是:280

數字小了!

你好,請輸入一個數字:350

你輸入的數字是:350

數字小了!

你好,請輸入一個數字:400

你輸入的數字是:400

數字小了!

你好,請輸入一個數字:488

你輸入的數字是:488

數字大了!

你好,請輸入一個數字:420

你輸入的數字是:420

數字小了!

你好,請輸入一個數字:450

你輸入的數字是:450

數字大了!

你好,請輸入一個數字:440

你輸入的數字是:440

數字大了!

你好,請輸入一個數字:430

你輸入的數字是:430

祝賀您,您猜中了!

(6)自動猜數算法

能不能讓電腦程序擁有智能,讓程序來猜數字呢?肯定可以,通過一定的算法就能實現。什么是算法?

算法在中國古代文獻中稱為“術”,最早出現在《周髀算經》、《九章算術》。特別是《九章算術》,給出四則運算、最大公約數、最小公倍數、開平方根、開立方根、求素數的埃拉托斯特尼篩法,線性方程組求解的算法。三國代的劉徽給出求圓周率的算法:劉徽割圓術。

歐幾里得算法被人們認為是史上第一個算法。第一次編寫程序是Ada Byron于1842年為巴貝奇分析機編寫求解解伯努利微分方程的程序,因此Ada Byron被大多數人認為是世界上第一位程序員。

算法的核心是創建問題抽象的模型和明確求解目標,之后可以根據具體的問題選擇不同的模式和方法完成算法的設計。

為了能讓程序實現自動猜數,必須假設一個前提:程序不知道要猜的數字,也就是說這個算法中只能與要猜的數字進行比較,而不能直接“知道”要猜的數字值。可將算法設計如下:

第一步,設數字范圍R為1-500。

第二步,取范圍R以內的中間值A,把A作為程序模仿人類猜測出的數字。

第三步,將猜測的數字A與被猜的結果B比較

(1)如果A>B,則將R的上限設為A,回到第二步。

(2)如果A<B,則R的下限設為A ,回到第二步。

(3)如果A=B,則退出程序,提示猜中數字,進入第四步。

第四步,在屏幕上輸出A和B,并提示猜中數字。

根據上面的算法來編寫以下程序:

#include <stdio.h>#include <stdlib.h>#include <time.h>int getnumber(){srand((int)time(0));return rand()%499+1;}int main(){int mynum;int ispass=0;int guessnum=getnumber();int myrange[2]={1,500};while (1){mynum=(myrange[0]+myrange[1])/2;if (mynum>guessnum){printf("程序猜的數字為%d,數字大了!\n",mynum);myrange[1]=mynum;}else if(mynum<guessnum){printf("程序猜的數字為%d,數字小了!\n",mynum);myrange[0]=mynum;}else{printf("程序猜的數字為%d, 被猜的數字為%d,猜中了!\n",mynum,guessnum);break;} }}

運行后,結果為:

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

程序猜的數字為250,數字大了!

程序猜的數字為125,數字小了!

程序猜的數字為187,數字大了!

程序猜的數字為156,數字小了!

程序猜的數字為171,數字大了!

程序猜的數字為163,數字小了!

程序猜的數字為167, 被猜的數字為167,猜中了!

dp@dp:~/cquick %

總結

以上是生活随笔為你收集整理的C指针原理(38)-C快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。