读书人

不知道错哪里了,该怎么处理

发布时间: 2012-02-15 12:09:44 作者: rapoo

不知道错哪里了
题目(1)编写一个程序实现如下功能:一个整型数组有10个元素,删除所有值为n的元素。要求:
① 主函数完成n的输入,数组元素输入以及删除后数组元素的输出。
② 删除功能用子函数完成。
#include <stdio.h>
#include <stdlib.h>

int main()
{void over(int a[10],int b[10],int c);
int a[10],b[10],c,d,i;
a[10]={1,2,3,4,5,6,7,8,9,10};
scanf("%d",&c);
over(a[10],b[10],c);
d=strlen(b);
for(i=0;i<d;i++)
{
printf("%d\t",b[i]);
}
return 0;
}
void over(int a[10],int b[10],int c)
{int i,j;
j=0;
for(i=0;i<10;i++)
{
if(a[i]!=c)
{
b[j]=a[i];
j++;
}
else continue;
}
}


[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>int main(){    void over(int a[10],int b[10],int c);    int a[10]={1,2,3,4,5,6,7,8,9,10},b[10],c,d,i;    printf("请输入你要删除的数:");    scanf("%d",&c);    over(a,b,c);         // 这里你原先传送的a[10]的内容。。和实参不服。。还越界了    d=sizeof(b) / sizeof(int) - 1;   // 改成这个。。strlen是测量字符串的。。    for(i=0;i<d;i++)    {        printf("%d\n",b[i]);    }    return 0;}void over(int a[10],int b[10],int c){    int i,j;    j=0;    for(i=0;i<10;i++)    {        if(a[i]!=c)        {            b[j]=a[i];            j++;        }        else continue;    }    }
[解决办法]
大概的给你从写了个,我把输入 输出 还有删除分别放在了三个函数中去做了.只可以处理int型.没做泛型处理.

#include <iostream>
using namespace std;
bool over(int *arry,int len,int val)
{
for(int i=0;i<len;i++)
{
if(val==arry[i])
{
len--;
while(i<len)
{
arry[i]=arry[i+1];
i++;
}
arry[len++]=-1;
return 1;
}
}
cout<<" 未找到相匹配的值";
return 0;
}
void intput(int *arry,int len)
{
int t=len;
for(int i=0;i<len;i++)
{
cout<<"请输入第"<<i+1<<"个元素,还可以输入"<<t--<<"个元素."<<endl;
cin>>arry[i];
}
}
void output(int *arry,int len)
{
for(int i=0;i<len;i++)
{
cout<<arry[i]<<endl;
}
}
int main()
{
int a[5];
intput(a,5);
output(a,5);
cout<<endl;
over(a,5,3);
output(a,5);
return 0;
}

读书人网 >C语言

热点推荐