C语言编程小题目

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:18:46
不知道大家有没有玩过猜数字的游戏,就是系统随机产生四个数字让你去猜,你事先什么都不知道,你可以任意输入四个不重复的数字,它会返回一个结果:如果数字正确并且位置正确,就是A,如果数字正确但位置不正确,就是B。例如系统随机数字是4528,而你输入1234,就会显示0A2B,如果你再输入4321,就会显示:2A0B;你按照规律猜出最后的答案。
我自己编了一点,但不能让它随机产生四个不重复的数:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int num[4];
int A,B,C,D;
int a=0,b=0;
for(int i=0;i<4;i++)
{
num[i]=rand()%10;
printf("%d\t",num[i]);
}
printf("请输入四个数:\n");
scanf("%d%d%d%d",&A,&B,&C,&D);
if(A==num[0]&&B==num[1]&&C==num[2]&&D==num[3])
printf("你真聪明!");
else
{
if(A==num[0])
a++;
if(B==num[1])
a++;
if(C==num[2])
a++;
if(D==num[3])
a++;
if(A==num[1]||A==num[2]||A==num[3])
b++;
if(B==num[0]||B==num[2]||B==num[3])
b++;
if(C==num[0]||C==num[1]||C==num[3])
b++;
if(D==num[0]||D==num[1]||D==num[2])

以下代码只是根据你的代码改了一下,功能能够实现了,不过编程风格有点差,自己再改改吧。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int num[4];
int A,B,C,D;
int a=0,b=0;
srand((unsigned)time(NULL));

leap:for(int i=0;i<4;i++)
{
num[i]=rand()%10;
/*printf("%d\t",num[i]); */
}
while(1)
{
printf("请输入四个数:\n");
scanf("%d%d%d%d",&A,&B,&C,&D);

if(A==num[0]&&B==num[1]&&C==num[2]&&D==num[3])
{
printf("你真聪明!\n");
goto leap;
}
else
{
if(A==num[0])
a++;
if(B==num[1])
a++;
if(C==num[2])
a++;
if(D==num[3])
a++;
if(A==num[1]||A==num[2]||A==num[3])
b++;
if(B==num[0]||B==num[2]||B==num[3])
b++;
if(C==num[0]||C==num[1]||C==num[3])
b++;
if(D==num[0]||D==n