アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語で重複しない4ケタの乱数を発生させ、入力した整数が正しければ正解するまでにかかった回数を表示させるプログラムを作りたいです。
確認することができるように乱数ははじめに表示させています。
3ケタの場合は、以下のように作ることができたのですが、4ケタの場合は作ることができません。
どのように変更すれば作ることができますか?
<3ケタ>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void)
{
int num1, num2, num3;
int user, user1, user2, user3;
int count;


srand(time(0));
num1=rand()%10;
while (1) {
num2=rand()%10;
if (num2!=num1) {
break;
}
}
while (1) {
num3=rand()%10;
if (num3!=num1 && num3!=num2) {
break;
}
}
printf("%d%d%d\n",num3,num2,num1);


count=1;
printf("重複しない3つの数字:");
while(1) {
while (1) {
scanf("%d",&user);
user3=user/100;
user2=(user/10)%10;
user1=user%10;
if (user1!=user2 && user1!=user3 && user2!=user3) {
break;
}
printf("重複してます!重複しない3つの数字:");
}


if (user1==num1 && user2==num2 && user3==num3) {
break;
}

printf("次の数値:");
count++;
}
printf("%d回で当たりました!\n",count);
return 0;
}

<4ケタ>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void)
{
int num1, num2, num3,num4;
int user, user1, user2, user3,user4;
int count;


srand(time(0));
num1=rand()%10;
while (1) {
num2=rand()%10;
if (num2!=num1) {
break;
}
}
while (1) {
num3=rand()%10;
if (num3!=num1 && num3!=num2) {
break;
}
}
while (1) {
num4=rand()%10;
if (num4!=num1 && num4!=num2 && num4!=num3) {
break;
}
}
printf("%d%d%d%d\n",num4,num3,num2,num1);


count=1;
printf("重複しない4つの数字:");
while(1) {
while (1) {
scanf("%d",&user);
user4=user/1000;
user3=user/100;
user2=(user/10)%10;
user1=user%10;
if (user1!=user2 && user1!=user3 && user1!=user4 &&user2!=user3 &&user2!=user4 &&user3!=user4) {
break;
}
printf("重複してます!重複しない4つの数字:");
}


if (user1==num1 && user2==num2 && user3==num3 && user4==num4) {
break;
}

printf("次の数値:");
count++;
}
printf("%d回で当たりました!\n",count);
return 0;
}




以下の部分が間違っていると思うのですが、どのようにしたら良いか分かりません。
while (1) {
scanf("%d",&user);
user4=user/1000;
user3=user/100;
user2=(user/10)%10;
user1=user%10;

A 回答 (1件)

計算機が作りだす乱数は規則性があるんやで。

    • good
    • 0
この回答へのお礼

アドバイス、ありがとうございました。

お礼日時:2016/05/19 22:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!