實驗七 7.撰寫函式void output(int a[], int n)輸出陣列a中的n個元素。撰寫函式
int deleteElement(int a[], int n, int x) 將具有n個元素的一維陣列a中出現的x洗掉(注意:重復出現的x均需洗掉),函式的回傳值為洗掉x后的陣列a中的實際元素個數。例如初始a陣列中有6個元素,它們是{9,5,6,7,8,5},洗掉元素5后,陣列變為{9,6,7,8},結果陣列中有4個元素,函式回傳4。
注意:被調函式deleteElement()要做兩件作業,一是要洗掉元素,二是回傳剩余元素個數。撰寫主函式測驗該功能,要求陣列元素的初值采用初始化的方式給出,然后呼叫函式output()輸出陣列的初始值,再輸入待洗掉元素,呼叫函式deleteElement()洗掉元素,最后呼叫函式output()輸出結果陣列的全體元素值。
uj5u.com熱心網友回復:
嗚嗚嗚嗚嗚嗚嗚uj5u.com熱心網友回復:
把你的錯誤代碼發出來。uj5u.com熱心網友回復:
供參考
#include <stdio.h>
void output(int a[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
int deleteElement(int a[], int n, int x)
{
int i, j, k, num=0;
int temp[6] = {0};
for (i=0; i<n; i++)
{
if (a[i] == x)
{
for (j=i; j<n; j++)
{
a[j] = a[j+1];
}
num++;
}
}
return n-num;
}
int main()
{
int a[6] = {9,5,6,7,8,5};
int num = 0;
output(a, 6);
num = deleteElement(a, 6, 5);
printf("陣列現在還有%d項\n", num);
output(a, num);
getchar();
return 0;
}
uj5u.com熱心網友回復:
我寫的錯誤的
#include <iostream>
using namespace std;
#define N 100
int deleteElement(int a[],int n,int x)
{ x=0;int b=0;
for(int i=0;i<n;i++)
{while(b<i)
{b++;
if(a[i]==a[x])
{a[i]=a[i+1];i=i+2;x++;}
else {a[i]=a[i];}}
cout<<x;return deleteElement(a,n,x);}
}
int output(int a[],int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<'\t';
return 0;
}
int main()
{
int a[N],i,n,x=0,w;
cin>>n;
cout<<"請輸入陣列:\n(每次輸入一個數)";
for(int i=0;i<n;i++)
{cin>>a[i];}
output(a,n);
cin>>w;
a[N]=deleteElement(a,n,x);
cout<<output(a,n);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94422.html
標籤:C++ 語言
