你好呀! 我有點困惑,我真的嘗試了我能想到的所有可能的解決方案。然而程式運行不正常!該程式的目的是將奇數和對數從一個陣列中分離出來,并將它們中的每一個放在一個陣列中!當我執行時,輸入一些簡單的數字后,每個陣列中都會出現另一個隨機大數字!為什么會這樣,我該如何解決?
void Pairs_impairs(int* n,int T[], int P[], int Imp[]){
int i,j=0;
for (i=0;i<*n;i ){
if(T[i]%2==0){
P[j]=T[i];
j ;}
else{
Imp[j]=T[i];
j ;
}}
*n=j;
}
int main(){
int t[100],p[100],imp[100];
int n;
puts("saisir n :");
scanf("%d",&n);
puts("saisir le tableau : ");
int i;
for(i=0;i<n;i ){
scanf("%d",&t[i]);
}
for(i=0;i<n;i ){
printf("%d ",t[i]);
}
Pairs_impairs(&n,t,p,imp);
printf("\nLes pairs : ");
for(i=0;i<n;i ){
printf("%d ",p[i]);
}
printf("\nLes impairs : ");
for(i=0;i<n;i ){
printf("%d ",imp[i]);
}
return 0;
}
uj5u.com熱心網友回復:
函式不正確。您需要在函式中為陣列 P 和 Imp 保留單獨的索引。例如
void Pairs_impairs(int* n,int T[], int P[], int Imp[]){
int i,j1=0, j2 = 0;
for (i=0;i<*n;i ){
if(T[i]%2==0){
P[j1]=T[i];
j1 ;}
else{
Imp[j2]=T[i];
j2 ;
}}
*n=j1;
}
此外,您應該保證兩個陣列 P 和 Imp 將具有相同數量的元素。否則,您需要從函式回傳兩個索引。
例如
struct Pair
{
size_t first;
size_t second;
};
struct Pair Pairs_impairs( const int T[], size_t n, int P[], int Imp[] )
{
struct Pair p = { .first = 0, .second = 0 };
for ( size_t i = 0; i < n; i )
{
if ( T[i] % 2 == 0 )
{
P[first ] = T[i];
}
else
{
Imp[second ] = T[i];
}
}
return p;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/482810.html
上一篇:列印陣列的最大元素
