① c语言define用法是什么
1、简单的define定义#define MAXTIME 1000
一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i<MAXTIME){.........}
编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。
这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。
2、define的“函数定义”
define可以像函数那样接受一些参数,#define max(x,y) (x)>(y)?(x):(y);
这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的模板来使用而已。
C语言中无参宏定义的一般形式:
#define 宏名 字符串,其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。
例如:#define M (a+b)它的作用是指定标识符M来代替表达式(a+b)。在编写源程序时,所有的(a+b)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(a+b)表达式去置换所有的宏名M,然后再进行编译。
② 刚开始学c语言, 求下面题的正解。
以下是一个 C 语言的计算示例,用于输入腰围和体重,计算脂肪含量,并输出相应信息。
#include <stdio.h>
int main() {
float waist_circumference, weight;
float waist_inch, weight_pound, fat_percentage;
printf("请输入你的腰围(单位:cm):");
scanf("%f", &waist_circumference);
printf("请输入你的体重(单位:kg):");
scanf("%f", &weight);
// 将厘米转换为英寸,将公斤转换为磅
waist_inch = waist_circumference / 2.54;
weight_pound = weight * 2.2;
// 计算脂肪含量
fat_percentage = (waist_inch * 4.15 - weight_pound * .082 - 76.76) * 1.;
// 判断脂肪含量是否在正常值范围内
if (fat_percentage >= 12 && fat_percentage <= 20) {
printf("你的脂肪含量处于男性正常范围内。\n");
} else if (fat_percentage > 20 && fat_percentage <= 30) {
printf("你的脂肪含量处于女性正常范围内。\n");
} else if (fat_percentage == 23) {
printf("你的脂肪含量是公认的完美身材脂肪比例。\n");
} else {
printf("你的脂肪含量不在正常范围内。\n");
}
return ;
}
在运行程序之前,请确保你的 C 编译器已正确安装。在大多数情况下,你只需要将该示例程序复制到文本编辑器中,并将其另存为.c文件,最后使用 C 编译器编译即可。
输入提示将要求你输入腰围和体重(单位为厘米和千克),然后程序将自动计算出你的脂肪含量,并显示相应内容。请注厅前意,在此戚伏汪示高仔例中,我们已经针对输入值的单位进行了转换,以便计算其脂肪含量,你可以通过修改变量和常数来适应不同的输入数据和单位。
希望对你有所帮助!
③ 怎么学好英语
你好,很高兴为你解答:
1、首先、培养积极主动的动机。
动机对于英语学习来说特别重要。学习是学生的任务,然而为了完成任务而应付学习的动机绝对是不正确的,我们的目的就是想斗困让学生通过英语掌握一些交际的手段,看到外面世界的广大,从而了解一个完全不同的异域世界。
因此,一个良稿搭好的动机才是学生学好英语,或者说一切功课的关键。如果在学习英语的时候没有积极性,那么学习英语的时候就不能长久的坚持,所以学习效果还是质量都会打折扣。
2、其次、培养兴趣。
除了动机以外,兴趣也很重要。有些学生总觉得学习英语很键销拿难,全是些单词,句子,所以总是一提到英语就头晕目眩,退而避之,从而形成了一种对英语的排斥心理。其实,正如我们在玩耍时会发现其中一些有趣之处一样,当我们对英语有了一定程度的了解后,也能从中找到有趣的地方。
3、最后,要勤奋。
那些英语成绩好的同学,勤奋是很重要的一个因素。没有一个人是天生就会一项技能的,想有些成就,只能靠自己努力。所以要学生,第一、上课认真听讲,做好记录,抓住这35分钟的效率。第二、课后及时复习,有问题及时询问老师或同学。可想而知,他们的成功完全靠的是自己后天的努力,要勤奋的锻炼才做得到。
④ 请问C语言与C#有什么区别
一、难易程度的区别。
c#属于.net framework中的一个产品,简单易用,但开发出来的东西目前还需要安装运行库才能供别人使用。c语高拦腔言是一种古老难用的语言,目前可能在嵌入式系统用的比较多,另外大学会有这门课。相关的还有c++,可以做系统的底层开发,也不容易掌握。
二、内容上的区别。
C语言面向过程,开发非托管程序,编译成exe是二进制可执行戚衫文件,不可跨平台。
C#面向对象,开发托管程序,编译成exe是中间语言,需要在.NET平台上进行二次动态编译,之后才能执行,可跨平台。
三、特点上的区别。
C语言诞生得非常早,当时人们普遍还习惯用汇编语言编写软件,而且没有什么统一,衡悄通用的操作系统,基本上软件都是从0开始写的。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性。
⑤ C语言的入门书籍推荐~~~
第一、不要盲目的乱买书,所有的书都是千篇一律,但大多都是鸡肋,经典的一本足矣!
推荐《C primer plus》
第二、有计划的看完上面推荐的这本书!
像我刚学的时候是 二天看完一章,标记好重要的笔记!第三天把章后的编程题自己敲一遍,第四天把后面的作业全部自己做一遍!到了指针后是三天看完一小节,因为指针在C语言中举足轻重,一定要理解了一小节再看下一小节!一天看不懂看两天,切不可今天看不懂就不看了!可以说没学好指针你就没学好C语言!
第三、当你看完上面的书,能独立做完所有的章作练习题时,可以说你已经对C语言有了个大概的了解了!
这时候你可以买一本《C和指针》好好的仔细研读一遍!有助你加强对指针的了解!!看完了上面的书后,再看看《C陷阱与缺陷》 !
书不求多而求精,市面上的书好多都是误人子弟的!
看完了上面的书,你可以去看一下《C++ primer plus》同样的计划 看完这本书!
你再去看数据结构
要再往下的话 再去买一本孙鑫的VC程序设计
…………
看完了VC的话别以为自己毕业了。
推荐你去看 汇编 因为你看完了汇编 对你了解内存机制,存储原理有很大的帮助,对你在代码优代,结构安排上有很大的作用!
⑥ 一道简单C语言指针问题编程题!麻烦高手帮我改的简单容易理解,英文单词别很多还难!麻烦了
因为某种原因,本人共考过2次笔试,3次上机。其中笔试在70左右,3次上机均为满分,
看着大批的同学在为三级发愁不知道如何准备和应考。我想我应该把经验和学习的方法写下
来,这些方法保证你能过三级。但是不保证你能获得高分并学到知识,所以请各位计算机系
与爱好电脑的高手或自认为是高手的同志们就此打住。OK!
以网络技术为例(其他三门的方法相似),我把方法总结为:细看书,做笔记,多复习。
第一阶段:看网络技术教材,详细地做笔记(20天).
第一边看书你要看得特别仔细,把所有你认为重要的地方全抄到笔记本上,包括重要的
表格和插图。第一次看不懂的地方可以跳过去等过两天再回头看一遍。每天看新的知识之前
都将前两天看的再复习一遍,强化记忆。
我把全书的重要程度划分了一下:第一,七,八章 了解(看看做做笔记就行了);
第二,四章 理解(看懂主要的知识点);第三,五,六章 掌握(看懂所有的知识点);
其中又以以下章节为重点:2.2 进程 2.3 存储管理 2.4 文件管理 2.5 设备管理
(我当时这一节的题都挂了) 3.5 双绞线 VS 同轴电缆 3.6 OSI VS TCP/IP 4.3 以太网
4.5 组网技术 4.8 网络互连 5.3 IP协议 6.4 加密技术 其中有些内容必须理解并掌握,
要是不理解,背也要背下来。如:OSI协议和TCP/IP协圆答议的各层的名字,各种传输介质和各种
以太网的参数等。
另外所有教材橘扒慧上没有的内容不用看,因为考试出的题没有一道是书本之外的。
===> 要点一:坚持就是胜利,每天坚持看2个小时,至少能看15页。
===> 要点二:该抄就抄,好记性不如坏笔头。
===> 要点三:注意课后作业题,那可能就是原题。
这一阶段完成后,应该能够理解大部分的知识点。还要能够很快的在书中找到某个知识
点的位置。
第二阶段:复习重点章节(5天)
这一次复习的重点在那些需要理解和掌握的内容上,如果你看懂了,合上书想一遍,看
不懂就多看两遍,有些重点一定此敬要记住。而且要把笔记本大声地读上两遍,达到更加熟练。
===> 要点一:看懂不一定会记住,一定要在脑海中形成印象,合上书能写下来。
===> 要点二:名词术语要注意。
===> 要点三:缩略语。凡是在书上出现过两遍的,一定要记下中英文解释。
例如:CDMA/CD,MFLOPS等。
第三阶段:复习不重要的章节和作题(5天)
有人也许要问,既然不重要还复习它干什么。错!出题人不能用重点凑成一百分要适当的
加点其他内容。于是只有在这些不重要的章节里面出了,这些题大概占20分左右。得分的方法
是将所有不太重要的章节再看一遍,越是你认为不可能出的,越要把它抄下来,记一记。而且
要特别注意数字,如ATM的传输速率,单模光纤所使用的光的波长等。(上次最呕吐的的一道
题是,信号从发送站经过卫星到接收站的传输延迟的典型值是多少?我按照同步地球卫星到地
球的距离,光的传输速度,算到百毫秒的量级,但是算不出具体的值,于是猜了一个250ms。
答案居然是540ms。晕倒~!)
还有就是模拟题的问题,我认为现在市面上的模拟题都太差了,考的全没有,不考的全有
了,说实话还不如我出的呢。所以题不用多做,只要把书看好就行,最后几天可以做几套,熟
悉一下题型,掌握一下时间就够了,多做全是浪费。
以上方法我一个同学上次照着我说的做了,结果笔试考分比我还高。所以不管你聪明不聪
明,只要你照我说的做了,一定能通过。
一句话:要是不过你拿我是问。
上机部分现在只有一到c语言编程题,非常简单。但我认为最重要的是能够编译程序和调试
程序,也就是说,一道题你能在纸上写下来还不够,一定要能够在机器上运行出结果才行,因为
编译系统及机器的不同,有的对的程序也可能产生大量的错误。只要你能把错误找出来就差不多
能过了。
因此我把方法总结为:多思考,多上机,捉虫子。(以谭浩强的《c语言设计》第二版为例)
第一阶段:看书,做笔记。(15天)
有人说那本书那么厚,15天能看完吗?错!谁说让你们看完了,你要是只是想过三级。只用
看前140页就足够了。也就是,第一章,了解,第二,三章理解,第五,六,七章掌握,第八,
第十章随便看一下就行了。因为c上机只要求你填一个函数,所以函数那一章不用看太仔细,只
要知道函数是干什么用的,它们之间是如何调用的就行了。至于指针,所有的考题全都能用数组
做出来,用指针只不过是简单一点,容易出错一点而已,我是强烈建议不用指针。第九章和第十
一章以后一概不用看。
===> 要点一:勤记,把所有重要的东西都记在笔记本上。如转义字符的定义等。
===> 要点二:每天上机调试两个程序(可以是例题或作业题)
===> 要点三:坚持,再坚持。
第二阶段:做课后作业题并上机调试。(10天)
现在书你已看完,练习题也可能做出了一些。现在就是要把前几章特别是五六七三章的课后
题一定要自己思考一下,做出来后再上机调试,是在做不出来,就看看答案,看懂后,再在机器
上调试一下也行。
重要例题:例 4.10 4.12 5.4 5.5 5.6 5.7 5.8 6.6 6.8 6.10 7.2 7.2 7.8 7.9
重要习题:4.5 4.9 5.5 5.7 5.8 6.1~6.10 7.1~7.14
===> 要点一:做题时使用N-S流程图。
===> 要点二:每道题不管多么简单,一定要调试直到正确为止。如习题2.4(2)我有几个同
学都是能编出来,但是怎么都运行不正确。
===> 要点三:每天上机作五道题以上,最好在TC2.0环境下。
第三阶段:继续调试重要程序,看一本书(5天)
继续调试程序直到熟练,然后看一本书,书名我先不说,可能许多同学都知道。但我不赞成
看这本书,而且我劝你到最后几天再看,挑出一部分典型的题看一下,自己做做,看是否正确,
熟悉一下题型,不要完全依赖那本书。那样可能因为一点小错误你找不出来就挂了。我们班的女
生们第一次因为这个原因挂的可不是少数。
还是那句话:要是你上机不过找我是问。
········回顾过去的大学生活,计算机等级考试最令人难忘。笔者斗胆在这里卖弄一下过去两年(准确的说是一年半)里通过全国计算机等级考试二到四级的经历,以自己的感受泡制一份全国计算机等级考试全攻略,希望对后来的朋友们尤其是刚刚迈入大学校门的师弟师妹们有所帮助。
考证路上,有两点需要特别注意。一是一次只能报考一个等级(包括笔试和上机)的考试。一个级别中有不同类别,考生只能选择其中一类。另外,考试单科合格者,成绩只保留到下一个考试周期。所以不想找麻烦的话就要认真准备,争取一次OK,否则会对信心造成打击。
一级考试
对于一级考试,其实没什么好说的,大部分人不必报考这一级别,既浪费金钱又浪费生命。因而笔者强烈建议不要考这一级别。如果你不得不参加这一级别考试的话,笔者在表示同情之余建议你在熟悉常用软件之余研究一下WPS,在以后的全国计算机等级考试(一级)中 ,WPS将成为一门单独的考试科目。
二级考试
二级考试是大部分人都必须参加的。二级考试的内容包括基础知识和程序设计两大部分。 基础知识主要包括电脑基本知识,DOS基本知识和基本操作,WINDOWS的基本概念与操作。关于这部分知识有点水准的辅导书就会有详细的介绍,只要把书好好看看就没什么问题。DOS中的文件、目录、路径的概念及使用是必考部分,要留意。(相关阅读:如何应付新大纲二级考试的公共基础知识)
二级考试的重中之重是程序部分。要对语言的基础知识熟练掌握,尤其要留意基础概念和基本方法(选择法、冒泡法等),要能看懂书上给的程序。一般来说,如果能独立做出大部分课后题就一切OK了。对语言的工夫应该下在平时,多想,多练,多上机。自己考虑作一些小程序会有很大帮助的(别人崇敬的目光就会让你觉得很有价值)。二级DOS类考试的上机考试包括三个部分的内容,即DOS操作题,程序修改题和程序编制题。如果你的C语言有一定水准的话,较难的部分就是程序修改题了,毕竟了解陌生人的思路是一件比较难的事。因此平时要多读一些程序,自己编程时注意要尽量符合规范,否则很容易吃亏。当然多上机练习是取得好成绩的不二法门。关于辅导书大连理工出版社和南开出版社的都相当不错。
三级考试
三级是一个比较麻烦的等级。它共有四个类别,可以大致分两种。 三级PC上机是考汇编程序,其他三个类别考C程序。如果不是对自己特别有信心的话一般不要报考PC技术。毕竟学习汇编语言也是不小的负担 ,而且对报考四级没什么帮助(四级不考汇编!)。对于其他三种主要看自己的兴趣了。相对来说数据库要难一点(对数学系的除外)。三级的四个类别各有侧重,比较麻烦的是对于四级来说都太片面了,所以帮助不大。因此基础比较好的,直考四级也是可以考虑的。(相关阅读:通过计算机等级考试三级网络的经验)
笔试部分是三级的难点,所要记忆的内容比二级增加很多。要注意对基本理论和基础概念的掌握,有利于知识网络的形成,减少记忆负担。
由于三级刚刚改革不久,各个出版社出版的辅导书都很难贴近考试。这种情况下多看书就成了最好的选择。从近两次考试的情况看,出题也很接近课本(尤其是网络技术,有部分教材原话)。三级上机考试难度比二级提高并不大,较复杂的部分如文件读写,函数调用等通常题目已给出,因而所考的依然是比较基本和典型的算法。
四级考试
四级是最后一级,也是知识最复杂的一级。报考四级是需要一点信心和勇气的,你报考四级后身边几乎不可避免的出现一片质疑声(当我报四级时老师竟然告诉我本校从来没人通过),这时候一定要相信自己。(相关阅读:帮你全面了解全国计算级等级考试-四级)
四级通过的人数的确是非常少(相对三级),但要看到四级报考人数也是最少的。四级知识量是巨大的(看看那厚厚的教材就知道了),难点主要是离散数学和计算机英语。对于离散数学,如果有机会旁听一下计算机专业的核心课程《离散数学》会很有帮助的。要记住一定要作一定数量的习题!仅仅通过识记是无法提高水平的。
计算机英语没有想象中的困难,常用的单词只有几百个,只要把近5、6年的试题中英语题过一遍就差不多了。手头最好有一本专业词典,大部分单词在文曲星上查不到 。相对来说英语题比较简单,只要单词认识就OK了。
笔试中比较新鲜的是论述题。建议买一本历年试题及参考答案(每年国家考试中心都出版),仔细研究一下,掌握答题方法。比较幸运的是论述题通常有四道,可以选择自己最有把握的。由于四级考试已经举行多年,各出版社出的辅导书都比较扣题。笔者强烈推荐大连理工出版社出版的《全国计算机等级考试题典(四级)》。这本书贴近考试,解答详尽,对顺利过级会有很大帮助!一定要做历年试题(5年以内),确实是有一定复现率的!
四级上机考试和三级差不多,只有一道编程题,注意别紧张,一定要存盘,否则会变为0分。当时跟我一个考场的同学就有人因为慌乱忘记存盘,造成下午的考试没有通过。(相关阅读:全国计算机四级考试经验谈)
结束语:最后,不管面对任何考试都需要对自己要信心,相信即使只有一个人通过,那个人也一定是自己!这时你就成功一半了。预祝每一位考生能够在9月的考试中取得理想的成绩!
计算机考试备忘录
首先是报考时间问题。虽说大学有四年,但是如果你要考研究生的话(大部分人都会考的),从大三下学期就该开始准备了,所以留给等级考试的时间其实只有两年半而已(四次机会)。因此,如果你是大一的新生,应该考虑报考明年四月的考试。因为全国计算机等级考试是面对非专业人士的,所以难度并不太高(当然也不很容易,否则听我唠叨什么)。如果你的学校没有一级必考之类的变态规定话,就应该坚决跳过一级从二级开考(时间宝贵,不应该为没意义的事浪费半年时光)。平心而论,二级知识非常基础,只要认真准备(你有整整一个寒假的时间准备)过关是很容易的(即使你的计算机基础很差)。
虽然三级证书一样可以拿到学位证,并且越级考试也是被许可的,但笔者不提倡直接报考三级(即使你的计算机基础很好)。直接过三级虽然是一件很酷的事,但这要担相当的风险,一旦失误(这是很可能的事,毕竟三级是有一定难度的),你就不得不与刚通过二级的同学一起考试。除非你的神经有下水管道那么粗,不然会有很大压力,而且对信心的打击不容忽视。如果你对自己的计算机水平很有自信的话,二级证书到手后跳过三级直考四级倒是可以考虑的,那样风险和效率比较均衡。
另一个比较重要的问题是计算机语言的选择问题。笔者强烈推荐学习C语言。C语言不但本身逻辑清楚,实用性强而且扩展性很强,方便以后学习C++,C#等语言。如果你有狮子一样的雄心,更应该选择C语言,要注意到四级和高级程序员考试都要求C语言!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@计算机三级考试马上就要到了,然而很多朋友对计算机上机考试却仍旧十分茫然,
参加这次考试的人有很大一部分是上次机试没有通过的朋友,甚至还有一些考了两次机试都没有通过的……
这其中不乏一些C语言学的很不错的高手,大部分人到现在都不明白为什么自己亲手编的程序却是0分……
究竟是什么原因呢?不就是那100道题目吗?翻来覆去的看也没有发现自己的程序有什么错误啊,看资料,用模拟盘模拟也是满分啊,可为什么正式考试就是0分呢?
于是很多人甚至把通过上机考试当成一件*运气的事了,甚至有的朋友对上机考试感到十分恐惧
然而这其中真正的原因……
大家不妨和我一起看一下考试中心命题组的正确答案~
顺便提醒一下大家在考试的时候要注意的问题,希望对大家有所帮助。
第一条:审题要仔细!正式考试的时候会遇到很多面熟的题目,这些题目有的似乎和
平常资料中看到的一样,然而,千万不要见到面熟的题目而沾沾自喜,因为有很多的
“陷阱”会使你审题的时候就出错~!
我们看一道所有人都做过的的 “数字题目” 。
考试中心命题组第23题:
已知在文件in.dat中存有N个实数,(N<200),函数readdat()是读取这N个实数并存入数组xx中。
请编制函数CalValue(),其功能要求:
1、求出这N个实数的整数部分平均值aver;
2、分别求出这N个实数中其整数部分值小于平均值ever的数的整数部分值之和sumint与小数部分之和sumdec
最后调用函数WriteDat()把所求的结果输出到文件OUT8.dat中。
这一题看起来很眼熟,然而你仔细看~!
1、aver是整数部分的平均值~!不是普通的哦!
2、整数部分值小于平均值ever的数的整数部分值之和sumint与小数部分之和sumdec!!
呼~,原来这么复杂~!稍不留心就错了~,结果就想当然的……0分
考试中心命题组第4题
函数ReadDat()实现从文件ENG.IN中读取一篇英文文章存入到字符
串数组xx中;请编制函数ComWord()分别计算出10个不区分大小写
的英文单词的首字母(b,c,f,s,n,r,u,e,o,p)的频数并依次存入
整型数组yy[0]至yy[9]中,最后调用函数WriteDat( )把结果yy
输出到文件PS1.OUT中。
这题也很眼熟,然而你仔细看~!
英文单词的首字母,呵呵,不是平常的字母的个数,是作为单词的首字母的个数啊,晕~
上面两道题目并没有在其他资料上见过,考试的时候也不一定会出,
这里仅仅是给大家提个醒儿,正式考试一定要仔细审题,严格按照题目的要求去做,
不要受以前做过的题目的影响。
第二条:一定要考虑除零、溢出、类型转换、精度等细节问题~!!
虽然我们在平时学C语言的时候老师都提醒过,可是真正到了编程序的时候,
却没有几个人会考虑。这些细节问题似乎并不直接影响题目的输出结果,
然而,因为溢出和类型转换错误而造成考试得不到满分的可是大有人在啊!
我们看下面一道最害人的题目~!!,很多朋友考了这道题目都没有过。
下面来看看你为什么是0分~!
考试中心命题组64题:
请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,
仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。
替代关系:f(p)=p*11 mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),
如果原字符小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。
这道题目所有的人都做过,但几乎就没有人做对,包括南开无忧在内~!
原因就在于这一句!
无忧:int f; f=(xx[i][k]*11)%256;
南开:char *pf; *pf=*pf*11%256;
表面看来,好象两个都对,
请你在TC下运行一下下面的代码,看一下结果你就知道了是怎么回事了……:
main()
{
char nk='E',*nkp,wuyou='E';
int wy;
nkp=&nk;
*nkp=*nkp*11%256;
wy=wuyou*11%256;
printf("%c %c %c %c\n",nk,*nkp,wuyou,wy);
printf("%d %d %d %d\n",nk,*nkp,wuyou,wy);
}
看到结果了么?是不是很吃惊啊?
≈ ≈ E ≈
-9 -9 69 247
大家看到了,南开的结果是负数,连原来的变量nk都变成了负数,这显然错了。
无忧的聪明一点,知道int比char大,定义了个int,对了。
南开错误原因就是在TC2.0中char型变量只有一个字节,根本容纳不下'E'*11,
所以产生了溢出,上次考这道题目没过的同学是不是有所启发呢?
这里给出考试中心命题组的答案:
void encryptChar(){
int i,k,ch;
for(i=0;i<maxline;i++)
for(k=0;k<strlen(xx[i]);k++){
ch=xx[i][k];
ch=(ch*11)%256;
if(!(ch<=32||ch>=130))xx[i][k]=ch;
}
}
似乎一个例子不能说明什么,那就把上面的数字题目的答案给大家看看:
考试中心命题组23题答案:
int i;
long val;
float dec;
for(i=0;i<N;i++){
val=(long)xx[i];
aver+=xx[i]-val;
}
aver/=(double)N;
for(i=0;i<N;i++){
val=(long)xx[i];
dec=xx[i]-val;
if(dec>aver){
sumint+=val;
sumdec+=(xx[i]-val);
}
}
看到了吧,首先,val的定义,不是我们习惯的int,而是能容纳更大数的 long ,
这样在求和的时候就不会溢出,无忧和南开的答案没有吧~
再看,算aver平均值的细节,不是我们平常习惯的aver/=N,更不是无忧的1.0* sum/N,
而是aver/=(double)N,所以大家在考试的时候要时刻注意你的变量类型,特别是在一些求平均值的题目中,千万要注意,用sum/n的时候,sum的类型一定不要用整形。
第三条:不要使用快捷键!!很多人在使用TC的时候习惯于用F9,CTRL+F9或者其他的热键,
首先F9只是编译了,并没有运行程序,考试一定要运行一下你的程序才会有输出文件,
否则一定是0分。
热键在考试的时候是很危险的,因为UCDOS的热键和TC的冲突,CTRL+F9变成了全角半角转换,
如果不小心按了,会导致你的程序有中文字符,编译的时候出错,而且很难查找排除错误~!
所以建议大家在考试的时候使用ALT+红色字母 来调出菜单进行编译调试等步骤,建议步骤为:
写完代码后用ALT+F,S存盘,然后ALT+C,M编译,然后ALT+R,R运行,这样就万无一失了。
第四条:不要加载任何输入法
上机考试用的DOS环境内存十分有限,如果你加载了任何一个输入法,都有可能造成编译程序的时候出现out of memory 内存不足的情况,到那时就麻烦了。
程序只要写的对就可以,不要画蛇添足的加注释,没有人看的~!
第五条:不要提前交卷!考场一般使用NOVELL网络,有的时候存在网络状况不好而连接失败等问题,
这时,如果你已经提前交卷的话就不太好了。另外也可以防止别人有意无意的改动你的程序。
第六条:考试时候的一些技巧。
1、进入TC以后如果想查看题干要求,不用退出TC,直接用F12就可以显示出来。
2、用F12显示题目之后可以通过CTRL+BACKSPACE把题目定在屏幕上。
3、编译运行之后,可以通过type out.dat或edit out.dat或tc out.dat查看输出文件。
(千万不要改动!不然影响考试结果。如果不小心改动,再重新编译运行一次你的程序就可以了)
4、如果考试的时候不小心改动了代码的主函数或其他部分,可以进入考生目录下的warn隐藏目录,
把里边的备份文件复制到考生目录。步骤:
在考生目录下输入cd warn
输入 *.c ..输入cd ..
就可以了
5、如果调试的时候不小心死循环了,可以通过CTRL+C或CTRL+BREAK来终止,如果连按多次都没反应,
不要慌,立即找监考老师说明情况,可以重新启动机器继续答原题,你的程序还在,时间也是继续刚才的。
所以这也提醒大家,运行程序之前一定要先存盘。
⑦ c程序设计中碰到的英译汉的问题
接受那些不是为程序使用的数据可能导致系统失败。
应采取以下措施来减少数据输入错误。
如果实用的话应该引入显式转型以使设计者的意图更为明显。可以创造一些数学或逻辑方面的混合有符号、无符号变量。
意料之外的结果。在有符号的16位整数计数制情况下,十六进制数FFFF就是-1;而在无符号的16位整数计数制下却是65535。这一点区别会改变结果。
【这些在程序设计方面属于需要了解的背景知识,在计算机组成方面会详细讲,包括反码、补码及用反码补码进行加减乘除运算】
⑧ 求C语言俄罗斯方块代码
俄罗斯方块C源代码
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#defineZL4 //坐标增量,不使游戏窗口靠边
#defineWID36 //游戏窗口的宽度
#defineHEI20 //游戏窗口的高度
inti,j,Ta,Tb,Tc; //Ta,Tb,Tc用于记住和转换方块变量的值
inta[60][60]={0}; //标记游戏屏幕各坐标点:0,1,2分别为空、方块、边框
intb[4]; //标记4个"口"方块:1有,0无,类似开关
intx,y,level,score,speed; //方块中心位置的x,y坐标,游戏等级、得分和游戏速度
intflag,next; //当前要操作的方块类型序号,下一个方块类型序号
voidgtxy(intm,intn); //以下声明要用到的自编函数
voidgflag(); //获得下一方块序号
voidcsh(); //初始化界面
voidstart(); //开始部分
voidprfk(); //打印方块
voidclfk(); //清除方块
voidmkfk(); //制作方块
voidkeyD(); //按键操作
intifmov(); //判断方块能否移动或变体
void clHA(); //清除满行的方块
voidclNEXT(); //清除边框外的NEXT方块
intmain()
{csh();
while(1)
{start();//开始部分
while(1)
{prfk();
Sleep(speed); //延时
clfk();
Tb=x;Tc=flag;//临存当前x坐标和序号,以备撤销操作
keyD();
y++;//方块向下移动
if(ifmov()==0){y--;prfk();dlHA();break;}//不可动放下,删行,跨出循环
}
for(i=y-2;i<y+2;i++){if(i==ZL){j=0;}} //方块触到框顶
if(j==0){system("cls");gtxy(10,10);printf("游戏结束!");getch();break;}
clNEXT(); //清除框外的NEXT方块
}
return0;
}
voidgtxy(intm,intn)//控制光标移动
{COORDpos;//定义变量
pos.X=m;//横坐标
pos.Y=n;//纵坐标
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
voidcsh()//初始化界面
{gtxy(ZL+WID/2-5,ZL-2);printf("俄罗斯方块");//打印游戏名称
gtxy(ZL+WID+3,ZL+7);printf("*******NEXT:");//打印菜单信息
gtxy(ZL+WID+3,ZL+13);printf("**********");
gtxy(ZL+WID+3,ZL+15);printf("Esc:退出游戏");
gtxy(ZL+WID+3,ZL+17);printf("↑键:变体");
gtxy(ZL+WID+3,ZL+19);printf("空格:暂停游戏");
gtxy(ZL,ZL);printf("╔");gtxy(ZL+WID-2,ZL);printf("╗");//打印框角
gtxy(ZL,ZL+HEI);printf("╚");gtxy(ZL+WID-2,ZL+HEI);printf("╝");
a[ZL][ZL+HEI]=2;a[ZL+WID-2][ZL+HEI]=2;//记住有图案
for(i=2;i<WID-2;i+=2){gtxy(ZL+i,ZL);printf("═");}//打印上横框
for(i=2;i<WID-2;i+=2){gtxy(ZL+i,ZL+HEI);printf("═");a[ZL+i][ZL+HEI]=2;}//下框
for(i=1;i<HEI;i++){gtxy(ZL,ZL+i);printf("║");a[ZL][ZL+i]=2;}//左竖框记住有图案
for(i=1;i<HEI;i++){gtxy(ZL+WID-2,ZL+i);printf("║");a[ZL+WID-2][ZL+i]=2;}//右框
CONSOLE_CURSOR_INFOcursor_info={1,0};//以下是隐藏光标的设置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
level=1;score=0;speed=400;
gflag();flag=next;//获得一个当前方块序号
}
voidgflag() //获得下一个方块的序号
{srand((unsigned)time(NULL));next=rand()%19+1; }
voidstart()//开始部分
{gflag();Ta=flag;flag=next;//保存当前方块序号,将下一方块序号临时操作
x=ZL+WID+6;y=ZL+10;prfk();//给x,y赋值,在框外打印出下一方块
flag=Ta;x=ZL+WID/2;y=ZL-1;//取回当前方块序号,并给x,y赋值
}
voidprfk()//打印俄罗斯方块
{for(i=0;i<4;i++){b[i]=1;}//数组b[4]每个元素的值都为1
mkfk();//制作俄罗斯方块
for(i=x-2;i<=x+4;i+=2)//打印方块
{for(j=y-2;j<=y+1;j++){if(a[i][j]==1&&j>ZL){gtxy(i,j);printf("□");}}}
gtxy(ZL+WID+3,ZL+1); printf("level:%d",level); //以下打印菜单信息
gtxy(ZL+WID+3,ZL+3); printf("score:%d",score);
gtxy(ZL+WID+3,ZL+5); printf("speed:%d",speed);
}
voidclfk()//清除俄罗斯方块
{for(i=0;i<4;i++){b[i]=0;}//数组b[4]每个元素的值都为0
mkfk();//制作俄罗斯方块
for(i=x-2;i<=x+4;i+=2)//清除方块
{for(j=y-2;j<=y+1;j++){if(a[i][j]==0&&j>ZL){gtxy(i,j);printf("");}}}
}
voidmkfk()//制作俄罗斯方块
{a[x][y]=b[0];//方块中心位置状态:1-有,0-无
switch(flag)//共6大类,19种小类型
{case1:{a[x][y-1]=b[1];a[x+2][y-1]=b[2];a[x+2][y]=b[3];break;}//田字方块
case2:{a[x-2][y]=b[1];a[x+2][y]=b[2];a[x+4][y]=b[3];break;}//直线方块:----
case3:{a[x][y-1]=b[1];a[x][y-2]=b[2];a[x][y+1]=b[3];break;}//直线方块:|
case4:{a[x-2][y]=b[1];a[x+2][y]=b[2];a[x][y+1]=b[3];break;}//T字方块
case5:{a[x][y-1]=b[1];a[x][y+1]=b[2];a[x-2][y]=b[3];break;}//T字顺时针转90度
case6:{a[x][y-1]=b[1];a[x-2][y]=b[2];a[x+2][y]=b[3];break;}//T字顺转180度
case7:{a[x][y-1]=b[1];a[x][y+1]=b[2];a[x+2][y]=b[3];break;}//T字顺转270度
case8:{a[x][y+1]=b[1];a[x-2][y]=b[2];a[x+2][y+1]=b[3];break;}//Z字方块
case9:{a[x][y-1]=b[1];a[x-2][y]=b[2];a[x-2][y+1]=b[3];break;}//Z字顺转90度
case10:{a[x][y-1]=b[1];a[x-2][y-1]=b[2];a[x+2][y]=b[3];break;}//Z字顺转180度
case11:{a[x][y+1]=b[1];a[x+2][y-1]=b[2];a[x+2][y]=b[3];break;}//Z字顺转270度
case12:{a[x][y-1]=b[1];a[x][y+1]=b[2];a[x-2][y-1]=b[3];break;}//7字方块
case13:{a[x-2][y]=b[1];a[x+2][y-1]=b[2];a[x+2][y]=b[3];break;}//7字顺转90度
case14:{a[x][y-1]=b[1];a[x][y+1]=b[2];a[x+2][y+1]=b[3];break;}//7字顺转180度
case15:{a[x-2][y]=b[1];a[x-2][y+1]=b[2];a[x+2][y]=b[3];break;}//7字顺转270度
case16:{a[x][y+1]=b[1];a[x][y-1]=b[2];a[x+2][y-1]=b[3];break;}//倒7字方块
case17:{a[x-2][y]=b[1];a[x+2][y+1]=b[2];a[x+2][y]=b[3];break;}//倒7字顺转90度
case18:{a[x][y-1]=b[1];a[x][y+1]=b[2];a[x-2][y+1]=b[3];break;}//倒7字顺转180度
case19:{a[x-2][y]=b[1];a[x-2][y-1]=b[2];a[x+2][y]=b[3];break;}//倒7字顺转270度
}
}
voidkeyD()//按键操作
{if(kbhit())
{intkey;
key=getch();
if(key==224)
{key=getch();
if(key==75){x-=2;}//按下左方向键,中心横坐标减2
if(key==77){x+=2;}//按下右方向键,中心横坐标加2
if(key==72)//按下向上方向键,方块变体
{if(flag>=2&&flag<=3){flag++;flag%=2;flag+=2;}
if(flag>=4&&flag<=7){flag++;flag%=4;flag+=4;}
if(flag>=8&&flag<=11){flag++;flag%=4;flag+=8;}
if(flag>=12&&flag<=15){flag++;flag%=4;flag+=12;}
if(flag>=16&&flag<=19){flag++;flag%=4;flag+=16;}}
}
if(key==32)//按空格键,暂停
{prfk();while(1){if(getch()==32){clfk();break;}}} //再按空格键,继续游戏
if(ifmov()==0){x=Tb;flag=Tc;} //如果不可动,撤销上面操作
else{prfk();Sleep(speed);clfk();Tb=x;Tc=flag;} //如果可动,执行操作
}
}
intifmov()//判断能否移动
{if(a[x][y]!=0){return0;}//方块中心处有图案返回0,不可移动
else{if((flag==1&&(a[x][y-1]==0&&a[x+2][y-1]==0&&a[x+2][y]==0))||
(flag==2&&(a[x-2][y]==0&&a[x+2][y]==0&&a[x+4][y]==0))||
(flag==3&&(a[x][y-1]==0&&a[x][y-2]==0&&a[x][y+1]==0))||
(flag==4&&(a[x-2][y]==0&&a[x+2][y]==0&&a[x][y+1]==0))||
(flag==5&&(a[x][y-1]==0&&a[x][y+1]==0&&a[x-2][y]==0))||
(flag==6&&(a[x][y-1]==0&&a[x-2][y]==0&&a[x+2][y]==0))||
(flag==7&&(a[x][y-1]==0&&a[x][y+1]==0&&a[x+2][y]==0))||
(flag==8&&(a[x][y+1]==0&&a[x-2][y]==0&&a[x+2][y+1]==0))||
(flag==9&&(a[x][y-1]==0&&a[x-2][y]==0&&a[x-2][y+1]==0))||
(flag==10&&(a[x][y-1]==0&&a[x-2][y-1]==0&&a[x+2][y]==0))||
(flag==11&&(a[x][y+1]==0&&a[x+2][y-1]==0&&a[x+2][y]==0))||
(flag==12&&(a[x][y-1]==0&&a[x][y+1]==0&&a[x-2][y-1]==0))||
( flag==13 && ( a[x-2][y]==0 && a[x+2][y-1]==0 && a[x+2][y]==0 ) ) ||
( flag==14 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x+2][y+1]==0 ) ) ||
(flag==15 && ( a[x-2][y]==0 && a[x-2][y+1]==0 && a[x+2][y]==0 ) ) ||
(flag==16 && ( a[x][y+1]==0 && a[x][y-1]==0 && a[x+2][y-1]==0 ) ) ||
( flag==17 && ( a[x-2][y]==0 && a[x+2][y+1]==0 && a[x+2][y]==0 ) ) ||
(flag==18 && ( a[x][y-1]==0 &&a[x][y+1]==0 && a[x-2][y+1]==0 ) ) ||
(flag==19 && ( a[x-2][y]==0 && a[x-2][y-1]==0
&&a[x+2][y]==0))){return1;}
}
return0; //其它情况返回0
}
voidclNEXT() //清除框外的NEXT方块
{flag=next;x=ZL+WID+6;y=ZL+10;clfk();}
void clHA() //清除满行的方块
{intk,Hang=0; //k是某行方块个数,Hang是删除的方块行数
for(j=ZL+HEI-1;j>=ZL+1;j--)//当某行有WID/2-2个方块时,则为满行
{k=0;for(i=ZL+2;i<ZL+WID-2;i+=2)
{if(a[i][j]==1)//竖坐标从下往上,横坐标由左至右依次判断是否满行
{k++; //下面将操作删除行
if(k==WID/2-2) { for(k=ZL+2;k<ZL+WID-2;k+=2)
{a[k][j]=0;gtxy(k,j);printf("");Sleep(1);}
for(k=j-1;k>ZL;k--)
{for(i=ZL+2;i<ZL+WID-2;i+=2)//已删行数上面有方块,先清除再全部下移一行
{if(a[i][k]==1){a[i][k]=0;gtxy(i,k);printf("");a[i][k+1]=1;
gtxy(i,k+1);printf("□");}}
}
j++;//方块下移后,重新判断删除行是否满行
Hang++;//记录删除方块的行数
}
}
}
}
score+=100*Hang; //每删除一行,得100分
if(Hang>0&&(score%500==0||score/500>level-1)) //得分满500速度加快升一级
{speed-=20;level++;if(speed<200)speed+=20; }
}
⑨ 计算机二级C语言考试内容有那些
C语言考试内容如下:
一、C 语言程序的结构
1. 程序的构成,main 函数和其他函数。
2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。
3. 源程序的书写格式。
4. C 语言的风格。
二、数据类型及其运算
1.C 的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。
2. C 运算符的种类、运算优先级和结合性。
3. 不同类型数据间的转换与运算。
4. C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
三、基本语句
1. 表达式语句,空语句,复合语句。
2. 输入输出函数的调用,正确输入数据并正确设计输出格式。
四、选择结构程序设计
1. 用 if 语句实现选择结构。
2. 用 switch 语句实现多分支选择结构。
3. 选择结构的嵌套。
五、循环结构程序设计
1. for 循环结构。
2. while 和 do-while 循环结构。
3. continue 语句和 break 语句。
4. 循环的嵌套。
六、数组的定义和引用
1. 一维数组和二维数组的定义、初始化和数组元素的引用。
2. 字符串与字符数组。
七、函数
1. 库函数的正确调用。
2. 函数的定义方法。
3. 函数的类型和返回值。
4. 形式参数与实际参数,参数值的传递。
5. 函数的正确调用,嵌套调用,递归调用。
6. 局部变量和全局变量。
7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
八、编译预处理
1. 宏定义和调用(不带参数的宏,带参数的宏)。
2. “文件包含”处理。
九、指针
1. 地址与指针变量的概念,地址运算符与间址运算符。
2. 一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。
3. 用指针作函数参数。
4. 返回地址值的函数。
5. 指针数组,指向指针的指针。
十、结构体(即“结构”)与共同体(即“联合”)
1. 用 typedef 说明一个新类型。
2. 结构体和共用体类型数据的定义和成员的引用。
3. 通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。
十一、位运算
1. 位运算符的含义和使用。
2. 简单的位运算。
十二、文件操作
1. 文件类型指针
2. 文件的打开与关闭
3. 文件的读写
拓展资料:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。全国计算机等级考试有二级c语言这个考试的项目。
考试要求:
1. 熟悉Visual C++6. 0集成开发环境。2. 掌握结构化程序设计的方法,具有良好的程序设计风格。3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序。4. 在Visual C++6. 0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。
参考链接:网络-二级C语言
⑩ C++Primer Plus和C++Primer有什么区别
一、出版时间不同
1、C++Primer Plus:是2015年人民邮电出版社出版的图书,作者是 [美]普拉塔(Prata,S.)。
2、C++Primer:是2006年6月1日人民邮电出版社出版图书,作者StanleyB. LippmanBarbaraE. Moo JoséeLaJoie 。
二、内容不同
1、C++Primer Plus:针对C++初学者,从C语亮谨言基础知识开始介绍,然后在此基础上详细阐肆核述C++新增的特性,因此不要求读者有较多C语言方面的背景知识。本书可作为高等院校C++课程的教材,也可供初学者自学C++时使用。
2、C++Primer:内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美裂键掘结合,已经帮助全球无数程序员学会了C++。
三、特点不同
1、C++Primer Plus:全书分17章和10个附录,分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间。
2、C++Primer:对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。