C语言数组随机赋值
答案:3 悬赏:0 手机版
解决时间 2021-03-17 14:50
- 提问者网友:遁入空寂
- 2021-03-16 22:46
有一个数组a[5][5],怎么让该数组随机赋值上4 - 7个-1(4 - 7也是随机产生的),其余元素赋值为0?
最佳答案
- 五星知识达人网友:迷人又混蛋
- 2021-03-16 23:58
#include<stdio.h>
#include<time.h>
#define M 5
#define N 5
void main()
{ int a[M][N],*p,r,i,j,n;
srand((unsigned int)time(NULL));
p=a; for ( i=0;i<M*N;i++,p++ ) (*p)=0;
n=rand()%4+4; //决定生成几个-1,取值4~7
for ( i=0,p=a;i<n;i++ )
{ while ( 1 )
{ r=rand()%(M*N); //随机生成数组下标,取值0~M*N-1
if ( p[r]==0 ) break; //如这个下标已经被赋值过则重新选下标,否则退出循环
}
p[r]=(-1);
}
for ( i=0;i<M;i++,printf("\n") ) for ( j=0;j<N;j++ ) printf("%d ",a[i][j]);
}
#include<time.h>
#define M 5
#define N 5
void main()
{ int a[M][N],*p,r,i,j,n;
srand((unsigned int)time(NULL));
p=a; for ( i=0;i<M*N;i++,p++ ) (*p)=0;
n=rand()%4+4; //决定生成几个-1,取值4~7
for ( i=0,p=a;i<n;i++ )
{ while ( 1 )
{ r=rand()%(M*N); //随机生成数组下标,取值0~M*N-1
if ( p[r]==0 ) break; //如这个下标已经被赋值过则重新选下标,否则退出循环
}
p[r]=(-1);
}
for ( i=0;i<M;i++,printf("\n") ) for ( j=0;j<N;j++ ) printf("%d ",a[i][j]);
}
全部回答
- 1楼网友:持酒劝斜阳
- 2021-03-17 01:04
望采纳
#include<stdio.h>
#include<time.h>
#include<unistd.h>
int main()
{
int a[5][5]={0};
srand((int)time(NULL));
int max,i,j,num;
max=(rand()%4)+4;//产生多少个-1
while(1){
for(i=0,num=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(num<max)
{
if(rand()%3==1)//添加-1条件
{
num++;
a[i][j]=-1;
}
else
a[i][j]=0;
}
}
}
if(num==max)
break;
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%3d",a[i][j]);
putchar('\n');
}
return 0;
}
- 2楼网友:一袍清酒付
- 2021-03-17 00:05
#include <stdio.h> #include <stdlib.h> int cmp(const void* a, const void* b) { return *(int*)a - *(int*)b; } int main() { int k, i; int* arr; printf("请输入一个3位数作为一维数组的维数:"); scanf("%d", &k); printf("生成随机数组:\n"); arr = (int*)malloc(k * sizeof(int)); for(i = 0; i < k; ++i) { arr[i] = rand(); printf("%d ", arr[i]); } printf("\n"); printf("排序后的数组:\n"); qsort(arr, k, sizeof(int), cmp); for(i = 0; i < k; ++i) { printf("%d ", arr[i]); } printf("\n"); return 0; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