从错误信息来看,PTA上面已经提供了main函数实现,你不需要自己再写一个main函数,只需要实现sign函数即可。
改成scanf_s试试吧
不断加悬赏啊,scanf_s行不行呢???
看编译输出
把那个 pragma 放在第一行
或者用这个 #define _CRT_SECURE_NO_WARNINGS 也是要放在第一行
//法一:把int sign(int p);放在main{}开头
#include<stdio.h>
int main()
{
int sign(int p);
int x;
scanf("%d",&x);
printf("sign(%d)=%d\n",x,sign(x));
}
int sign(int p){
if(p>0)return 1;
else if(p==0) return 0;
else return -1;
}
//法二:把int sign(int p)函数放在main函数前面
#include<stdio.h>
int sign(int p){
if(p>0)return 1;
else if(p==0) return 0;
else return -1;
}
int main()
{
int x;
scanf("%d",&x);
printf("sign(%d)=%d\n",x,sign(x));
}
【为什么代码在vs上能跑但是pta上不行?】
思路1、pta的编译器是clang,scanf_s是ms自己搞的,不是标准库中的函数。建议你在windows上装个clang或者gcc(windows上是mingw64)
思路2、加宏开关来约束
#ifdef windows
scanf_s(...);
#else
scanf(...);
#endif