如何用C语言产生随机四个不相同的一位数并赋值给数组?

随机产生4个不相同的从0~9的数并赋值给一个数组a[4]
2024-12-26 21:55:07
推荐回答(5个)
回答1:

#include "stdafx.h"
#include "process.h"
#include "time.h"//引入时间头文件  利用时间作为随机数种子
#include 
using namespace std;
bool testRepetition(int iArr[], int newNum, int ilength);//定义函数  判断新产生的随机数是否与前面有重复值
int main(int argc, char* argv[])
{
int iNum[4] = { 0 };//定义整形数组  初始化各项为0
srand((unsigned)time(NULL));//出初始化随机数种子
for (int i = 0; i < 4; i++)
{
int iTem = rand() % 10;//产生第一个随机数
int iLen = sizeof(iNum) / sizeof(iNum[0]); //获取数组长度
while (!testRepetition(iNum, iTem, iLen))  //直到产生与之前不重复的随机数  赋值给数组项
{
iTem = rand() % 10;//产生随机数
}
iNum[i] = iTem;//产生随机数并赋值给数组项
cout << iNum[i] << "\t" << endl;//输出数组项数据
}
system("pause");
return 0;
}
bool testRepetition(int iArr[], int newNum, int ilength)
{
//sizeof(iArr) / sizeof(iArr[0]) 无法获取到数组的长度   数组参数传递的是指针
for (int i = 0; i < ilength; i++)
{
//printf("\n**************%d,%d,%d,%d****************\n", sizeof(iArr) / sizeof(iArr[0]),i, iArr[i], newNum);
if (iArr[i] == newNum){ return false; }
}
return true;
}

回答2:

#include 
#include 
#include 
int main()
{
int a[4];
int i,j;

    srand(time(NULL));
for( i=0; i<4; i++ )
{
int x=rand()%10;
for( j=0;j {
if ( a[j]==x )
break;
}
if ( j >= i ) //没重复
a[i]=x;
else
i--;
}
for( i=0; i<4; i++ ) //输出
printf("%d ", a[i] );
return 0;
}

回答3:

#include
#include
#include

int rep(int *a, int n,int x){
int i=0;
while(i return (i}
int main(){
int a[4];
int i,d;
srand(time(0));
a[0]=rand()%10;
for(i=1; i<4; i++){
d=rand()%10;
while(rep(a,i,d))
d=rand()%10;
a[i]=d;
}
for(i=0; i<4; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

回答4:

#include 
#include 
#include 
int main()
{
    int a[4], i, n = 0;
    srand((unsigned int)time(NULL));
    while (1){
        a[n] = rand() % 10;
        for (i = 0; i < n; ++i){
            if (a[i] == a[n])break;
        }
        if (i >= n){
            n++;
            if (n == 4)break;
        }
    }
    for (i = 0; i < n; ++i){
        printf ("%3d", a[i]);
    }
    printf ("\n");
    return 0;
}

回答5:

1、用rand()%10 产生从0 到 9的数据。

2、产生第一个赋值给a[0]
3、产生第二个,比较是否和第一个一样,如果不一样,则赋值给a[1],如果一样则 重新产生,再比较
4、以此类推