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");
} 展开
如程序运行时若输入: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");
} 展开
2个回答
展开全部
#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");
}
极端例子
展开全部
有两个问题:一是函数的算法,二是主函数中的输入语句: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");
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询