c程序设计语言选修难吗,欢迎大家选修C语言程序设计这门课,本帖解释一下一些常见的问题...

置顶

欢迎大家选修C语言程序设计这门课,本帖解释一下一些常见的问题

叶卡林娜

发表于2017年01月05日

首先欢迎大家选修浙大翁恺老师的C语言程序设计课程。开课2天就看到讨论区已经有这么多帖子,说明同学们的学习热情很高。结合前几次开课的经验以及目前在讨论区的一些问题,先就一些常见问题作下说明。

1. 请不要只看视频课件,而忽略课件当中的富文本的文字说明。

2. 编译环境的安装

如果你用的是Windows操作系统,可以选择使用Dev C++,安装的参考课件为这里;有的学校可能会用VC6.0,这是个比较古老的版本,它带的编译器不支持C99标准,建议还是用Dev C++或者Code::Blocks,当然visual studio也是可以的,但vs中特有的一些函数,OJ是不支持的,提交OJ时需要进行修改。

如果你用的是Mac os,则参考课件是这里;如果是新版的mac系统,在终端输入gcc之后会有下面的提示:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun此时在终端运行下面这条语句,就可以了(安装完整版的xcode是非必须的)。

xcode-select --install

如果你用的是linux系统,我想你肯定能自己搞定的。

Windows配置好环境后,也是可以在终端(命令提示符)用命令进行编译的,具体怎么配置环境,网上有很多介绍,请善用检索。如果你想用Dev C++这个集成开发环境,那么不用去纠结“终端是什么”,“怎么打开终端”,“去哪里敲gcc”等这些问题。

3. Dev C++编译成功的标志

课件里面演示的是5.8.3版的Dev C++(老版本都可以在这里找到),编译成功后会显示“编译成功”。在较新版本(5.10+)里面,编译成功往往是这样显示的:

27b5987fa5995f44fc31bbc18c5e0320.png

错误0,警告0就说明编译成功。按运行(默认快捷键F10)就可以看运行结果。记得每次修改源代码后,需要重新编译,再运行,不然看到的是之前编译好的可执行程序的运行。

但另外需注意的一点,错误0,警告0(Dev C++默认对于警告检查比较弱,看参考下面第9条),只是说明可以顺利通过编译,并不代表程序本身没有BUG。

4. Dev C++点击调试提示“项目没有调试信息,您想打开项目调试选项并重新生成吗?”

在工具栏右侧有TDM-GCC 4.9.2 64-bit Release的选项,切换为TDM-GCC 4.9.2 64-bit Debug(32位可以用TDM-GCC 4.9.2 32-bit Debug),再编译运行。

ed833f6fd36a87b4d2b7e2619d639cce.png

5. Dev C++使用调试功能时,为什么变量的值没有显示在左边的调试窗口?

默认需要手工输入需要查看的变量,才能在左侧调试窗口显示,如果想在鼠标滑过变量名时自动添加到左侧的话,在Dev c++的工具->环境选项,勾选“浏览Debug变量下的查看鼠标指向的变量”。

6. 关于在线测评系统(Online Judge)

如果以前没有用过任何OJ,可能会觉得我在自己电脑上运行都对,怎么到OJ就判错呢。这个时候很有可能,你有一些不应该的输出,如第一周的题目,输出了类似“请输入一个三位数”这样的友好性提示,这就和需要输出的部分不符。正确的是,当输入123时,输出的所有内容,只有321。多任何字符,包括空格,回车,都将导致系统判断“答案错误”或“请检查输出格式”。但是,请务必养成另一个习惯,在最终输出"\n"以表示输出完毕。可能对于目前的题目,是否输出这个表示结束的符号都将得分,但是在某些情况下,可能就是这个问题导致无法accepted。

7. 有部分同学会把编译器的错误贴上来,而不贴源代码,这样往往我们也无法确定代码问题是什么,所以请务必贴上那段编译器报错的代码,以方便别人来帮你纠错。而且尽量不要贴图片,MOOC的图片在上传时候会缩放,导致看不清楚上面的代码。

8. 更多的练习可以在https://pta.patest.cn/pta/test上找到,其中基础编程题目集是对大家开放的,浙大版《C语言程序设计(第3版)》题目集则是需要买书后,输入读者码才可使用。在pta上遇到的问题,也可以贴到本讨论区来。

