咸鱼章一 发表于 2020-2-8 15:41:51

在VS2012中编译C程序 报错变量未声明

本帖最后由 咸鱼章一 于 2020-2-8 15:59 编辑

以下程序gcc编译能过,VS编译报错如下:

text05.c(16): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
text05.c(17): error C2065: “sq”: 未声明的标识符
text05.c(17): warning C4244: “=”: 从“double”转换到“int”,可能丢失数据
text05.c(18): error C2065: “sq”: 未声明的标识符
text05.c(18): warning C4244: “return”: 从“int”转换到“float”,可能丢失数据
text05.c(20): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)


问题:求n以内(不包括 n)同时能被 3 和 7 整除的所有自然数之和的平方根,并作为函数值返回。

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

float smsqr(int n)
{
      int m,sum=0;
      for(m=0;m<n;m++)
                {
                        if(m%21==0)
                        {
                                sum+=m;
                               }
                           //printf("%d\n",sum);
      }
      float sq;
        sq=sqrt((float)sum);
      return sq;
}

int main()
{
      int n;
        float sq;
      printf("请输入一个自然数:");
      scanf("%d",&n);
      printf("%.3f\n",smsqr(n));
      
                return 0;
}

召唤风云 发表于 2020-2-8 15:53:09

主函数前面少半个括号。

人造人 发表于 2020-2-8 15:54:24

如果你肯把你的代码写好,你就会发现问题了,而且再也不会出现这种问题了

友情提示:代码中一共有4个左大括号,3个右大括号

一个账号 发表于 2020-2-8 15:57:36

忘记写括号了,改成这样:
#include <stdio.h>
#include <math.h>

float smsqr(int n)
{
      int m,sum=0;
      for(m=0;m<n;m++)
                {
                        if(m%21==0)
                        {
                              sum+=m;
                               }
                               //printf("%d\n",sum);
      }
      float sq;
      sq=sqrt((float)sum);
      return sq;
}

int main()
{
      int n;
      float sq;
      printf("请输入一个自然数:");
      scanf("%d",&n);
      printf("%.3f\n",smsqr(n));
      
                return 0;
}

咸鱼章一 发表于 2020-2-8 15:59:26

人造人 发表于 2020-2-8 15:54
如果你肯把你的代码写好,你就会发现问题了,而且再也不会出现这种问题了

友情提示:代码中一共有4个左 ...

大括号是粘贴的时候手滑删掉的,加上之后也会报同样的错……

咸鱼章一 发表于 2020-2-8 16:00:34

召唤风云 发表于 2020-2-8 15:53
主函数前面少半个括号。

大括号是粘贴的时候手滑删掉的,源文件里有,还是会报同样的错

人造人 发表于 2020-2-8 16:11:21

本帖最后由 人造人 于 2020-2-8 16:12 编辑

咸鱼章一 发表于 2020-2-8 15:59
大括号是粘贴的时候手滑删掉的,加上之后也会报同样的错……

也就是说你写完这个问题没有检查就发出来了?你怎么能对你的问题这么不负责任?
既然如此,可想而知你也没有认真检查你的代码

人造人 发表于 2020-2-8 16:20:51

召唤风云 发表于 2020-2-8 16:24:13

我有一个大胆的想法。你把所有代码复制到另一个新的文件里再运行。因为我根本找不出错误。(一般来说vs不能使用scanf函数,竟然没有报错)

咸鱼章一 发表于 2020-2-8 19:45:13

人造人 发表于 2020-2-8 16:20


问了别人也说代码没问题,暂时还没找到报错原因。不过谢谢解答。

咸鱼章一 发表于 2020-2-8 19:50:37

召唤风云 发表于 2020-2-8 16:24
我有一个大胆的想法。你把所有代码复制到另一个新的文件里再运行。因为我根本找不出错误。(一般来说vs不能 ...

之前一直用的gcc,vs用scanf会出问题还是第一次知道,谢谢指教~
页: [1]
查看完整版本: 在VS2012中编译C程序 报错变量未声明