c语言数组题 有一个数组,数据元素从下标为1的位置开始存放,试编写一个算法:删除数组

c语言数组题 有一个数组,数据元素从下标为1的位置开始存放,试编写一个算法:删除数组中第一个数值为偶数的结点,返回数组中元素的个数。要求:算法采用函数形式,并在机器上进行调试。并输出删除数据前后的数组。

给你个思路,尝试自己去写吧,挺简单的:
假设a数组要操作的数组,b数组是删除数据后存放a数组元素的数组
首先,通过for循环对该a数组进行遍历,通俗一点就是给个临时变量i,让i++,使得a数组能从第一个查询到最后一个,在for循环体里面可以将a数组的值逐个放入b数组中,我们需要进行一次判断,如果a数组的值除以2 取余之后为0,则这个数为偶数,当这个if语句成立的时候break,跳出循环,设定一个临时变量保存当前a数组的下标,再之后再写一个循环,i要等于刚刚设定的那个临时变量,然后逐个将将a数组的剩下的值逐个放入b数组中追问

可以给编一下吗 还有个运行环境

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-05
#include<stdio.h>

int shanchu(int *a,int n)
{
int t,i,j;
for(i=1;i<=n;i++)
{
if(a[i]%2==0)
{
break;
}
}
for(j=i;j<=n-1;j++)
{
a[j]=a[j+1];
}
return n-1;
}
void print(int *a,int n)
{
printf("输出结果为:\n");
int i;
for(i=1;i<=n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
int main()
{
int a[100],n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
print(a,n);
n=shanchu(a,n);
print(a,n);
return 0;
}

有问题请追问。代码已给出

追问

可以运行吗

追答

当然可以我把我的运行结果贴出来:

追问

这是运行环境 要在这个环境下编程序

追答

哦,我明白你的意思了,就是说输入和输出函数都已经写好了

你只需要把我写的删除函数写上去就好了

在main上面添加一个函数代码为:

int shanchu(int b[MAX],int m)
{
    int t,i,j;
    for(i=1;i<=m;i++)
    {
        if(b[i]%2==0)
        {
            break;
        }
    }  
    for(j=i;j<=m-1;j++)
    {
        b[j]=b[j+1];
    }  
    return m-1;
}

然后在主函数中调用这个函数就ok了调用方法和我写的类似

追问

OK!!谢谢! 我试一下 一会儿有不清楚的再问下你

追答

ok,欢迎追问

追问

那个 怎么调用啊 还是不会

追答

直接在main中调用delete就好了
例如可以在
printarray(a,n);
之后添加
n=delete(a,n);
printarray(a,n);
这样代表调用了delete这个函数然后再输出数组

追问

太感谢!!!

本回答被提问者采纳
相似回答