| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:很久没写c程序了!数据结构试验课一习题,自己写的始终报错!求大神指教!
只看楼主 加入收藏
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:12 
很久没写c程序了!数据结构试验课一习题,自己写的始终报错!求大神指教!
求大神帮忙啊!这个程序我想了很久了!自己也尝试写了!但是毕竟很久没碰c了!忘了很多!似乎这个题也有难度!请帮忙看看我写的程序!要是改对了!二十分全给你!
原题是:      
从键盘输入集合A、B,长度随机,不允许输入相同值,以-9999表示输入结束,求集合A、B的并集和交集。
本人写的程序如下:
#include<stdio.h>
void main()
{
    int a[100],b[100],c[100],d[100],h,i,j,k,l,m;
    printf("请输入a[]:");
    for(i=0;i<100&&h!=-9999;i++)
        scanf("%d",&a[i]);
    printf("请输入b[]:");
    for(j=0;j<100&&h!=-9999;j++)
        scanf("%d",&b[j]);
    for(i=0;i<100;i++)
    {
        for(j=0;j<100;j++)
            if(a[i]=b[j])
                c[k]=a[i];k++;
            else c[k+m]=a[i];c[k+m+1]=b[j];m++;
    }
    for(k=0;k<100;k++)
        printf("a[]和b[]的并集是:%d",c[k]);
    for(i=0;i<100;i++)
    {
        for(j=0;j<100;j++)
            if(a[i]=b[j])
                d[l]=a[i];

    }
printf("a[]和b[]的交集是:%d",d[l]);
}
搜索更多相关主题的帖子: c程序 include 
2012-11-26 19:35
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
收藏
得分:0 
我自己再改了改!如下:#include<stdio.h>
void main()
{
    int a[100],b[100],c[100],d[100],i,j,k,l,m=1;
    printf("请输入a[]:");
        for(i=0;i<100;i++)
        {
            scanf("%d",&a[i]);
        if(a[i]==-9999)
            break;
        }
    printf("请输入b[]:");
    for(j=0;j<100;j++)
    {
        scanf("%d",&b[j]);
        if(b[j]==-9999)
            break;

    }
    for(i=0;i<100;i++)
    {
        for(j=0;j<100;j++)
        {
            if(a[i]=b[j])
            {    c[k]=a[i];d[l]=a[i];k++;l++;}
            else d[l+m]=a[i];d[l+m+1]=b[j];m++;
    }
    for(k=0;k<100;k++)
        printf("%d\n",c[k]);
    for(l=0;l<200;l++)
        printf("%d",d[l]);
     
     }



}
2012-11-26 21:13
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
收藏
得分:0 
求关注啊!
2012-11-26 21:14
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
收藏
得分:0 
我改了之后还是有毛病!求交集并集的那儿错了!
2012-11-26 21:14
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
收藏
得分:0 
怎么没人帮忙看看啊!
2012-11-26 21:42
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
收藏
得分:0 
又改动了一下!求大神帮忙啊!
#include<stdio.h>
void main()
{
    int a[5],b[5],c[5],d[5],i,j,k=1,l=1,m=1;
    printf("请输入a[]:");
        for(i=0;i<100;i++)
        {
            scanf("%d",&a[i]);
        if(a[i]==-9999)
            break;
        }
    printf("请输入b[]:");
    for(j=0;j<100;j++)
    {
        scanf("%d",&b[j]);
        if(b[j]==-9999)
            break;

    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            if(a[i]=b[j]!=-9999)
            {
                c[k]=a[i];
                k++;
                d[l]=a[i];
                l++;
            }
            else
                d[l+m]=a[i];
                d[l+m+1]=b[j];
                  m++;
    }

        printf("%d\n",c[k]);

        printf("%d",d[l]);
     
     }



}
2012-11-26 22:16
萨尔甘
Rank: 2
等 级:论坛游民
帖 子:23
专家分:55
注 册:2012-11-22
收藏
得分:10 
楼主的输出函数放到for循环里了,试试把它拿出来,再用for循环单独输出,你是不是想比较一个输出一个,这样好像不行啊
2012-11-26 23:11
萨尔甘
Rank: 2
等 级:论坛游民
帖 子:23
专家分:55
注 册:2012-11-22
收藏
得分:0 
回复 6楼 周云
刚发现if(a[i]=b[j]!=-9999)
应该是if(a[i]==b[j]&&a[i]!=-9999),就可以了,你写的是把b[j]赋值给a[i]了,这样是错误的语法,相当于数组复制不允许,还有else那里只执行了一条语句d[l+m]=a[i];应该也不是你想要的效果吧,还有储存并集的数组设置的太小,要是没有交集就得能放十个数以上,暂时发现这些,太晚了,不帮你改完了,剩下的你自己应该能解决。希望对你有帮助
2012-11-26 23:48
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
收藏
得分:0 
回复 7楼 萨尔甘
我就是想的,比较一个输出一个!
2012-11-27 17:01
周云
Rank: 1
等 级:新手上路
帖 子:46
专家分:2
注 册:2012-9-1
收藏
得分:0 
回复 8楼 萨尔甘
oh,no!犯了这么大一个低级错误!
2012-11-27 17:03
快速回复:很久没写c程序了!数据结构试验课一习题,自己写的始终报错!求大神指 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057475 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved