| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1449 人关注过本帖
标题:求助,为什么有一个scanf会卡住
只看楼主 加入收藏
p1070141149
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求助,为什么有一个scanf会卡住
#include<stdio.h>
int main()
{
int c,d;   
scanf("%d",&c);   
int a[20];
for(int i = 0 ; i < c ; i++){
        scanf("%d", &a[i]);   
}
scanf("%d",&d);//就是这个scanf卡住了,不读入数据,也不会继续执行
int b[20];   
for(int j = 0 ; j < d ; j++){
       scanf("%d", &b[j]);   
}
int flag;
int x = 0;
for(int m = 0 ; m < c ; m++){
        flag == 1;
        for(int n = 0 ; n < d ; n++){
            if(a[m] == b[n]){
                flag = 0;
                break;
            }
        }
        if(flag == 1){
            x++;   
    }
    }   
for(int n = 0 ; n < d ; n++){
        flag == 1;
        for(int m = 0 ; m < c ; m++){
            if(b[n] == a[m]){
                flag = 0;   
            break;
            }
        }
        if(flag == 1){
            x++;   
    }
    }
    int k[x];
    x = 0;   
for(int m = 0 ; m < c ; m++){
        flag == 1;   
    for(int n = 0 ; n < d ; n++){
            if(a[m] == b[n]){
                flag = 0;   
            break;
            }
        }
        if(flag == 1){
            k[x] = a[m];
            x++;   
    }
    }
for(int n = 0 ; n < d ; n++){
        flag == 1;
        for(int m = 0 ; m < c ; m++){
            if(b[n] == a[m]){
                flag = 0;   
            break;   
        }
        }
        if(flag == 1){
            k[x] = b[n];
            x++;   
    }
    }
    int i = 0;   
for(; i < x - 1 ; i++){
        flag = 1;        
for(int p = i + 1;p < x;p++){
            if(k[i] == k[p]){
                flag = 0;   
            break;   
        }
        }
        if(flag == 1){
            printf("%d ", k[i]);
        }
    }
    printf("%d", a[i]);
    return 0;
}
搜索更多相关主题的帖子: scanf flag break for int 
2021-12-10 01:08
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
scanf("%d", &a[i]); 这个做完才到 scanf("%d",&d);

for(int i = 0 ; i < c ; i++)  // 加多个i<20,for(int i = 0 ; i < 20 && i < c ; i++)
        scanf("%d", &a[i]);   
}
2021-12-10 09:09
p1070141149
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-10
收藏
得分:0 
回复 2楼 吹水佬
谢谢,但是好像还是不行。。。而且题目设置的就是c <= 20,所以i < 20肯定成立,,,我加上了一个if(i == c - 1) break;也还是不行。。。
2021-12-10 12:28
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
收藏
得分:10 
你可以在scanf("%d",&c);  后加上一句调试信息 printf("c = %d\n", c);看看c的值是多少,如果c大于21的话,你这个
for(int i = 0 ; i < c ; i++){
        scanf("%d", &a[i]);   
}循环会改变c的值,导致内存泄漏。
2021-12-10 12:45
p1070141149
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-10
收藏
得分:0 
回复 4楼 diycai
c没变,,,不过我把for循环里定义i改成了前面跟c和d一起定义,然后就解决了,但是我不知道为什么。。。
2021-12-10 14:31
liyitong
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-12-11
收藏
得分:0 
程序代码:
        if(flag == 1){
            x++;   
    }
    }
    int k[x];

for(int n = 0 ; n < d ; n++){
        flag == 1;

for(int m = 0 ; m < c ; m++){
        flag == 1;

真是太可怕了——
2021-12-11 08:15
快速回复:求助,为什么有一个scanf会卡住
数据加载中...
 
   



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

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