9. 在视频当中老师通常是在Mac环境下,此时使用的编译器是Clang(LLVM),对于代码的检查是比较严格的。而大部分同学是在Windows环境下的Dev C++进行学习,Dev C++默认的编译器GCC对于代码的检查不太严格,但是可以通过增加参数,让它把所有Warning显示出来,具体的做法是:在工具->编译选项,按照下图填写:

06716bbd17f05ed7c42cccee207136ff.png

注意设定的编译器配置和当时选用的编译器(右上方下拉菜单)上的是一致的,才有效。

10. OJ里面的测试数据范围是做什么用的?

在OJ上面经常会看到测试数据的范围,就比如第二周的0-2359,其实这个提示并不是让你在程序里面加上一条判断语句去检验系统设置好的测试数据是不是在这个范围内的。他已经告诉你在这个范围内,那么何必加一条判断呢?那么这个范围是用来做什么的呢?是提示你如何去选择要使用的数据类型和结构,测试数据是0-2359的整数,很自然可以想到int就够了。但比如这是一个计算阶乘的题目,告诉你测试数据是1-15,那么用int来记录结果就不够用了,如果是1-100,那么long long也不够用了,需要用到后面才会学到的数组。

11.如何像老师一样在sublime text里面运行C代码?

在Sublime Text写完代码后按 shift + command + B,会提示“clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated”。因为需要配置下Build,具体方法为

在菜单中:Tools -> Build System -> New Build System

然后拷贝以下内容:

