一道c语言问题:输入比较2组数字

菜鸟上路..希望有c语言大侠相助

问题是这样的:
先从1-47里面随机不重复的输入6个数的数字,储存进array。
再从1-47里随机不重复输入5个数字,储存进另一个array.
最后再用一个array显示出相同的数字。

以上。先谢谢各位了!!!

我对“随机不重复的输入”的理解,利用键盘手动输入一些数字。手动输入时随机性不用只考虑注意不重复即可。

下面是程序:

#include<stdio.h>

main()

{

 int i,j,a[6],b[5],c[6],count=0;

 printf("input 6 numbers to array a\n");

 for(i=0;i<6;i++)

 {

  printf("%2d: ",i+1);

  scanf("%d",&a[i]);

  while(a[i]<1 || a[i]>47)

  {

   printf("input %2dth again\n%2d: ",i+1,i);

   scanf("%d",&a[i]);

  }

 }

 printf("input 5 numbers to array b\n");

 for(i=0;i<5;i++)

 {

  printf("%2d: ",i+1);

  scanf("%d",&b[i]);

  while(a[i]<1 || b[i]>47)

  {

   printf("input %2dth again\n%2d: ",i+1,i);

   scanf("%d",&b[i]);

  }

 }

 for(i=0;i<6;i++)

  for(j=0;j<5;j++)

  {

   if(a[i]==b[j])

   {

    c[count]=a[i];

    count++;

   }

  }

 printf("the same between array a and array b are:\n");

 for(i=0;i<count;i++)

  printf("%3d",c[i]);

 printf("\n");

}

测试结果见附图。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-26
你好!!!
代码如下:
#include "stdio.h"
#include "string.h"
int main()
{
int a[6],b[5],c[5];//分别存放6,5个数据的数组和用共同元素的数组
int i,j,n=0;
printf("请输入1-47中不重复的6个数据\n");
for(i=0;i<6;i++)
scanf("%d",&a[i]);

printf("请输入1-47中不重复的5个数据\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
for(i=0;i<6;i++)//依次比较数组a中的数据是不是和数组b相当
{
for(j=0;j<5;j++)
if(a[i]==b[j])
c[n++]=a[i];
}
if(n!=0)//判断是不是没有共同的元素
{
printf("两个数组共同的元素是: \n");
for(i=0;i<n;i++)//输出共同的元素
printf("%d ",c[i]);
printf("\n ");
}
else
printf("两个数组没有共同的元素!!! \n");

return 0;
}
测试:
请输入1-47中不重复的6个数据
1 2 3 4 5 6
请输入1-47中不重复的5个数据
3 8 9 15 6
两个数组共同的元素是:
3 6
Press any key to continue

请输入1-47中不重复的6个数据
1 2 3 4 5 6
请输入1-47中不重复的5个数据
7 8 9 10 11
两个数组没有共同的元素!!!
Press any key to continue本回答被网友采纳
第2个回答  2010-09-26
//你可以修改范围 1--47 缩小到10 ,可以方便验证
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void main()
{
int int_array0[6]={0},int_array1[6]={0},i,j,key=0;
for(i=0;i<6;i++)
{
key=0;
while( key==0)
{

key=rand();
if(key<1||key>47) key=0;
for(j=0;j<6;j++)
{
if(key==int_array0[j]) key=0;
}
}

int_array0[i]=key;
}
for(i=0;i<5;i++)
{
key=0;
while(key==0)
{
key=rand();
if(key<1||key>47) key=0;

for(j=0;j<5;j++)
{
if(key== int_array1[j]) key=0;
}
}

int_array1[i]=key;
}
for(i=0;i<6;i++)
{
for(j=0;j<5;j++)
if(int_array0[i]==int_array1[j])
printf("相同元素有:%d\n",int_array0[i]);

}
}
第3个回答  2010-09-26
rand()的种子是固定的,在之前调用srand( (unsigned)time( NULL ) )去当前系统的时间做种子,可以得到不一样的随机数;
rand()得到的是0~65535的随机数,所以要得到1~xx的随机数可以取模
既要得到1~47即rand()%47+1,因为抛弃小数点所以要加一
void main()
{
int int_array0[6]={0},int_array1[6]={0},i,j,key=0;
for(i=0;i<6;i++)
{
key=0;
while( key==0)
{

key=rand();
if(key<1||key>47) key=0;
for(j=0;j<6;j++)
{
if(key==int_array0[j]) key=0;
}
}

int_array0[i]=key;
}
相似回答
大家正在搜