| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 851 人关注过本帖
标题:C程序中一个奇怪的警告
只看楼主 加入收藏
caochuan2000
Rank: 2
等 级:论坛游民
帖 子:66
专家分:35
注 册:2009-4-11
结帖率:76.47%
收藏
已结贴  问题点数:20 回复次数:9 
C程序中一个奇怪的警告
warning C4013: 'printf' undefined; assuming extern returning int
我做练习时出现这个警告,说我输出函数printf未定义,可是我在开头明明定义了include <stdio.h>啊,程序也可以运行,运行也是正常的,但是这个警告是什么回事?有人帮我解释下吗?
搜索更多相关主题的帖子: 警告 
2009-08-11 12:11
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
C不用加include <stdio.h>也有输出函数,
你试过运行别的程序正常吗?是不是TC没设置对。
最好代码也放上来呀。

努力—前进—变老—退休—入土
2009-08-11 14:21
蚂蚁喝粥
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2009-7-31
收藏
得分:0 
贴代码!!
2009-08-11 14:27
caochuan2000
Rank: 2
等 级:论坛游民
帖 子:66
专家分:35
注 册:2009-4-11
收藏
得分:0 
#include <stdio.h>
#include "student.h"
void main()
{
    float scroe[4][5]={{90,84,91,87,99},{61,52,43,55,75},{99,100,93,97,95},{98,69,58,69,78}};
    printf("the 1 lession avm scroe:%lf\n",avm(*scroe,4));
    selectbad(scroe,4);
    selectgood(scroe,4);
}     
 
//这里是在student.h文件的代码
float ave(float *p,int n);
void selectbad(float (*p)[5],int n);
void selectgood(float (*p)[5],int n);
 
//这里是在ave.c文件的代码
float ave(float (*p)[5],int n)
    {
    float s=*(*p);
    float ave;
    int i;
    for(i=0;i<n;i++)
        s+=*(*(p+i)+5);
    ave=s/4;
    return ave;
    }
//这里是在selectbad.c文件的代码
void selectbad(float(*p)[5],int n)
    {
    int i,j,flag;
    for(i=0;i<n;i++)
    {
    float ave,s=0;
    flag=0;
    for(j=0;j<5;j++)
    {if(*(*(p+i)+j)<60)flag++;s+=*(*(p+i)+j);}
    ave=s/5;
    if(flag>1)
    {
    printf("the %d student fails,his scroe:\n",i+1);
    for(j=0;j<5;j++)
        printf("%lf\n",*(*(p+i)+j));
    printf("his avm is %lf:\n",ave);
    }
    }
}
 
//这里是在selectgood.c文件的代码
void selectgood(float (*p)[5],int n)
{
int i,j,flag;
for(i=0;i<n;i++)
{
float ave,s=0;
flag=0;
for(j=0;j<5;j++)
{
s+=*(*(p+i)+j);
if(*(*(p+i)+j)>=85)flag++;
}
ave=s/5;
if(flag==5) printf("%d student all scroe>=85\n",i+1);
if(ave>=90) printf("%d student ave of scroe>=90\n",i+1);
}
}
 
这个练习原题目是这样的,有1个班4个学生,5门课程。①求第一门课程的平均分。②找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩③找出平均成绩在90分以上或者全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。
上面是我写的。。总是会出现个警告,warning C4013: 'printf' undefined; assuming extern returning int,请大家帮我看看是怎么回事。
我是初学啊,写的程序有点乱,不好意思了。。
2009-08-11 14:45
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
是应该有个警告,类型冲突。

        下面是我的编译器给出的编译结果,请您一一检查并排除:

程序代码:
q.c:2:21: error: student.h: 没有该文件或目录
q.c: 在函数‘main’中:
q.c:8: 警告: 格式‘%lf’需要类型‘double’,但实参 2 的类型为‘int’
q.c:4: 警告: ‘main’的返回类型不是‘int’
q.c: 在文件层:
q.c:15: 警告: 与‘selectbad’类型冲突
q.c:9: 警告: ‘selectbad’的上一个隐式声明在此
q.c:16: 警告: 与‘selectgood’类型冲突
q.c:10: 警告: ‘selectgood’的上一个隐式声明在此
q.c:19: 错误: 与‘ave’类型冲突
q.c:14: 错误: ‘ave’的上一个声明在此


[ 本帖最后由 广陵绝唱 于 2009-8-11 23:11 编辑 ]
2009-08-11 15:16
caoweiqing
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2009-8-11
收藏
得分:0 
试试 vc6.0上
2009-08-11 15:38
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
广陵你用的哪个版本的vc

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2009-08-11 16:23
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:10 
是程序有问题吧。



