出现该错误的原因为编译时只变编译了源文件的一部分,故在链接时无法从编译好的目标代码中找到print函数,所以出错。
成都创新互联公司是一家从事企业网站建设、成都网站制作、成都网站设计、外贸营销网站建设、行业门户网站建设、网页设计制作的专业网站建设公司,拥有经验丰富的网站建设工程师和网页设计人员,具备各种规模与类型网站建设的实力,在网站建设领域树立了自己独特的设计风格。自公司成立以来曾独立设计制作的站点近千家。
根据你的源文件结构,个人推荐先单独编译源文件为多个object文件,再统一链接。
方法如下
gcc -c main.c # -c参数的作用是让gcc只编译,不链接
gcc -c test.c
gcc -o main main.o test.o # 将编译好的目标代码链接
当然,以上是在gcc为编译器的前提下执行,如使用clang等其他编译器,方法类似(clang的调用方法与gcc高度兼容)
你把大括号的位置放错了,sushu函数被定义在了main函数里面,但是按照C语言的规定,函数不允许嵌套定义,所以你的sushu相当于没有定义(不知为何你的编译器没有报错说不允许在函数内定义函数)。解决方法是把你最后面多出来的大括号移到main函数最后面。
主要的错误在于,你定义的函数没有放在主函数前面并且在调用函数时没有声明函数;
建议将所有函数放到主函数前面,或者在主函数前声明这些函数;
void pointcircle(void) {
.......
r1=zx-xx;
r2=zy-yy;
......
}这里能完成转换,这种赋值语句会降低精度。
void pointcircle(void) {
........
printf("在里面")
else if ((r1*r1+r2*r2)==float(rr*rr))
........
}
printf()后面貌似少了个 “;”
主函数少了个 }
哥给你改下吧,以后再也不看这样的代码了:
#include "stdio.h"
void pointcircle(void){
int xx,yy,zx,zy,rr;
float r1,r2;
printf("x,y,x,y,r\n");
scanf("%d,%d,%d,%d,%d",xx,yy,zx, zy,rr);
r1=zx-xx;
r2=zy-yy;
if((r1*r1+r2*r2)(rr*rr))
printf("在里面");
else if ((r1*r1+r2*r2)==float(rr*rr))//继续判断
printf ("On");
else
printf("Out");//完成
}
void pointpoint(void) {
int xx,yy,zx,zy; //创建全局变量来保存 数据
printf ("Please input your own number:坐标1(x,y),坐标2(x,y)?");
scanf("%d,%d,%d,%d",xx,yy,zx,zy );
if ((xxzx)(yyzy)) //判断条件
printf("点1优于点2");
else if ((xxzx)(yyzy))
printf ("点2优于点 1"); //输出
else printf("谁也不优于 谁!");
}
void timetran(void) {
int secs,hour,min,sec; //创建变量
printf ("Please input your own secs!\n");
scanf ("%d",secs); //输入并赋值给变量
hour=secs/3600; //计算过程
min=(secs/60)-hour*60;
sec=secs%60;
printf ("Now is %d:%2d:%2d ",hour,min,sec); //输出
}
void numbers(void) {
int nub; // 创建变量
printf("Please input your number!");
scanf ("%d",nub); //输入内容并赋值给变 量
if (nub10)//判断
printf ("%d is less than 10!",nub);
else if (nub100)
printf ("%d is less than 100!",nub);
else if (nub1000 )
printf ("%d is less than 1000!",nub);
else
printf ("%d is more than 1000!",nub); //输出
}
void main (void) {
void pointcircle(void);
void pointpoint(void);
void timetran(void);
void numbers(void);
int select;
printf ("Please choose your own select:\n");
select=getchar();
switch(select){
case 1:pointcircle();
break;
case 2:pointpoint();
break;
case 3:timetran();
break;
case 4:numbers();
break;
default : printf ("Wrong choose!");
}
}
C语言没有bool类型,需要自己来定义,同时IsPrime函数的变量i重复定义了修改如下。
# include stdio.h //这是代码
typedef enum //定义bool类型
{
true = 0,
false = 1,
}bool;
bool IsPrime(int m) //第三行
{
int i;
for (i = 2; i m; ++i)// 多了一个int
{
if(m%i == 0)
break;
}
if(i == m)
return true;
else
return false;
}