怎样才能得到不相同的n个随机数?
写了一个猜数字的程序:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "../project2/system.h"
void guess(int n)
{
int a[20], b[20], i, j, countA, countB,k,flag;
p:srand((unsigned)time(0));
do
{
flag = 0;
for (i = 1; i < n + 1; i++)
a[i] = rand() % 10;
for (i = 1; i < n ; i++) /*这个for加大括号和不加有什么区别?加了程序就运行不了!*/
for (j = i + 1; j < n + 1; j++)
if (a[i] == a[j]); /*这是判断是否有重复数的程序,起不到效果还是有重复的*/
{
flag = 1;
break;
}
} while (flag == 1);
k = 0;
printf("请输入%d个(0-9)以内不同的数,中间用空格格开\n", n);
do
{
countA = 0;
countB = 0;
for (i = 1; i < n + 1; i++)
{
scanf_s("%d", &b[i]);
}
k++;
for (i = 1; i < n + 1; i++)
{
if (a[i] ==b[i])
{
countA++;
}
for (j = 1; j < n + 1; j++)
{
if (a[i] == b[j] && i != j)
countB++;
}
}
printf("数和位置都相同的有%d个,数相同位置不同的有%d个。\n你猜了总共%d。\n", countA, countB, k);
for (i = 1; i < n + 1; i++)
{
printf("%d ", a[i]); /*打印出随机数组,有时总有两个数是重复的*/
}
if(countA==n)
{
if (k == 1)
{
printf("\n 你是个超级幸运儿!\n");
}
else if (k > 1 && k <= 5)
{
printf("\n 你是个天才!\n");
}
else if (k > 5 && k <= 10)
{
printf("\n 你很聪明!\n");
}
else
{
printf("\n 你还须努力!\n");
}
goto p;
}
} while (1);
}
void main()
{
int n;
system("cls");
gotoxy(15, 6);
printf("开始猜数字游戏!\n");
gotoxy(15, 10);
printf("请输入猜数个数:");
scanf_s("%d", &n);
guess(n);
system("pause");
}
打印出随机数组,有时总有两个数是重复的,