#include <stdio.h>  
#include "student.h"  
void main()  
{  
    float scroe[4][5]={{90,84,91,87,99},{61,52,43,55,75},{99,100,93,97,95},{98,69,58,69,78}};  
    printf("the 1 lession avm scroe:%lf\n",avm(*scroe,4));  
    selectbad(scroe,4);  
    selectgood(scroe,4);  
}      
 
 /*这块应放在main()的前面吧?*/
float ave(float *p,int n);              /*这里的参数和你下面的不一样*/
void selectbad(float (*p)[5],int n);  
void selectgood(float (*p)[5],int n);  
 
 
float ave(float (*p)[5],int n)  
    {  
    float s=*(*p);  
    float ave;  
    int i;  
    for(i=0;i<n;i++)  
        s+=*(*(p+i)+5);  
    ave=s/4;  
    return ave;  
    }  
 
void selectbad(float(*p)[5],int n)     /*这里少个空格*/
    {  
    int i,j,flag;  
    for(i=0;i<n;i++)  
    {  
    float ave,s=0;  
    flag=0;  
    for(j=0;j<5;j++)  
    {if(*(*(p+i)+j)<60)flag++;s+=*(*(p+i)+j);}  
    ave=s/5;  
    if(flag>1)  
    {  
    printf("the %d student fails,his scroe:\n",i+1);  
    for(j=0;j<5;j++)  
        printf("%lf\n",*(*(p+i)+j));  
    printf("his avm is %lf:\n",ave);  
    }  
    }  
}  
 

void selectgood(float (*p)[5],int n)  
{  
int i,j,flag;  
for(i=0;i<n;i++)  
{  
float ave,s=0;  
flag=0;  
for(j=0;j<5;j++)  
{  
s+=*(*(p+i)+j);  
if(*(*(p+i)+j)>=85)flag++;  
}  
ave=s/5;  
if(flag==5) printf("%d student all scroe>=85\n",i+1);  
if(ave>=90) printf("%d student ave of scroe>=90\n",i+1);  
}  
}  


我用TC2运行的,你的大括号括得让人眼花,乱乱的感觉。还好程序不多。

努力—前进—变老—退休—入土
2009-08-11 17:54
灵动心境
Rank: 2
等 级:论坛游民
帖 子:12
专家分:66
注 册:2009-8-1
收藏
得分:10 
改成下面这样就没问题了
#include <stdio.h>
  
float ave(float (*p)[5],int n);  
void selectbad(float (*p)[5],int n);  
void selectgood(float (*p)[5],int n);   
void main()  
{  
    float scroe[4][5]={{90,84,91,87,99},{61,52,43,55,75},{99,100,93,97,95},{98,69,58,69,78}};  
    printf("the 1 lession avm scroe:%lf\n",ave(scroe,4));  
    selectbad(scroe,4);  
    selectgood(scroe,4);  
}      
 
 
//这里是在ave.c文件的代码  
float ave(float (*p)[5],int n)  
    {  
    float s=*(*p);  
    float ave;  
    int i;  
    for(i=0;i<n;i++)  
        s+=*(*(p+i)+5);  
    ave=s/4;  
    return ave;  
    }  
//这里是在selectbad.c文件的代码  
void selectbad(float(*p)[5],int n)  
    {  
    int i,j,flag;  
    for(i=0;i<n;i++)  
    {  
    float ave,s=0;  
    flag=0;  
    for(j=0;j<5;j++)  
    {if(*(*(p+i)+j)<60)flag++;s+=*(*(p+i)+j);}  
    ave=s/5;  
    if(flag>1)  
    {  
    printf("the %d student fails,his scroe:\n",i+1);  
    for(j=0;j<5;j++)  
        printf("%lf\n",*(*(p+i)+j));  
    printf("his avm is %lf:\n",ave);  
    }  
    }  
}  
 
//这里是在selectgood.c文件的代码  
void selectgood(float (*p)[5],int n)  
{  
int i,j,flag;  
for(i=0;i<n;i++)  
{  
float ave,s=0;  
flag=0;  
for(j=0;j<5;j++)  
{  
s+=*(*(p+i)+j);  
if(*(*(p+i)+j)>=85)flag++;  
}  
ave=s/5;  
if(flag==5) printf("%d student all scroe>=85\n",i+1);  
if(ave>=90) printf("%d student ave of scroe>=90\n",i+1);  
}  
}  
2009-08-11 20:08
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 7楼 flyue


        我用的是 gcc 。
2009-08-11 23:12
快速回复:C程序中一个奇怪的警告
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017083 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved