【发布时间】:2021-03-29 20:38:20
【问题描述】:
滚动了解更多详情
我的代码:
#include<stdio.h>
main()
{
int T[50], X[50], TEST[50] ,N, i, j, n_indices=0;
do { printf("Enter size of aray : ");
scanf("%d", &N);
} while ( N <= 0 || N > 50);
////////////////////////////////////////////////
//Filling the array
printf("\nRemplissage :");
for ( i = 0 ; i < N ; i++ )
{
printf("\n T[%d] = ", i);
scanf("%d", &T[i]);
}
///////////////////////////////////////////////
//Array
printf("\nArray : ");
for ( i = 0 ; i < N ; i++ )
{
printf("\n T[%d] = %d ", i, T[i]);
}
//////////////////////////////////////////////
printf("\n /// Solution /// : ");
//Problem part
for( i=0 ; i< N ; i++ )
{
TEST[i] = T[i];
}
for ( i = 0 ; i < N ; i++ )
{
for ( j=0 ; j < N ; j++ )
{
if ( TEST[i] == TEST[j])
{
X[n_indices] = j;
n_indices++;
}
}
//Show results
for ( j = 0 ; j < n_indices ; j++ )
{
printf("\n T[%d] = %d ", X[j], TEST[X[j]]);
}
printf("\n //////////// ");
n_indices=0;
//Removing T[i]
for ( i=0 , j=0 ; i<N ; i++)
{
if (TEST[i] != T[i] )
{
TEST[j]=TEST[i];
j++;
}
}
}
在最后一个循环中,代码在一个循环后停止。 该程序的目的是显示每个元素在数组中与其对应位置重复的次数。 如果可能的话,我很想知道是什么问题造成的。
输入:
T[0] = 1
T[1] = 2
T[2] = 2
T[3] = 1
T[4] = 5
T[5] = 1
我想要的输出:
T[0] = 1
T[3] = 1
T[5] = 1
/////////
T[1] = 2
T[2] = 2
/////////
T[4] = 5
/////////
我得到了什么:
T[0] = 1
T[3] = 1
T[5] = 1
/////////
【问题讨论】:
-
请避免需要水平和垂直滚动才能完整阅读的代码。
-
您在一个内部循环 (
for ( i=0 , j=0 ; i<N ; i++)) 中覆盖了外部i -
那么使用另一个变量会解决它吗? @obe
-
我实际上并没有分析整个代码,我只是专门寻找这样的覆盖。如果其余的都是正确的,那么是的......
-
即使更改后,T[i] 也没有完全删除