求解c语言

已经int数组A[10]、B[10],对数组A、B进行集合概念上的“并”操作、“交”的操作。结果分别存放在数组D[20]、E[10]。要求:(1)4个数组要有输入输出;(... 已经int数组A[10]、B[10],对数组A、B进行集合概念上的“并”操作、“交”的操作。结果分别存放在数组D[20]、E[10]。
要求:
(1)4个数组要有输入输出;
(2)符合数学上“集合”的概念。
数组的交集与并集
展开
 我来答
百度网友f4f79435d
2015-11-29 · TA获得超过235个赞
知道小有建树答主
回答量:258
采纳率:100%
帮助的人:128万
展开全部
#include <stdio.h>
#define MAX 10
#define Empty 65535

int find(int n, int *a)
{
int i;
int status = 0;
for(i = 0; i < MAX; i++)
if( n == *(a+i)){
status = 1;
break;
}
return status;
}

int main(){
//init
int a[MAX]={Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty};
int b[MAX]={Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty};
int d[2*MAX]={Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty };
int e[MAX]={ Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty};
int i, j;

//input a and b
printf("Pls input the array a\n");
for(i = 0; i < MAX; i++)
scanf("%d",&a[i]);
printf("Pls input the array B[10]:\n");
for(i = 0; i < MAX; i++)
scanf("%d",&b[i]);

//or
j = 0;
for (i = 0; i < MAX; i++)
{
if (a[i] != Empty)
d[j++] = a[i];
}
for (i = 0; i < MAX; i++)
if ( !find(b[i],a))
d[j++] = b[i];
//and
j = 0;
for (i = 0; i < MAX; i++)
{
if (find(a[i], b) && (a[i] != Empty))
e[j++] = a[i];
}

// print A[10]
printf("A[10] = {");
for(i =0; i < MAX; i++)
if (a[i] != Empty)
printf("%d,", a[i]);
printf("}\n");

// print B[10]
printf("B[10] = {");
for(i =0; i < MAX; i++)
if (b[i] != Empty)
printf("%d,", b[i]);
printf("}\n");

// print A[10] or B[10]
printf("A[10] or B[10] = {");
for(i = 0; i < 2*MAX; i++)
{
if (d[i] == Empty)
break;
else
printf("%d,",d[i]);
}
printf("}\n");

// print A[10] and B[10]
printf("A[10] and B[10] = {");
for( i = 0; i < MAX; i++)
{
if (e[i] == Empty)
break;
else
printf("%d,",e[i]);
}
printf("}\n");
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
袁灵凡腾煜
2019-10-18 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:899万
展开全部
第四题
是因为你在for循环后加了一个
";"即一个空语句,后边输出的内容不在循环体中
%md
m为指定输出字段宽度,如果位数小于m则前补空格,若实际位数大于m则按实际输出。
第五题为死循环吧
main()
{
char
*s={"ABC"};
do{

printf("%d",*s%10);

}while(*++s);
}
这样就行了。
第七题
我的输出的是2。。。
第八题
应该是位运算,不懂就看看谭浩强的书,“c程序设计(第三版)”319页。此0010
0011&0010
0011
其中&是与运算,结果还是0010
0011
即十进制的35。
最后
fun(&a[i]);相当与
fun(a+i);函数调用时,形参a的值为实参的值a+i,这两个a没有什么联系,纯粹迷惑大众的。现在fun函数里的a就是a+i了,a[0]相当于*((a+i)+0),
a[1]相当于是*((a+i)+1),简化一下就是a[i]
=
a[i+1];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-01-13 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5747万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式