1. ホーム
  2. c

[解決済み] 関数内で期待される宣言指定子エラー

2022-03-07 02:57:59

質問

初めてなので、書式がおかしかったらごめんなさい。 私は、"expected declaration specifiers"のエラーが発生します。これは、私が一番下で定義したis_prime関数の中にあります。このエラーとそれを修正する方法について教えてください。

#include <stdio.h>
#include <math.h>

main()
{
    int n;
    int k;
    int j;

//gets user input for length of string
    printf("Enter the value of n:");
    scanf("%d", &n);
//stores user input as n

    printf("Printing primes less than or equal to %d: \n", n);

    for(k = 2; k <= n; k++)
    {
        if(is_Prime(k) == 1)
        {
            printf("%d,", k);
        }
    }


   //here is the is_Prime function
{
int is_Prime (int k)


for(j = 2; j < k; j++)
    {
if(k%j != 0)
      {
    return 1;
      }

else if(k%j == 0)
       {
return 0;
break;
       }
    }   
}   

以下は出力エラーです。

main.c: In function 'is_Prime':                                                                                                                                                 
main.c:29:1: error: expected declaration specifiers before 'for'                                                                                                                
 for(j = 2; j < k; j++)                                                                                                                                                         
 ^                                                                                                                                                                              
main.c:29:12: error: expected declaration specifiers before 'j'                                                                                                                 
 for(j = 2; j < k; j++)                                                                                                                                                         
            ^                                                                                                                                                                   
main.c:29:19: error: expected declaration specifiers before 'j'                                                                                                                 
 for(j = 2; j < k; j++)                                                                                                                                                         
                   ^                                                                                                                                                            
main.c:42:1: error: expected declaration specifiers before '}' token                                                                                                            
 }                                                                                                                                                                              
 ^                                                                                                                                                                              
main.c:42:1: error: expected '{' at end of input                                                                                                                                
main.c: In function 'main':                                                                                                                                                     
main.c:42:1: error: expected declaration or statement at end of input  

解決方法は?

定義した is_Prime の本文中にある main . これはC言語ではありえないことです。

あるいは、以下のように、末尾の中括弧が抜けています。 main の本文になります。

もう一つの問題は、すでに shf301さんの回答 .