猜数字游戏(C语言)
2014-04-19 16:20
459 查看
题目:输入一个随机四位数,你猜这个四位数。
你猜的结果与这个四位数进行比较,如果所在的位和
这个位上的数字都相同,用A表示。如果只是数字相同,
而位置不同,则用B表示。你只有10次机会!如:
随机产生的数字为:4325
你猜的数 提示你
4586-------------1A0B
3524-------------0A4B
.
.
.
直到在10次内产生4A0B,则显示你胜利。
过程分析:
1.首先随机产生四个数(不重复)。如:4325
1)先产生一个随机数放在数组a[0]中。如:a[0]=4
2) 再产生一个与第一个不重复的随机数放在a[1]中。如:a[1]=3
3) 再用与第二步相同的办法产生第三个和第四个数放在a[2],a[3]中,分别不重复。如 a[2]=2,a[3]=5
2.用户输入一个四位数。如:4586
1)判断,并确定这个四位数没有重复。有重复则给出提示信息
2)将这个四位数的每一位拆出来放在数组b[4]中。
千位放在b[0],百位放在b[1],十位b[2],个位b[3].
3)分别比较这两数组中的值及位置是否相同。并给出提示信息。
int Acount,Bcount;
Acount=Bcount=0;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(a[i]==b[j])
if(i==j) Acount++;
else Bcount++;
}
你猜的结果与这个四位数进行比较,如果所在的位和
这个位上的数字都相同,用A表示。如果只是数字相同,
而位置不同,则用B表示。你只有10次机会!如:
随机产生的数字为:4325
你猜的数 提示你
4586-------------1A0B
3524-------------0A4B
.
.
.
直到在10次内产生4A0B,则显示你胜利。
过程分析:
1.首先随机产生四个数(不重复)。如:4325
1)先产生一个随机数放在数组a[0]中。如:a[0]=4
2) 再产生一个与第一个不重复的随机数放在a[1]中。如:a[1]=3
3) 再用与第二步相同的办法产生第三个和第四个数放在a[2],a[3]中,分别不重复。如 a[2]=2,a[3]=5
2.用户输入一个四位数。如:4586
1)判断,并确定这个四位数没有重复。有重复则给出提示信息
2)将这个四位数的每一位拆出来放在数组b[4]中。
千位放在b[0],百位放在b[1],十位b[2],个位b[3].
3)分别比较这两数组中的值及位置是否相同。并给出提示信息。
int Acount,Bcount;
Acount=Bcount=0;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(a[i]==b[j])
if(i==j) Acount++;
else Bcount++;
}
#include<stdio.h> #include<time.h> #include<stdlib.h> #define MAX 4 int a[MAX]; int b[MAX]; int Acount,Bcount; void splitNum(int nPut) { a[0]=nPut/1000; a[1]=nPut%1000/100; a[2]=nPut%100/10; a[3]=nPut%10; } void judgeRepeat(int a[MAX]) { int temp=0; for(int i=0;i<4;i++) for(int j=i+1;j<4;j++) { if(a[i]==a[j]) temp++; } if(temp) printf("提示:你输入的数中有重复!\n"); } void randNumber() { int tem[10]={0}; int a; b[0]=rand()%9+1; for(int j=1;j<MAX;j++) { do { a=rand()%10; }while(a==b[j-1]||a==b[j-2]||a==b[j-3]); b[j]=a; } /* b[0]=rand()%9+1; b[1]=rand()%10; b[2]=rand()%10; b[3]=rand()%10; */ } void printRandNum() { printf("随机产生的数为:"); for(int i=0;i<MAX;i++) { printf("%d",b[i]); } printf("\n"); } void compareNum(int a[MAX],int b[MAX]) { for(int i=0;i<4;i++) for(int j=0;j<4;j++) { if(a[i]==b[j]) if(i==j) Acount++; else Bcount++; } } int main(int args,char *agrv[]) { int nPut; int count=0; char cYN; bool age=true; bool fail=true; srand(time(NULL)); randNumber(); /*随机产生的一个四位数*/ while(age&&count<10&&fail) { Acount=Bcount=0; printf("请输入一个不重复的四位数:"); scanf("%d",&nPut); count++; splitNum(nPut); judgeRepeat(a); compareNum(a,b); if(Acount==4) { age=false;} printf("%dA%dB\n",Acount,Bcount); printf("想知道这个数吗(Y/N)? 那样你就输了!还是自己努力吧!\n"); getchar(); cYN=getchar(); if(cYN=='Y'||cYN=='y') fail=false; } if(count==10) { printf("你输入的次数已经超过了10次!下次再来吧!"); } else if(!fail) { printRandNum(); printf("别灰心再来吧!"); } else printf("哇!你好厉害哟,赢了!\n接着来吧!\n"); return 0; }
相关文章推荐
- 基础排序算法——汇总
- QT 做界面,加载c语言自己编译的动态库
- 字符串、字符、字节
- c语言 指针函数 函数指针
- C/C++程序中内存的分配和堆栈的区别总结
- C++primer plus第六版课后编程题答案11.3
- c++中const使用详解
- [C/C++标准库]_[初级]_[函数对象functor的使用]
- [C/C++标准库]_[初级]_[函数对象functor的使用]
- 怎么样学好C++
- C++primer plus第六版课后编程题答案11.2 绝世大坑
- Perl调用C++
- C++中输入
- C语言关键字、标识符和注释
- C++程序记录一
- Dev-C++编程->环境配置
- Dev-C++编程->环境配置
- (C++17的提议) 可恢复的函数和 await
- C++14 泛型lambda(支持显式的lambda捕获列表)
- BASIC语言是1964年在FORTRAN语言的基础上简化而成的