题目(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;
}