当前位置:首页 » 编程语言 » 猜数字c语言对的个数和位数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

猜数字c语言对的个数和位数

发布时间: 2022-06-16 11:32:21

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;
}