A. c語言 編程 猜數字
int answer[3],int guess[3]
輸入4個個數 你數組成員個數應該為4個 而不是3個…… 有沒有其他問題我還沒看
B. c語言猜數字
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
void main_menu(void);
void score_menu(int score);
void help_menu(void);
int play_game(void) ;
int main() {
char main_menu_choose;
int score = 0;
while (1) {
main_menu(); //輸出主菜單目錄
main_menu_choose = 'y';
do {
char temp;
temp = getch();
if (temp >= '0' && temp <= '3') {
main_menu_choose = temp;
}
} while (main_menu_choose == 'y');
switch(main_menu_choose){
case '0':
return 0;
case '1':
score = play_game();
break;
case '2':
score_menu(score);
break;
case '3':
help_menu();
break;
default :
break;
}
}
}
void main_menu(void)
{
printf("1:開始游戲!2:查看上次成績!3:輸出幫助信息!0:退出程序!\n");
return ;
}
void score_menu(int score)
{
printf("分數是:%d\n", score);
printf("任意鍵返回主目錄:\n");
getch();
return ;
}
void help_menu(void)
{
printf("幫助信息:\n");
printf("任意鍵返回主目錄:\n");
getch();
return ;
}
int play_game(void) {
char target[4];
char guess[4];
int input_flag;
char game_flag;
char input_temp;
unsigned int i, j, x, y;
int score = 100;
srand(time(NULL));
target[0] = '0' + rand() % 10;
target[1] = '0' + rand() % 10;
target[2] = '0' + rand() % 10;
target[3] = '0' + rand() % 10;
printf("Input your guess:\n");
game_flag = 'y';
while (game_flag == 'y' || game_flag == 'Y') {
input_flag = 3;
printf("輸入你猜測的數值:\n");
while (input_flag >= 0) {
input_temp = getchar();
guess[input_flag] = input_temp;
input_flag--;
if(input_temp == 'n' || input_temp == 'N'){
game_flag = 'n';
}
}
x = y = 0;
for (i = 0; i < 4; ++i) {
if (target[i] == guess[i]) {
x++;
}
for (j = i + 1; j < 4; ++j) {
if (target[i] == guess[j]) {
y++;
}
}
}
if (x != 4) {
printf("%dA %dB\n", y, x);
getchar();
score -= 10;
} else {
printf("恭喜你猜對了!\n");
return score;
}
}
return 0;
}
界面不是很好,留給你自己設計了。
C. C語言程序設計 猜數字游戲
看看這樣是不是符合你的要求。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 4/*隨機抽N個數*/
#define NUM 8/*NUM次猜數的機會*/
void detect(char s[])
{
int i,j,num;
int a,b;
char ch[N];
for(num=0;num<NUM;num++)
{
a=b=0;
printf("第%d次機會:",num+1);
for(i=0;i<N;i++)
{
ch[i]=getch();
if(ch[i]>='0'&&ch[i]<='9')
{
for(j=0;j<i;j++)
if(ch[i]==ch[j]) break;
if(j<i) i--;
else
{
putchar(ch[i]);
for(j=0;j<N;j++)
{
if(ch[i]==s[j])
if(i==j) a++;
else b++;
}
}
}
else
i--;
}
printf(" %dA%dB\n",a,b);
if(a==N)
{
printf("恭喜你答對了!\n");
break;
}
}
if(num==NUM)
printf("很遺憾,正確答案為:%s\n",s);
}
main()
{
int i,j;
char s[N+1];
srand(time(0));
for(i=0;i<N;i++)
{
s[i]=rand()%10;
for(j=0;j<i;j++)
if(s[i]==s[j]) break;
if(j<i) i--;
else
{
s[i]+='0';
putchar('*');
}
}
s[i]='\0';
printf("\n總共%d次機會\n",NUM);
detect(s);
}
D. 猜數字C語言
其實這個程序很簡單,思路很清晰
首先產生一個隨機的四位數,且每位都不相同
int a[10]={0,1,2,3,4,5,6,7,8,9};
int b,c,i,t;
for(i=0;i<100;i++) //思路就是產生兩個10以內的隨機數,交換a中這兩個下標的數值,
{ //經過多次交換後,著a中的這10個數就打亂了次序,就像是隨機數了
b=rand()%10; //這個交換多少次,隨便了,只要打亂就可以
c=rand()%10;
if(b!=c)
{t=a[b];a[b]=a[c];a[c]=t;}
}
接著取出連續的a中的4個數,這樣就是那個隨機數
int suiji[4];
for(i=0;i<4;i++)
suiji[i]=a[i]; //這樣隨即中就是四個要猜的數,
要是想要第一位不是0,可以這么計算
int j;
for(i=0,j=0;j<4;i++)
{
if(a[0]==0)
continue;
suiji[j++]=a[i];
}
接下來就是輸入數據,
int shuru,shr[4],s;
while(1)
{
scanf("%d",&shuru);
s=shuru;
i=3;
while(s)
{
shr[i--]=s%10;
s/=10;
}
if(shuru>1000&&shuru<9999&&shr[0]!=shr[1]&&shr[0]!=shr[1]&&shr[0]!=shr[2]&&shr[0]!=shr[3]&&shr[1]!=shr[2]&&shr[1]!=shr[3]&&shr[2]!=shr[3])
//shuru在1000~9999之間並且各各位不相等,就跳出,否則繼續輸入
break;
else
printf("Error");
}
接著這個輸入的數據和這個隨機數的比較了,其實很簡單
m是位置和數字都對的。n是數字對,但位置不對的
int m=0,n=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(shr[i]==suiji[j])
n++;
for(i=0;i<4;i++)
if(shr[i]==suiji[i])
m++;
n-=m;
接著是列印輸入的數和mn(這個就是判斷的結果)這個我就不用再寫了吧
清屏用system("cls");
最後是總裝,先產生四位的隨機數,接著用一個大循環把輸入和比較還有列印判斷結果包含進去。
退出這個循環的條件有兩個,一個是m=4,一個是到了規定的次數
E. 用C語言編寫一個猜數字游戲的程序(最好能夠解釋一下)
已經改正,如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void circle(int i)
{
int n ;
printf("請輸入您所猜的數字(0-100) \n");
scanf("%d",&n);
if(i<n)
{
printf("the number is larger,input agine.\n");
circle(i);
}
if(i>n)
{
printf("the number is smaller.input agine \n");
circle(i);
}
if(i==n)//?不是
printf("the number is %d so congratulations!you got it!",i);
}
int main()
{
int flag =1;
printf("This is a small game,what you should do is just guess a intange number.\n");
printf("Now,please guess the number!\n");
srand((unsigned)time(NULL));
while(flag)
{
int i=rand()%100;//?使用 % 而不是 / ,產生的數字在0-100之間,放在循環體內,每次循環都產生一個隨機數
circle(i);
printf("\n繼續玩請輸入 1,退出請輸入 0");
scanf("%d",&flag);
}
getchar();
return 0;
}
F. C語言 編寫一個猜數字游戲,規則:使用隨機函數產生一個5位數,輸入猜測數據,判斷幾個正確,詳細如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
void main()
{
intA=0,B,i,j,k=0,a[5],g[5];
printf("請輸入你猜測的一個5位數數字\n");
scanf("%d",&k);
while(k<12345||k>99999)
{
printf("你輸入了一個非常規數據,請重新輸入\n");
scanf("%d",&k);
}
srand((unsignedint)time(NULL));
for(i=0;i<5;i++)
{
a[i]=rand()%9+1;
for(j=0;j<i;j++)
while(a[i]==a[j])
{
a[i]=rand()%9+1;
j=-1;
}
}
printf("隨機給出的數字為\n");
for(i=0;i<5;i++)
printf("%d",a[i]);
printf("\n");
for(i=4;i>=0;i--)
{
g[i]=k%10;
k=(k-g[i])/10;
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(g[i]==a[j])
{
A++;
if(i==j)
B=i+1;
}
}
if(A==5)
printf("你猜測的全部正確\n");
else
{
printf("你猜對的個數:%d\n",A);
printf("你猜對數字的位置:第%d個\n",B);
}
}
G. c語言,編寫一個猜數字游戲
源碼如下:
/*File:guess.c*/
#include<stdio.h>/*standardinput&outputsupport*/
#include<stdlib.h>/*srand()rand()*/
#include<time.h>/*time()*/
/*宏定義*/
#defineNUMBER_LENGTH5/*隨機數長度*/
#defineNUMBER_LIMIT10/*隨機數限制,每一位0-9*/
#defineINPUT_LENTH128/*輸入緩沖區大小*/
chargoal[NUMBER_LENGTH]={0};/*保存隨機數*/
charflag[NUMBER_LIMIT]={0};/*保存隨機數標志,保證不重復*/
charinput[INPUT_LENTH]={0};/*保存輸入*/
/*初始化用於保存數據的數組*/
voidinitData()
{
inti=0;
while(i<NUMBER_LENGTH)
goal[i++]=0;
i=0;
while(i<NUMBER_LIMIT)
{
flag[i++]=0;
}
}
/*初始化用於保存緩沖區的數組*/
voidinitBuffer()
{
inti=0;
while(i<INPUT_LENTH)
input[i++]=0;
}
/*顯示猜測結果*/
voiddisplay()
{
intcount=0;
inti=0;
while(i<NUMBER_LENGTH)
{
if(input[i]==goal[i])
{
printf("%c",'o');
count++;
}
else
{
printf("%c",'x');
}
i++;
}
printf(" RIGHT:%dbit(s) ",count);
if(count==NUMBER_LENGTH)
{
printf("Youwin!Thenumberis%s. ",goal);
exit(0);
}
}
/*生成隨機數*/
voidgeneral()
{
/*以時間作為時間種子保證生成的隨機數真正具有隨機性質*/
srand((unsignedint)time(NULL));
inti=0;
while(i<NUMBER_LENGTH)
{
chartmp;
do
{
tmp='0'+((i!=0)?(rand()%10):(1+rand()%9));
}while(flag[tmp]!=0);
flag[tmp]=1;
goal[i++]=tmp;
}
}
/*輸入方法,用於猜測*/
voidguess()
{
printf(": ");
scanf("%s",input);
display();
initBuffer();
}
/*主函數,程序主框架*/
intmain(intargc,constchar*argv[])
{
initData();
initBuffer();
general();
while(1)guess();
return0;
}
==============================================
運行結果見附圖,希望我的回答能夠對你有所幫助。
H. 用c語言編寫一個猜數字游戲,有一定的容錯功能,界面友好,功能齊全。
# include <stdio.h>
void ss(int * b,int aa)
{
int i;
b[0]= aa/1000;
b[1]= aa/100 -b[0]*10;
b[2]=aa/10-b[0]*100-b[1]*10;
b[3]=aa%10;
//for (i=0;i<4;i++)
//printf("%d\n",b[i]);
}
int main (void)
{
int aa;
int i;
int j;
int a1=0,b1=0;
int bb=1234;
int a[4];
ss(a,bb);
int b[4];
while(1)
{
printf("請輸入一個每位各不同四位數\n");
scanf("%d",&aa);
a1=0;
b1=0;
ss(b,aa);
for (i=0;i<4;i++)
{
if(a[i]==b[i])
{
b1++;
}
for(j=0;j<4;j++)
{
if(a[i]==b[j])
{
a1++;
break;
}
}
}
if(b1==4)
{
printf("%dA%dB",a1,b1);
printf("恭喜你猜對了,這個數是%d",bb);
break;
}
printf("很遺憾這次沒猜對,提示:%dA%dB\n",a1,b1);
}
}
I. c語言猜數字游戲,猜對的個數用A表示,猜對並且位置也對的用B表示,直
才子佳人cáizǐjiārén
[釋義] 才子:有文學才華的男人;佳人:容貌美麗的女子。有才學的男子和美貌的女子。舊時指才華傑出的男子與容貌秀美的女子。舊時多指有愛情關系或婚姻關系匹配相當的男女。
[語出] 宋·晁補之《鷓鴣天》:「夕陽芳草本無恨;才子佳人空自悲。」
[正音] 子;不能讀作「zi」。
[辨形] 佳;不能寫作「家」。
[近義] 佳人才子 成雙作對
[反義] 棒打鴛鴦
J. 用C語言編寫猜數字(喜歡挑戰的人可以來看看哦)
// 猜數字.cpp : Defines the entry point for the console application.
//
#include <stdafx.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
//隨機生成4位數,要求沒有重復數字
void ProceRandomNumber(int data[4])
{
int z;
/*隨機選取1-9999的數,放棄1-999的數,選擇1000-9999的數*/
do
{
srand( (unsigned)time( NULL ) );
z=(rand()%100)*(rand()%100);/*隨機選數*/
data[3]=z%10;/*把隨即數分成4個*/
data[2]=z/10%10;
data[1]=z/100%10;
data[0]=z/1000%10;
}while(z<1000||data[0]==data[1]||data[0]==data[2]||data[0]==data[3]||data[1]==data[2]||data[1]==data[3]||data
[2]==data[3]||data[0]==0);/*判斷每一位數是否相同,如果是則重新輸出*/
return ;
}
void Indata(int number,int data[4])
{
data[0]=number/1000%10;
data[1]=number/100%10;
data[2]=number/10%10;
data[3]=number%10;
}
int PosRight(int question[4],int answer[4])
{
int i,count=0;
for(i=0;i<=3;i++)
{
if(question[i]==answer[i])
{
count++;
}
}
return count;
}
int NumRight(int question[4],int answer[4])
{
int i,j,count=0;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
if((question[i]==answer[j])&&(i!=j))
{
count++;
}
}
}
return count;
}
int main(int argc, char* argv[])
{
int answer,count=0,input[4],output[4],m=0,n=0,choice;
ProceRandomNumber(input);
printf(" 歡迎來玩猜數字游戲!\n 游戲開始啦!!!\n");
do
{
count++;
scanf("%d",&answer);
Indata(answer,output);
m=PosRight(input,output);
n=NumRight(input,output);
if(m==4)
{
printf("你真棒!!!\n這個數字就是%d%d%d%d\n你一共猜了%d次了!\n",input[0],input[1],input[2],input[3],count);
break;
}
else
{
printf("不好意思你錯了哦!! 提示: %dA%dB\n",m,n);
}
if(count==8)
{
printf("你已經猜了八次了!還要繼續嗎?(1:yes/0:false)\n");
scanf("%d",&choice);
if(choice==1)
printf("繼續吧!\n");
else
{printf("結束游戲!\n");
break;}
}
else if(count==15)
{
printf("你已經猜了15 次了,可能方法不對!下次繼續吧!!!\n");
break;
}
}while(1);
return 0;
}