0

私は初心者で、書いているコードに問題があります..次のエラーが表示されます:「行 9 の '{' トークンの前に予期しない非修飾 ID」

また、出力を設定して表示する方法がわからないので、本当に助けていただければ幸いです..

そして、あなたに知らせるために..私は「コードブロック」を使用しています

#include<stdio.h>
#include<conio.h>

int read_temps(float temps[]);
int hot_days(int numOfTemp, float temps[]);
int printf_temps(int numOfTemp,float temps[],int numOfHotDays);

int main(void);
{

int index=0;
float tempVal;
float temps[31];
int numOfTemp,numOfHotDays;
do
 {
printf("\n Enter the noon temperature (500 as a sential value)");
scanf("%f",&tempVal);
if(tempVal!=500.0)
 {
  temps[index]=tempVal;
  index++;
 }
 }while(tempVal!=500.0);
 return index;
{
 int i;
 int count=0;
 for(i=0;i<numOfTemp;i++)
  {
 if(temps[i]>32.0)
     count++;
  }
 return count;
 }
 {
 float sum=0.0;
 int i;
 printf("\nTemperatures of the month");
 printf("\n-------------------------");

 for(i=0;i<numOfTemp;i++)
  {
 printf("\nDay %d : %.2fF",i+1,temps[i]);
 sum=sum+temps[i];
  }
 printf("\nNumber of Hot Days : %d",numOfHotDays);
 printf("\nAverage Temperature for a month : %.2f",sum/numOfTemp);

 }
 {
 clrscr();
 numOfTemp=read_temps(temps);
 numOfHotDays=hot_days(numOfTemp,temps);
 clrscr();
 printf_temps(numOfTemp,temps,numOfHotDays);
 getch();
 }
 }
4

3 に答える 3

2

コード:

int main(void);
{

main実際には、その後に左中括弧が続くのプロトタイプです。プロトタイプは別個のセマンティック要素であるため、その時点でブレースは正当なトークンではありません。

末尾のセミコロンを削除する必要があります;:

int main(void)
{

mainまた、次の関数に到達できないコードがあるようです:

return index;

そのreturnステートメントはループに続いて無条件に実行されるdo...whileため、その後のコードは決して実行できません。

フォーマット スタイルを整理すると、これがより明確になります (たとえば、一貫して 4 つのスペースのインデントを使用するなど)。

言い換えれば、このようなもので、到達不能なコードと不要な中括弧が明らかになります (不要な中括弧は、(a) のプロトタイプを持っている 3 つのサブ関数の関数定義を忘れた結果である可能性が最も高い):

#include <stdio.h>
#include <conio.h>

int read_temps (float temps[]);
int hot_days (int numOfTemp, float temps[]);
int printf_temps (int numOfTemp, float temps[], int numOfHotDays);

int main (void) {
    int index = 0;
    float tempVal;
    float temps[31];
    int numOfTemp, numOfHotDays;

    do {
        printf ("\n Enter the noon temperature (500 as a sentinel value)");
        scanf ("%f", &tempVal);
        if (tempVal!=500.0) {
            temps[index] = tempVal;
            index++;
        }
    } while (tempVal != 500.0);

    return index;

    {
        int i;
        int count = 0;
        for (i = 0; i < numOfTemp; i++) {
            if (temps[i] > 32.0)
                count++;
        }
        return count;
    }

    {
        float sum = 0.0;
        int i;
        printf ("\nTemperatures of the month");
        printf ("\n-------------------------");

        for (i = 0;i < numOfTemp; i++) {
            printf ("\nDay %d : %.2fF", i+1, temps[i]);
            sum = sum + temps[i];
        }
        printf ("\nNumber of Hot Days : %d", numOfHotDays);
        printf ("\nAverage Temperature for a month : %.2f", sum/numOfTemp);
    }

    {
        clrscr ();
        numOfTemp = read_temps (temps);
        numOfHotDays = hot_days (numOfTemp, temps);
        clrscr ();
        printf_temps (numOfTemp, temps, numOfHotDays);
        getch ();
    }
}

最後に、差し迫った問題とは関係ありませんが、1 つ注意してください。非標準のconioヘッダー ファイルと and の使用clrscr(getch特にgetcharが利用可能な場合) を避ける必要がある移植性のあるコードを書くように、可能な限り努力する必要があります。


(a)その場合、各関数の前に定義行を追加し、それらをメイン関数の外に移動する必要があります。

于 2013-11-13T02:39:13.757 に答える
2
int main(void);
{

セミコロンを削除します。関数の宣言と定義の形式を誤解しているようです。

関数定義:

void foo(void)
{
    //something
}

関数宣言:

void foo(void);
于 2013-11-13T02:36:15.220 に答える
0

メインの後のセミコロンです。これを試してみてください。

#include<stdio.h>
#include<conio.h>

int read_temps(float temps[]);
int hot_days(int numOfTemp, float temps[]);
int printf_temps(int numOfTemp,float temps[],int numOfHotDays);

int main(void)
{

int index=0;
float tempVal;
float temps[31];
int numOfTemp,numOfHotDays;
do
 {
printf("\n Enter the noon temperature (500 as a sential value)");
scanf("%f",&tempVal);
if(tempVal!=500.0)
 {
  temps[index]=tempVal;
  index++;
 }
 }while(tempVal!=500.0);
 return index;
{
 int i;
 int count=0;
 for(i=0;i<numOfTemp;i++)
  {
 if(temps[i]>32.0)
     count++;
  }
 return count;
 }
 {
 float sum=0.0;
 int i;
 printf("\nTemperatures of the month");
 printf("\n-------------------------");

 for(i=0;i<numOfTemp;i++)
  {
 printf("\nDay %d : %.2fF",i+1,temps[i]);
 sum=sum+temps[i];
  }
 printf("\nNumber of Hot Days : %d",numOfHotDays);
 printf("\nAverage Temperature for a month : %.2f",sum/numOfTemp);

 }
 {
 clrscr();
 numOfTemp=read_temps(temps);
 numOfHotDays=hot_days(numOfTemp,temps);
 clrscr();
 printf_temps(numOfTemp,temps,numOfHotDays);
 getch();
 }
 }

使用したメソッドを提供しておらず、メインの終了前に return を使用しました。それはデッドコードを生成します。とにかく、これは期待される出力を与えません。最初にそれを修正します。または質問を更新する

于 2013-11-13T03:24:20.397 に答える