专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

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

发布时间:2011-06-28 16:18:48 文章来源:www.iduyao.cn 采编人员:星星草
不知道错哪里了
题目(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;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: