-3

编写 c 程序,用户获取一个包含 n 个元素的数组,并找到其值是数字 5 的倍数的元素。这些元素连同它们的值一起显示在屏幕上,如下所示:V[i]=a ,V[j] = b,.... 我的代码:

#include <stdio.h>
int main ()

    {
        int n,i,sh=0;
        int v[100];
        printf ("Please write n:");
        scanf("%d",&n);
        for (i=0;i<n;i++)
        { printf ("\n Write the element %d",i);
        scanf("%d",&v[i]);
        }
        if (v[i] %5)
        printf("The element is a multiple of 5",&sh);

        return 0;
    }

它编译得很好,但是当我运行它并编写元素时,它什么也没做......我错在哪里?

编辑 :

Yes,here it is :
Please write n: 4
Enter value 0: 10
Enter value 1 : 9
Enter value 2 : 20
Enter value 3:14

V[0]=10,V[2}=20
4

5 回答 5

2

这:

if (v[i] %5)
    printf("The element is a multiple of 5",&sh);

在第一个循环之后,你i等于n+1。您不会重置它,也不会在循环中检查您的元素。
此外,您的格式字符串中没有任何%p内容,您为什么要通过%sh

执行以下操作:

 for (i=0;i<n;i++)
    if (v[i] %5) // not divided by 5
       // Correct prtinf() statement 
       // printf("The element v[%d] = %d is NOT multiple of 5", i, v[i]);
于 2013-08-15T09:00:26.467 回答
2

您的代码中有三个错误。

  • 首先if ( v[i] % 5 )在最后的循环之外,它只会尝试一次 for i = n+1。您将遇到越界问题

  • 你搜索的倍数,5所以条件应该是if ( v[i] % 5 == 0 )

  • 之后,你printf的也错了。

    printf("The element is a multiple of 5",&sh);
    //                                     ^^^^
    

是什么sh?为什么要在 中使用它printf?您格式化字符串似乎不需要参数。

您的代码应如下所示:

for ( i=0; i < n; i++ )
{
    printf( "\n Write the element %d", i );
    scanf( "%d", &v[i] );
    if ( v[i] % 5 == 0 )
        printf( "The element is a multiple of 5" );
}

编辑 :

对于输出的例子,也许你应该做另一个循环:

#include <stdio.h>

int main ()
{
    int n, i, sh = 0; // I still don't for what sh is used ...
    int v[100];

    printf ("Please write n:");
    scanf("%d",&n);

    // Get the values
    for ( i=0; i < n; i++ )
    {
        printf( "\n Write the element %d", i );
        scanf( "%d", &v[i] );
    }

    // Print the values multiple of 5
    for ( i=0; i < n; i++ )
    {
        if ( v[i] % 5 == 0 )
            printf( "V[%d]=%d\n", i, v[i] );
    }

    return 0;
}

这里是工作的例子。

于 2013-08-15T09:06:47.193 回答
2
  1. IF 语句不在循环中
  2. printf("The element is a multiple of 5",&sh);- 我错过了什么吗?(为什么是 &sh?)
  3. IF 语句并不完全正确

我将如何编辑它:

 1|    #include <stdio.h>
 2|
 3|    int main ()        
 4|    {
 5|        int n,i,sh=0;
 6|        int v[100];
 7|        printf ("Please write n:");
 8|        scanf("%d",&n);
 9|        for (i=0;i<n;i++)
10|        { 
11|             printf ("\n Write the element %d",i);
12|             scanf("%d",&v[i]);
13|             
14|             if ((v[i] % 5) == 0)
15|                 printf("The %d. element %d is a multiple of 5", i+1, v[i]);
16|        }
17|
18|        return 0;
19|    }

只是想知道变量sh的目的是什么?或者作者想用它做什么?

于 2013-08-15T09:07:38.707 回答
0
{
    int n,i,sh=0;
    int v[100];
    printf ("Please write n:");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    { printf ("\n Write the element %d",i);
    scanf("%d",&v[i]);
    }

    /// now go back through the array
    //
    for( i = 0; i < n; i++ )
       if( v[i] % 5 == 0 )
           printf( "The element at %d is %d, divisible by 5\n", i, v[i] );

    return 0;
}
于 2013-08-15T09:29:27.210 回答
0

诠释 n,我,sh=0;

//array to hold the numbers
int N[100];

//count of numbers
printf ("Enter the NUMBER count :");
scanf("%d",&n);

//获取数组中的输入 for (i=0;i

//check for the divisibility
for( i = 0; i < n; i++ )
   if( N[i] % 5 == 0 )
       printf( "The element at %d is %d, divisible by 5\n", i, N[i] );

return 0;

}

于 2013-08-15T14:02:43.043 回答