不知道错哪里了

cailineng 2012-01-23 11:52:14
题目(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;
}
}
...全文
159 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小迷 2012-01-25
  • 打赏
  • 举报
回复
d=strlen(b);
??
小班得瑞 2012-01-24
  • 打赏
  • 举报
回复
这玩意,帮你顶一下吧
s_hhm 2012-01-24
  • 打赏
  • 举报
回复
大概的给你从写了个,我把输入 输出 还有删除分别放在了三个函数中去做了.只可以处理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;
}
ProgrammingRing 2012-01-23
  • 打赏
  • 举报
回复

#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;
}

}
c090869 2012-01-23
  • 打赏
  • 举报
回复
实参与形参编译通不过。d等与1
cailineng 2012-01-23
  • 打赏
  • 举报
回复
#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[10],b[10],c);
d=strlen(b);
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;
}

}
我改成这样后错误没有了,但是输入完一个数之后就错误了
Feedbook 2012-01-23
  • 打赏
  • 举报
回复
你有什么错误可以写出来。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