{

"cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],

"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",

"working_dir": "${file_path}",

"selector": "source.c",

"variants":

[

{

"name": "Run",

"cmd": ["bash", "-c", "gcc '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]

}

]

}

保存为C。以后就可以选择Tools -> Build System -> C(或者快捷键shift + command + B),来编译和运行C的程序了。

祝大家学习愉快!能够坚持到最后,拿到证书。

分享

25

回复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IdentityServer4系列 | 支持数据持久化

一、前言在前面的篇章介绍中,一些基础配置如API资源、客户端资源等数据以及使用过程中发放的令牌等操作数据,我们都是通过将操作数据和配置数据存储在内存中进行实现的,而在实际开发生产中,我们需要考虑如何处理数据持久化呢&…

c语言修仙受控可看吗,强推三本神奇到爆的小说,c语言修仙,程序员与修真会擦出什么火花...

大家好,我是小龙。今天我给大家推荐三本神奇到爆的小说,c语言修仙,程序员与修真会擦出什么火花!一《c语言修仙》【一十四洲】【简介】: 林浔是一个程序员,通宵编代码后发现自己身体内多了一个程序输入窗口。他尝试编了一个循环程序…

【Vue】Vue与ASP.NET Core WebAPI的集成

SPA单页面应用已经遍地开花,熟知的三大框架,Angular、Vue和React,其中Angular与React均可集成至ASP.NET Core,且提供了相关了中间件。但是Vue没有:“As far as I’m aware, we don’t have plans to introduce Vue-specific featu…

引入Jaeger——封装

随着微服务的普及,微服务间的调用全链路跟踪也火了起来,Jaeger(https://www.jaegertracing.io/)是CNCF孵化的全链路跟踪型项目,在.net core中,提供了一个Jaeger的Nuget(https://github.com/jaegertracing/jaeger-client-csharp)包…

临近年关,发生两起磁盘占满引发的服务下线故障

一口气说两个因为磁盘空间不足引发的应用故障。作为拿起键盘一把梭的Coder, 开发--->部署-->收工--->心旷神怡,滋一口82年的可乐.过了几个月,服务突然下线了!CTO又有杀程序员祭天的理由了!事故1:Azure App Se…

c语言幼儿园积木游戏,幼儿园《积木游戏》课件【三篇】

【导语】课件制作本身就是作者综合素养的一种体现,它显现出制作者对教育、教学、教材改革方向的把握,对课堂教学的理解,对现代教育技术的领悟。因此教师在设计课件时一定要吃透教学内容,设计出符合教学的方案用于课件。下面是无忧…

蚂蚁调度AntJob-分布式任务调度系统

分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累!面向中小企业大数据分析场景。开源地址:https://github.com/NewLifeX/AntJob使用教程:https://www.yuque.com/smartstone/blood/antjob体…

c语言怎么让图形界面单独显示,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大…

如何在 ASP.NET Core 中 自定义中间件

ASP.NET Core 是一个跨平台,开源的,轻量级,高性能 并且高度模块化的web框架,同时扩展性也是非常强,你可以在 request -> response 请求管道中安插各种中间件来根据自己的场景定制化,比如说:监…

ASP.NET Core Authentication and Authorization

最近把一个Asp .net core 2.0的项目迁移到Asp .net core 3.1,项目启动的时候直接报错:InvalidOperationException: Endpoint CoreAuthorization.Controllers.HomeController.Index (CoreAuthorization) contains authorization metadata, but a middleware was not …

android dialog 自定义布局,如何设置AlertDialog的自定义布局?

调用我的对话框:alertDialog showInfoDialog(message "$wrongPasscodeMessage\n$retryMessage")方法如下:fun FragmentActivity.showInfoDialog(message: String?): AlertDialog? {return try {val customLayout layoutInflater.inflate(R.layout.custom_layout…

android 打开谷歌导航,国内开启google位置记录功能/android版google maps 7+上,恢复位置记录功能在国内使用(需root)...

android版google 地图在 7以后的版本上,位置记录功能在国内不能用了,提示本功能不能在中国使用。至少对本人,“位置记录”功能是非常有用的功能,尤其是骑车出行时记录自己的路线。目前还没找到替代产品。之前一段时间内恢复回旧版…

程序员过关斩将--少年派登录安全的奇幻遐想

“据说,这篇也是快餐,完全符合年轻人口味说到登录,无人不知无人不晓。每一个有用户体系的相关系统都会有登录的入口,登录是为了确认操作人的正确性。说到登录安全,其实是一个很伟大的命题,不过常用的手段也…

C# 9 新特性 —— 增强的 foreach

C# 9 新特性 —— 增强的 foreachIntro在 C# 9 中增强了 foreach 的使用,使得一切对象都有 foreach 的可能我们来看一段代码,这里我们试图遍历一个 int 类型的值思考一下,我们可以怎么做使得上面的代码编译通过呢?迭代器模式迭代器…

android系统休眠发广播,Android - BroadcastReceiver

BroadcastReceiverBroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等;BroadcastReceiver 是 Android 的四大组件之一,分为 普通广播、有序广播、粘性广…

开源·共享·创新|2020年中国.NET开发者大会圆满收官!

“疫情无限续费”的2020年,对于14亿中国人而言,是必须习惯口罩长在来脸上的一年;是各种线下聚会,被迫数次延期、滞后、云上举办的一年;……而对于潜心修行,静蓄能量的中国.NET开发者而言,2020绝…

android+百度lbs云,百度——LBS.云 v2.0——云存储扩展字段——Android

今天要解决两个问题:1云存储扩展字段2上传的数据是乱码3android版本上传数据到云端使用了一段时间LBS云功能之后,随着对系统的熟悉,默认提供的字段,肯定无法满足需要。比如增加注释,价格,档次等字段的时候。…

年终将至,回顾我们一起走过的 2020

又到了年终末尾匆匆忙忙的 2020 似乎按下了倍速键一晃眼我们就从夏天走到了冬天在这不平凡的一年中我们同途共进也笑着成长让我们跟随着六大年度词条重温这一年我们共同经历的值得骄傲的瞬间吧!点击文内高亮部分,阅读文章了解更多人才“倍”出星桥计划出…

灵魂拷问:你和大佬,技术差距有多大?

今天咱们聊点技术以外的内容。前几天,有程序员在某个坛子上发帖吐槽,新来的应届生张嘴就是分布式,一堆框架,可代码根本不会写。马上有人跟贴说自己也遇到过这种情况,说之前自己遇到过一个应届生,开口闭口动…

达梦数据查询编码_查询数据库的编码方式

在Mysql中(1)查看Mysql数据库编码show variables like character_set_database 或者 show create database 数据库名称(2)查看Mysql中某张表的编码show create table 表名show create database 数据库名称、show create table 表名 ,还能够显示建库和建表语句。(3)…