在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;
}
主函数前面少半个括号。 如果你肯把你的代码写好,你就会发现问题了,而且再也不会出现这种问题了
友情提示:代码中一共有4个左大括号,3个右大括号 忘记写括号了,改成这样:
#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:54
如果你肯把你的代码写好,你就会发现问题了,而且再也不会出现这种问题了
友情提示:代码中一共有4个左 ...
大括号是粘贴的时候手滑删掉的,加上之后也会报同样的错…… 召唤风云 发表于 2020-2-8 15:53
主函数前面少半个括号。
大括号是粘贴的时候手滑删掉的,源文件里有,还是会报同样的错 本帖最后由 人造人 于 2020-2-8 16:12 编辑
咸鱼章一 发表于 2020-2-8 15:59
大括号是粘贴的时候手滑删掉的,加上之后也会报同样的错……
也就是说你写完这个问题没有检查就发出来了?你怎么能对你的问题这么不负责任?
既然如此,可想而知你也没有认真检查你的代码
我有一个大胆的想法。你把所有代码复制到另一个新的文件里再运行。因为我根本找不出错误。(一般来说vs不能使用scanf函数,竟然没有报错) 人造人 发表于 2020-2-8 16:20
问了别人也说代码没问题,暂时还没找到报错原因。不过谢谢解答。 召唤风云 发表于 2020-2-8 16:24
我有一个大胆的想法。你把所有代码复制到另一个新的文件里再运行。因为我根本找不出错误。(一般来说vs不能 ...
之前一直用的gcc,vs用scanf会出问题还是第一次知道,谢谢指教~
页:
[1]