0

我是初学者,我正在编写的代码有问题.. 我收到以下错误:“第 9 行中的 '{' 标记之前出现意外的 unqualified-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);
{

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

函数定义:

void foo(void)
{
    //something
}

函数声明:

void foo(void);
于 2013-11-13T02:36:15.220 回答
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头文件和使用clrscrand getch(尤其是在getchar可用时)。


(a)如果这种情况,您需要在每个函数之前添加定义行并将它们移动到主函数之外。

于 2013-11-13T02:39:13.757 回答
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。那会生成死代码。所以无论如何这不会给出预期的输出。先纠正一下。或更新您的问题

于 2013-11-13T03:24:20.397 回答