在我的C程序中收到错误“Unexpected unqualified-id”

时间:2013-11-13 02:34:14

标签: c codeblocks

我是初学者,我正在编写代码的问题。 我收到以下错误:“第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();
 }
 }

3 个答案:

答案 0 :(得分:2)

int main(void);
{

删除分号。你似乎误解了函数声明和定义的格式。

功能定义:

void foo(void)
{
    //something
}

功能声明:

void foo(void);

答案 1 :(得分:2)

代码:

int main(void);
{

实际上是main的原型,后面是一个左大括号。由于原型是一个独特的语义元素,因此括号在那时不是合法的标记。

您需要删除尾随分号;

int main(void)
{

您的main函数中似乎还有无法访问的代码:

return index;

return语句在do...while循环后无条件执行,因此后面的代码永远不会被执行。

一旦整理了格式样式(例如,一直使用四个空格缩进),这将变得更加清晰。

换句话说,像这样的东西,无法访问的代码和不必要的大括号变得明显(不必要的大括号很可能是你忘记为你有(a)中):

#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 ();
    }
}

还有一个最后的说明,尽管这与你眼前的问题无关。您应尽可能努力编写可移植代码,这将需要避免使用非标准conio头文件以及使用clrscrgetch(特别是在getchar时可用)。


(a)如果的情况,你需要在每个函数之前添加定义行,并将它们移到main函数之外。

答案 2 :(得分: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();
 }
 }

您没有提供您使用过的方法,并在main结束前使用了return。 这会产生死代码。所以无论如何这不会给出预期的输出。 首先纠正。或更新您的问题