| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4367 人关注过本帖
标题:别管我,我就是要上头条,怎么破?
只看楼主 加入收藏
小心飞刀hbw
Rank: 2
等 级:论坛游民
帖 子:47
专家分:24
注 册:2016-3-21
结帖率:85.71%
收藏
已结贴  问题点数:5 回复次数:27 
别管我,我就是要上头条,怎么破?
图片附件: 游客没有浏览图片的权限,请 登录注册

#include<stdio.h>
int main() {
    int  A,B,i,j,n,e;
    int a1,b1;
    int a[100],b[100],m,c[100];
    scanf("%d",&n);
    while(scanf("%d",&A)!=EOF) {
        for(i=0; i<A; i++)
            scanf("%d",&a[i]);
    }
    while(scanf("%d",&B)!=EOF) {
        for(j=0; j<B; j++)
            scanf("%d",&b[j]);
    }
    for(i=0; i<A; i++) {
        for(j=0; j<B; j++)
            if(a[i]==b[j]) {
                c[m]=a[i];
                m++;
            }
    }
    int k,t;
    for(i=0; i<m-1; i++)
        for(j=0; j<m-i; j++)
            if (c[j]>c[j+1] ) {
                t=c[j];
                c[j]=c[j+1];
                c[j+1]=t;
            }
    for(i=0; i<m; i++)
        printf("%d",c[i]);
    return 0;
}
前面的输入有问题,不知道怎么改动,大神们帮忙改改,谢谢了。
搜索更多相关主题的帖子: include 
2016-08-22 16:40
sbwl
Rank: 2
等 级:论坛游民
威 望:2
帖 子:10
专家分:18
注 册:2016-8-22
收藏
得分:1 
while -> if
2016-08-22 16:57
小心飞刀hbw
Rank: 2
等 级:论坛游民
帖 子:47
专家分:24
注 册:2016-3-21
收藏
得分:0 
回复 2楼 sbwl
怎么改?
2016-08-22 17:10
sbwl
Rank: 2
等 级:论坛游民
威 望:2
帖 子:10
专家分:18
注 册:2016-8-22
收藏
得分:0 
回复 3楼 小心飞刀hbw
while改成if........
2016-08-22 17:14
小心飞刀hbw
Rank: 2
等 级:论坛游民
帖 子:47
专家分:24
注 册:2016-3-21
收藏
得分:0 
回复 4楼 sbwl
我的程序的问题是只能输入一组数据就自动结束了,我刚刚改了也不对啊
2016-08-22 17:17
sbwl
Rank: 2
等 级:论坛游民
威 望:2
帖 子:10
专家分:18
注 册:2016-8-22
收藏
得分:0 
回复 5楼 小心飞刀hbw
你确定用while能停下来? 你自己在while了加个打印,测试一下是否会跳出? 还有你的m并没有赋值 最后一个for的的范围也错了
2016-08-22 17:21
sbwl
Rank: 2
等 级:论坛游民
威 望:2
帖 子:10
专家分:18
注 册:2016-8-22
收藏
得分:0 
#include<stdio.h>
int main() {
    int  A,B,i,j,n,e;
    int a1,b1;
    int a[100],b[100],m=0,c[100];
    scanf("%d",&n);
    if(scanf("%d",&A)!=EOF) {
        for(i=0; i<A; i++)
            scanf("%d",&a[i]);
    }
    if(scanf("%d",&B)!=EOF) {
        for(j=0; j<B; j++)
            scanf("%d",&b[j]);
    }
    for(i=0; i<A; i++) {
        for(j=0; j<B; j++) {
            if(a[i]==b[j]) {
                c[m]=a[i];
                m++;
            }
        }
    }
    int k,t;
    for(i=0; i<m-1; i++) {
        for(j=0; j<m-i; j++) {
            if (c[j]>c[j+1] ) {
                t=c[j];
                c[j]=c[j+1];
                c[j+1]=t;
            }
        }
    }
    for(i=0; i<m-1; i++)
        printf("%d",c[i]);
       printf("\n");
    return 0;
}
2016-08-22 17:26
小心飞刀hbw
Rank: 2
等 级:论坛游民
帖 子:47
专家分:24
注 册:2016-3-21
收藏
得分:0 
回复 6楼 sbwl
是的,能停下来,我自己都试过好多次了。
2016-08-22 17:26
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:1 
为什么要用while(scanf()!=EOF)...

这道题的输入应该可以很清爽的
int main(){
int n;
scanf(n);//指示有多少组集合
while(n--){
int A;
scanf(A);//指示A集合有多少个元素
for(...){...}//读取A集合的元素

int  B;
scanf(B);//指示B集合有多少个元素
for(...){...}//读取B集合的元素

{...}通过你的方法来找出两个集合的交集并按非递减顺序输出
}
return 0;
}

--------------------------------------------
顺便讲一下,你的代码流程根本就是错的,你怎么能把找交集的代码单独放到最后面执行呢?你前面读了那么多组的数据岂不是一组覆盖一组都没了?


[此贴子已经被作者于2016-8-22 17:55编辑过]

收到的鲜花
  • jzhur07262016-08-23 20:28 送鲜花  3朵   附言:我很赞同

φ(゜▽゜*)♪
2016-08-22 17:45
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
scanf()!=EOF     这句话通常用来读取文件的时候判断是不是读到文件末尾了。EOF的值是-1.而scanf()多数时候会是0(0表示scanf这次运行没有读到任何一个有效的数据。),而不是-1.

详细的解释你可以百度一下找一些博客文章看一看。论坛里面也不止一次讨论过这个问题。



φ(゜▽゜*)♪
2016-08-22 17:51
快速回复:别管我,我就是要上头条,怎么破?
数据加载中...
 
   



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

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