C语言,程序运行时为什么总是出错

编写函数voidfun(int*x,intn),它的功能是:删除有n个数据的数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。n为数组长度,规定x中数据都为正数。如... 编写函数void fun(int *x,int n),它的功能是:删除有n个数据的数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。n为数组长度,规定x中数据都为正数。
如程序运行时若输入:122 1461 6234 16 11 663 911 2671 381 6
删除后输出: 122 11 911 381 -1 -1 -1 -1 -1 -1

#define N 10
#include<stdio.h>

void fun(int *x,int n)
{
int i,j,k,a,b;
for(i=0,k=0;i<n;i++)
{
for(j=1;;j++)
{
a=x[i]%10;
if(a==6)break;
else a/=10;
if((a<10)&&(a!=6)){b=1;break;}
}
if(b==1){x[k]=x[i];k++;}
}
for(;k<n;k++)
{x[k]=-1;}
}

void main()
{int a[N],i;
for(i=0;i<N;i++)
scanf("%d",a+1);
fun(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}
展开
 我来答
灰太狼一拳把自己肚子打扁疼的嗷嗷叫
2015-05-23 · TA获得超过230个赞
知道小有建树答主
回答量:273
采纳率:90%
帮助的人:119万
展开全部
#define N 10
#include<stdio.h>
void fun(int *x,int n)
{
 int i;
 int j;
 int num;
 for(i = 0;i<n;i++)
 {
  num = x[i];
  while(num != 0)
  {
   if(num % 10 == 6)
   {
    for(j = i;j<n-1;j++)//前移
     x[j] = x[j+1];
    x[j] = -1;
    i --;    //存在相邻的含有6的数字
    break;
   }
    num /= 10;
  }
 }
}
void main()
{
 int a[N],i;
 for(i=0;i<N;i++)
  scanf("%d",&a[i]);
 fun(a,N);
 for(i=0;i<N;i++)
  printf("%d ",a[i]);
 printf("\n");
}

极端例子

chmwh1992
2015-05-23 · TA获得超过1126个赞
知道小有建树答主
回答量:475
采纳率:100%
帮助的人:535万
展开全部

有两个问题:一是函数的算法,二是主函数中的输入语句:scanf("%d",a+1);//改为a+i

#define N 10  

#include<stdio.h>

void fun(int *x,int n){

 int i,j,k,a,b,c;

 for(i=0;i<n;i++)

 { 

  a=x[i];

  for(j=1;;j++) 

  { 

   b=0;

   c=a%10;  

   if(c==6)break; 

   else a/=10;  

   if(a==0)

   {

    b=1;break;

   } 

  } 

  if(b==0)x[i]=-1;

 }



void main() 

{

 int a[N],i; for(i=0;i<N;i++)

  scanf("%d",a+i);

 fun(a,N);

 for(i=0;i<N;i++) 

  printf("%d ",a[i]); printf("\n"); 

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式