数字显示不正确
Numbers aren't showing up right
你好!
我有点困惑,我真的尝试了我能想到的所有可能的解决方案。
但是该程序无法正常运行!该程序的目的是从一个数组中分离奇数和对数,并将它们中的每一个放在一个数组中!
当我执行并输入一些简单的数字后,每个数组中都会出现另一个随机的大数字!
为什么会这样,我该如何解决?
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;
}
函数不正确。您需要在函数中为数组 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 的元素数量相等。否则你需要return从函数两个索引。
例如
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;
}
你好! 我有点困惑,我真的尝试了我能想到的所有可能的解决方案。 但是该程序无法正常运行!该程序的目的是从一个数组中分离奇数和对数,并将它们中的每一个放在一个数组中! 当我执行并输入一些简单的数字后,每个数组中都会出现另一个随机的大数字! 为什么会这样,我该如何解决?
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;
}
函数不正确。您需要在函数中为数组 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 的元素数量相等。否则你需要return从函数两个索引。
例如
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;
}