㈠ 随机产生50个100以内的正整数放入数组中输出这50个整数每行10个求这50个数中奇数的个数及平均值代码用c语
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[50],sum,cnt,i;
srand(time(NULL));
for(i=0,cnt=0;i<50;++i)
{
a[i]=rand()%100+1;
if(a[i]%2)
{
sum+=a[i];
cnt++;
}
printf("%3d%c",a[i],(i+1)%10?' ':' ');
}
printf("%d %f",cnt,(float)sum/cnt);
return 0;
}
㈡ c语言程序出错,代码求指正
你的2位随机数生成错了,应该是a[i] = rand()%90 + 10;
以及你自己说的循环那个是x不是8(也不是50)
以及你存入b[i]的时候先把x++了,会导致b[0]没有存入数据
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
srand((unsigned)time(NULL));
inta[50]={0},b[50]={0};
intfirst,second,max,i,j;
intsum=0,x=0;
floataverage=0;
for(i=0;i<50;++i)
{
if(i%10==0)
putchar(' ');
a[i]=rand()%90+10;
sum+=a[i];
printf("%2d",a[i]);
}
average=(float)sum/50.0;
for(i=0;i<50;++i)
{
first=a[i]/10;
second=a[i]%10;
if(average<a[i]&&(first==5||second==5))
{
b[x++]=a[i];
}
}
for(i=0;i<x;++i)
{
for(j=0;j<7-i;++j)
{
if(b[j]<b[j+1])
{
max=b[j];
b[j]=b[j+1];
b[j+1]=max;
}
}
}
putchar(' ');
for(i=0;i<x;++i)
{
if(i%5==0)
printf("%d ",b[i]);
}
return0;
}
㈢ 随机产生两位整数50个放入数组x中..............
一、首先我根据你的思路,先生成50个随机的两位数,然后从这50个数里依次挑选出不重复的数。
'-------------------------------------------------------------------
'功能:生成50个随机两位整数,并挑选出不重复的数
'说明:先生成50个随机两位整数,然后在50个随机整数里挑选出不重复的数
'''----------------------------------------------------------------
Dimsnum(49)AsInteger
Dimrnum()AsInteger'rnum数组生成不重复的的随机数据
DimnumAsInteger'生成的随机数
DimcountAsInteger'count表示rnum数组里的数量
DimiAsInteger
DimjAsInteger
'生成50个2位随机整数
Fori=0To49
Randomize(Second(Now()))'以系统当前秒为随机种子
snum(i)=Int(Rnd()*90)+10'生成一个两位随机整数
Nexti
'从snum数组中挑选不重复的数
Fori=0To49
num=snum(i)
'在rnum数组中查找生成的随机数
Forj=0Tocount-1
Ifnum=rnum(j)Then
temp=1
ExitFor
EndIf
Nextj
'如果j的值跟count的值想等就说明生成的数并没有重复,然后保存在rnum数组里
Ifj=countThen
ReDimPreservernum(count)
rnum(count)=num
count=count+1
EndIf
Nexti
二、根据你的要求我改进了一下编程思路,其实没有必要先生成50个数,然后再去挑选,完全可以边生成数,边对这个生成的数进行检查。一方面减少了数组对内存的需求,另一方面也减少了程序运算。
'----------------------------------------------------------------------
'功能:生成50个随机两位整数,并挑选出不重复的数
'说明:生成50个随机整数的同时,每生成一个随机数就检查一下,挑出不重复的
'''---------------------------------------------------------------------
Dimrnum()AsInteger'rnum数组生成不重复的的随机数据
DimnumAsInteger'生成的随机数
DimcountAsInteger'count表示rnum数组里的数量
DimiAsInteger
DimjAsInteger
'生成50个2位随机整数,并从中挑选不重复的数
Fori=0To49
Randomize(Second(Now()))'以系统当前秒为随机种子
num=Int(Rnd()*90)+10'生成一个两位随机整数
'在rnum数组中查找生成的随机数
Forj=0Tocount-1
Ifnum=rnum(j)Then
temp=1
ExitFor
EndIf
Nextj
'如果j的值跟count的值想等就说明生成的数并没有重复,然后保存在rnum数组里
Ifj=countThen
ReDimPreservernum(count)
rnum(count)=num
count=count+1
EndIf
Nexti
三、在实际情况中,多数情况下是需要得到某一固定数量的不重复随机数,但按你的思路只能得50个以内不固定数量的随机数。对上述代码稍微进行改进就可以生成50个(可以根据要求更改)不重复随机数。
'----------------------------------------------------------
''''功能:生成50个不重复的随机两位整数
'''--------------------------------------------------------
Dimrnum()AsInteger'rnum数组生成不重复的的随机数据
DimnumAsInteger'生成的随机数
DimcountAsInteger'count表示rnum数组里的数量
DimiAsInteger
DimjAsInteger
'生成50个不重复的两位随机整数
DoWhilecount<50
Randomize(Second(Now()))'以系统当前秒为随机种子
num=Int(Rnd()*90)+10'生成一个两位随机整数
'在rnum数组中查找生成的随机数
Forj=0Tocount-1
Ifnum=rnum(j)Then
temp=1
ExitFor
EndIf
Nextj
'如果j的值跟count的值想等就说明生成的数并没有重复,然后保存在rnum数组里
Ifj=countThen
ReDimPreservernum(count)
rnum(count)=num
count=count+1
EndIf
Loop
㈣ c语言 用循环语句随机产生50个数 输出
题目没有说明数的范围,以下程序为随机生成0~10000以内的任意50个数。
#include<stdlib.h>
#include<time.h>
voidmain(){
inti,n=0;
srand(time(NULL));
for(i=0;i<50;i++)
{
printf("%-5d",rand()%10000);
n++;
if(n%10==0)printf(" ");
}
}
运行示例:
改变生成条件,即可生成具体要求范围内的任意50个数。
㈤ 如何在C语言中产生50个100到200间的随机整数啊谢谢大家,您的回答对我真的很有帮助!
产生有重复的50数字
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int i, j;
int array[50];
for (i=0; i<50; i++)
{
array[i] = rand() % 100 + 100;
}
for (i=0; i<50; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
产生不重复的50位数字
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int i, j;
int array[50];
for (i=0; i<50; i++)
{
AA:
array[i] = rand() % 100 + 100;
for (j=0; j<i; j++)
{
if (array[i] == array[j])
{
goto AA;
}
}
}
for (i=0; i<50; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
㈥ C语言 编程 随机产生50个整数(15~500)之间,并降序排列
#defineN50
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
inta[N],i,j,tmp;
floatavg;
srand(time(0));
for(inti=0;i<N;i++)
a[i]=rand()%(500-15)+15;
//降序排列
for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)
if(a[i]<a[j]){
tmp=a[i];a[i]=a[j];a[j]=tmp;
}
//输出数组
for(i=0;i<N;i++){
printf("%4d",a[i]);
if(i%5==5-1)printf(" ");//5个数据一行
}
}
㈦ 随机产生50个两位整数(10~99范围内)存入a数组中,以每行10个数输出,
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain(){
inta[50];
intsum=0;
srand((int)time(NULL));
for(inti=0;i<50;i++)
{
a[i]=(rand()%90)+10;
if(a[i]%7==0)
sum++;
printf("%d",a[i]);
if((i+1)%10==0)
printf(" ");
}
printf("sum=%d",sum);
}