学校首页  教务选课  本站首页  计算中心简介  部门工作  对外交流  C语言学习  大学计算机  PAT考试  咨询与投诉 
 首页 > C语言学习 > C语言学习讨论 > 正文 更多C语言学习讨论
为什么在自己的计算机上程序可以运行,传到系统却说编译有错?
——系统对C程序编译警告信息处理的说明

2011年12月19日21:26  来源:计算中心  访问量:14245

  1 有关说明
  为了让编写的C语言程序更加规范、符合工程生产项目特别需要严谨、清晰、易懂、无歧义的实际情况,考试系统有意做了严格的处理:
  (1)C(包括TC、VC、GCC)编译器在编译时将对考生上传的程序实施较严格的检查,警告的信息比软件安装完成后默认设置下报告的更多。
  (2)将警告作为错误对待,视为程序有错而停止编译,直接给0分!

  实际上,考生自己的计算机上可能也有警告信息(取决于你对VC、TC、GCC编译器的警告级别设置),尽管警告信息并不影响编译、链接,只是提示可能有问题(从实际情况看,很多警告信息所报告的问题的确不影响程序的计算结果),但考试系统进行上述处理的目的,是有意为了让考生养成严谨的编程习惯,消除程序中可能引起问题或理解歧义的任何警告信息,让程序更容易被理解、更规范,避免以后在实际的工作中因小的细节问题造成重大事故。
  因此,为了让你的程序能更容易通过考试系统的编译检查,建议在本机上调试程序时打开较为严格的编译警告选项。

  2 举例
  (1)如何消除程序中的警告信息,让设计的意图得到准确无误的表达
  以下程序段在编译时将报警告提示:warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data。
    float chengJi = 95;
    int dengJi;
    dengJi = chengJi / 10;
  该警告提示的含义是:进行“=”(赋值)操作时,将float类型数据(chengJi / 10的结果是float型)转成int类型(存储、赋值给int类型的dengJi)时,可能丢失数据(不是一定会,但此处肯定会,因为9.5变成了9)。从工程的严谨、明确无二义的角度出发,建议按以下方法消除此警告提示,向源程序的使用者表明原设计者已注意到此问题并确认设计正确(本设计的意图就是要丢掉小数,实现将百分制成绩转换成等级,因此无问题——否则可能就有问题)。
    dengJi = (int)(chengJi / 10);

  (2)考试系统给出的警告信息实例及解读
  程序传上去后,若有以下类似的评分报告,则应是考试系统有意严格要求所致:
  Warning .c 18: Call to function 'fac' with no prototype in function main——警告:在程序的第18行,main函数中调用函数fac时没有找到该函数的原型声明
  Error .c 18: Too many error or warning messages in function main——错误:在程序的第18行,main函数中有太多的错误或警告信息(程序停止编译,当然不可能运行)
  .c(55) : warning C4098: 'main' : 'void' function returning a value——程序的第55行有警告:main函数定义为void,但是却返回了一个值(在第55行),是不妥的
  .c(55) : error C2220: warning treated as error - no object file generated——程序的第55行有错误:警告(刚才的)被当作错误对待,因此没有编译链接的目标文件产生(程序当然不可能运行)

  实际上,要处理这样的告警信息并不难,仔细看看评分系统给出的提示,就能解决问题。不要一看到英文就认为自己不认识、不看,仔细瞧瞧,连猜带蒙,这些句子一般都知道大概意思,实在看不懂的,则至少应从中知道问题是由哪一行导致的,仔细检查该行也很可能就发现了问题所在。


 前一条:为什么在自己的计算机上程序的运行结果是对的,但传到系统却未得满分甚至是… (2011-12-16)
 后一条:考试时如何避免因输出格式不符合要求而意外失分?当程序的输入数据较多时如… (2011-12-14)
相关报道
·C/C++ 误区一:void main() (2011-05-19)
·C语言程序设计上机练习技巧、学习方法与注意事项 (2011-04-20)
·为什么在自己的计算机上程序的运行结果是对的,但传到系统却未得满分甚至是0… (2011-12-16)
·为什么同一程序使用不同的帐号上传到系统后得分不一样? (2011-12-16)
·2011—2012学年第一学期《C语言程序设计》考试试题与成绩组成说明 (2011-12-16)
·20111学期《C语言程序设计》在线重修班第15周星期六单元测试通知 (2011-12-06)

 

◆ MOOC+SPOC

C语言程序设计MOOC
Office高级应用MOOC
大学计算机MOOC(56学时)
大学计算机MOOC(32学时)

◆ 英语工具(*=机房开放)

离线词典:有道词典(绿色版)
离线翻译:金山快译(绿色版)
* 谷歌翻译
* 百度词典/翻译/论文写作助手
* 金山词霸/翻译/写作批改
必应词典/翻译
有道词典/翻译/简历助手

◆ 重要公告

2024 年(第17届)中国大学…
2023-2024学年第2学期《Offi…
第三届“成都信息工程大学团…
20232学期非计算机类《C语言…
第二届成都信息工程大学新生…
第十五届蓝桥杯全国软件和信…
20231学期非计算机类《C语言…
20222学期非计算机类《C语言…
2022-2023第2学期《Office高…
20221学期非计算机类《C语言…

◆ 校园热线

教学平台 数字图书 招生就业
学生事务 心灵之约 邮件服务
后勤管理
四川·成都市西南航空港经济开发区学府路一段24号  邮编:610225
学校值班电话:028-85966502     联系计算中心:电话028-85966005  电子邮件  留言
Copyright©成都信息工程大学计算中心 2008-2011  建议使用IE5.5,1024*768以上浏览