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)包…

c语言歌手预测成绩,5个裁判可以对10个歌手进行打分,计算各个歌手的最终得分排列...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼if(flag0){printf("\n歌手信息为空,请利用键盘输入或文件读入!\n\n");printf("按任意键返回......");getchar(); getchar();}fpfopen("c:\\backup1.txt","w");for(…

BeetleX自定义http/websocket压测用例视频

虽然BeetleX扩展了tcp/websocket/webapi压测工具(工具下载可以访问https://github.com/beetlex-io/TCPBenchmarks),但测试工具都是针对消息定义来进行测试,很难整合完整的业务流程;如果能写代码那BeetleX组件提供一个测试组件可以更好地完成针…

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

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

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

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

c语言 listview,C语言 SDK编程之通用控件的使用--ListView

一、ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件必须包含comctl32.dll,所以代码中要有头文件: commctrl.h 导入库:comctl32.lib在使用通用控件之前应该先调用InitCommonControls();初始化它以ListView控件为例…

蚂蚁调度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 请求管道中安插各种中间件来根据自己的场景定制化,比如说:监…

c语言电报关系的题目,c语言所有题目以跟答案.doc

c语言所有题目以跟答案判断题关系运算符<与的优先级相同。 N2.7&312的值是15. N3.在TurboC中&#xff0c;整型数据在内存中占2个字节。 YC语言本身不提供输入输出语句&#xff0c;输入输出操作是由函数实现的。 Y5.char [ ]“Very good”:是一个合法的为字符串数组赋值的…

ASP.NET Core Authentication and Authorization

最近把一个Asp .net core 2.0的项目迁移到Asp .net core 3.1&#xff0c;项目启动的时候直接报错: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…

ASP.NET Core 依赖注入-集成 Autofac

概述ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式&#xff0c;这是一种在类及其依赖关系之间实现控制反转 (IoC) 的技术。默认服务容器是 Microsoft.Extensions.DependencyInjection 。内置的服务容器一般能满足简单的框架和部分消费者应用的需求。 建议使用内置容器&…

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

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

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

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

gif android 点击 加载,android 加载显示gif图片的解决方案

使用方法&#xff1a;1-把GifView.jar加入你的项目。2-在xml中配置GifView的基本属性&#xff0c;GifView继承自View类&#xff0c;和Button、ImageView一样是一个UI控件。如&#xff1a;android:layout_height"wrap_content"android:layout_width"wrap_content…

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

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