C语言问题,这个程序编译无误,但是运行时候就会出错无法运行

#include<stdio.h>#include<string.h>intmain(){chara[20],b[20],c[40];inti,j,k,max,index... #include<stdio.h>
#include<string.h>
int main()
{
char a[20],b[20],c[40];
int i,j,k,max,index,n1,n2;
char C=' ';
for(i=0;C!='\n';i++){
scanf("%d%c",&a[i],&C);
}
a[i]='\0';
for(i=0,C=' ';C!='\n';i++){
scanf("%d%c",&b[i],&C);
}
b[i]='\0';
n1=strlen(a),n2=strlen(b);
for(i=0,j=0;i<n1;j=0,i++){
for(;j<n2;j++){
if(a[i]==b[j])
break;
}
if(j==n2){
c[k]=a[i];
k++;
}
}
for(i=0,j=0;i<n2;j=0,i++){
for(;j<n1;j++){
if(b[i]==a[j])
break;
}
if(j==n1){
c[k]=b[i];
k++;
}
}
c[k]='\0';
for(i=0,j=0;i<k-1;i++){
max=c[i],index=i;
for(j=i+1;j<k;j++)
if(c[j]>max)
max=c[j],index=j;
if(index!=i)
c[index]=c[i],c[i]=max;
}
puts(c);
return 0;
}
从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集“异或”)。

【输入形式】

首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔,行末有回车换行。

【输出形式】

按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现的整数,以一个空格分隔各个整数)。

【样例输入】

5 1 4 32 8 7 9 -6
5 2 87 10
1

【样例输出】

87 32 10 9 8 7 4 2 -6
展开
 我来答
bhtzu
2013-11-05 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4091万
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
    char a[20],b[20],c[40];
    int i,j,k,max,index,n1,n2;
    char C=' ';
    for(i=0;C!='\n';i++){
        scanf("%d%c",&a[i],&C);
    }
    a[i]='\0';
    for(i=0,C=' ';C!='\n';i++){
        scanf("%d%c",&b[i],&C);
    }
    b[i]='\0';
    n1=strlen(a),n2=strlen(b);
    for(i=0,k=0;i<n1;j=0,i++){//k没有初始化
        for(j=0;j<n2;j++){//每次j都要初始化
            if(a[i]==b[j])
                break;
        }
        if(j==n2){
            c[k]=a[i];
            k++;
        }
    }
    for(i=0,j=0;i<n2;j=0,i++){
        for(;j<n1;j++){
            if(b[i]==a[j])
                break;
        }
        if(j==n1){
            c[k]=b[i];
            k++;
        }
    }
    c[k]='\0';
    for(i=0,j=0;i<k-1;i++){
        max=c[i],index=i;
        for(j=i+1;j<k;j++)
            if(c[j]>max)
                max=c[j],index=j;
            if(index!=i)
                c[index]=c[i],c[i]=max;
    }
    //puts(c); 输出整数,不可以省事儿
    for(i=0;i<k;i++) printf("%d ",c[i]);
    return 0;
}

百度网友8e773d301
2013-11-05 · TA获得超过328个赞
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:103万
展开全部
你的字符串数组a、b内部存储的是数字,这带来了出错的隐患,如果你的数字超过了一个字节(即不在ASCII码范围内),则可能会导致出错。
个人建议:采用字符串操作或者直接将数组a、b的类型设置为int。下面的几个循环好像没有什么问题,如果不会再向我咨询。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式