下面是小编为大家收集的九、预处理(C语言教程),本文共10篇,仅供参考,欢迎大家阅读,一起分享。本文原稿由网友“花生米可不能吃”提供。
篇1:九、预处理(C语言教程)
预处理
概述
在前面各章中,已多次使用过以“#”号开头的预处理命令,如包含命令# include,宏定义命令# define等。在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分。
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。
C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。本章介绍常用的几种预处理功能。
宏定义
在C语言源程序中允许用一个标识符来表示一个字符串, 称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换, 这称为“宏代换”或“宏展开”。
宏定义是由源程序中的宏定义命令完成的。 宏代换是由预处理程序自动完成的。在C语言中,“宏”分为有参数和无参数两种。 下面分别讨论这两种“宏”的定义和调用。
无参宏定义
无参宏的宏名后不带参数。其定义的一般形式为: #define 标识符 字符串 其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。 “标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。在前面介绍过的符号常量的定义就是一种无参宏定义。 此外,常对程序中反复使用的表达式进行宏定义。例如: # define M (y*y+3*y) 定义M表达式(y*y+3*y)。在编写源程序时,所有的(y*y+3*y)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(y*y+3*y)表达式去置换所有的宏名M,然后再进行编译。
#define M (y*y+3*y)
main{
int s,y;
printf(“input a number: ”);
scanf(“%d”,&y);
s=3*M+4*M+5*M;
printf(“s=%d\\n”,s);
}
上例程序中首先进行宏定义,定义M表达式(y*y+3*y),在s= 3*M+4*M+5* M中作了宏调用。在预处理时经宏展开后该语句变为:s=3*(y*y+3*y)+4(y*y+3*y)+5(y*y+3*y);但要注意的是,在宏定义中表达式(y*y+3*y)两边的括号不能少。否则会发生错误。
当作以下定义后: #difine M y*y+3*y在宏展开时将得到下述语句: s=3*y*y+3*y+4*y*y+3*y+5*y*y+3*y;这相当于; 3y2+3y+4y2+3y+5y2+3y;显然与原题意要求不符。计算结果当然是错误的。 因此在作宏定义时必须十分注意。应保证在宏代换之后不发生错误。对于宏定义还要说明以下几点:
1. 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查,
如有错误,只能在编译已被宏展开后的源程序时发现。
2. 宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。
3. 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结 束。如要终止其作用域可使用# undef命令,例如: # define PI 3.14159
main()
{
……
}
# undef PIPI的作用域
f1()
....表示PI只在main函数中有效,在f1中无效。
4. 宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。
#define OK 100
main()
{
printf(“OK”);
printf(“\\n”);
}
上例中定义宏名OK表示100,但在printf语句中OK被引号括起来,因此不作宏代换。程序的运行结果为:OK这表示把“OK”当字符串处理。
5. 宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。例如: #define PI 3.1415926
#define S PI*y*y /* PI是已定义的宏名*/对语句: printf(“%f”,s);在宏代换后变为: printf(“%f”,3.1415926*y*y);
6.习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母。
7. 可用宏定义表示数据类型,使书写方便。例如: #define STU struct stu在程序中可用STU作变量说明: STU body[5],*p;#define INTEGER int 在程序中即可用INTEGER作整型变量说明: INTEGER a,b; 应注意用宏定义表示数据类型和用typedef定义数据说明符的区别。宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换, 而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能。请看下面的例子: #define PIN1 int* typedef (int*) PIN2;从形式上看这两者相似, 但在实际使用中却不相同。下面用PIN1,PIN2说明变量时就可以看出它们的区别: PIN1 a,b;在宏代换后变成 int *a,b;表示a是指向整型的指针变量,而b是整型变量。然而:PIN2 a,b;表示a,b都是指向整型的指针变量。因为PIN2是一个类型说明符。由这个例子可见,宏定义虽然也可表示数据类型, 但毕竟是作字符
代换。在使用时要分外小心,以避出错。
8. 对“输出格式”作宏定义,可以减少书写麻烦。例9.3 中就采用了这种方法。
#define P printf
#define D “%d\\n”
#define F “%f\\n”
main(){
int a=5, c=8, e=11;
float b=3.8, d=9.7, f=21.08;
P(D F,a,b);
篇2:C语言:预处理指令学习
预处理指令 分3种
>宏定义
>条件编译
>文件包含
预处理指令是在代码翻译成0跟1之前执行的
>所有的预处理指令都是以#号开头的
源文件-->预处理-->汇编-->二进制-->链接(可执行文件)-->运行
#define 宏名 值
定义一个没有参数的宏
宏定义干什么? 在代码翻译成0跟1之前,把所有的宏名替换为值(宏定义只做一个单纯的替换操作)
注意: 宏名和值之间要用空格隔开
宏定义后面不需要写分号
如果把宏名写在双引号中在代码翻译成0跟1之前不会进行替换
一般宏名都大写,为了和局部变量区分开来
宏名除了用大写 还可以用k开头
宏定义的作用域:
从定义的那一行开始一直到文件结束
宏定义的位置随便写
可以使用#undef来提前结束宏定义的作用域
02-带参数的宏定义:
注意:
宏名后面的()中不需要写参数类型
()和后面要替换的格式之间要用空格隔开
带参数的宏定义和函数的区别:
宏定义不会进行运算,你传什么他就会给你替换成成什么
带参数的宏定义比函数的效率高
因为带参数的宏定义是在运行之前就替换好了,运行的时候只需要做一个运算;
而函数是在运行的时候才去找到函数并运算
应用场景:做一些简单的运算用宏定义, 如果做一些复杂的运算就用函数
注意点
写带参数的宏定义一般会给每一个参数都加上括号
写带参数的宏定义不仅要给每一个参数加上括号还要给整体也加上括号
03-条件编译
如果定义了A这个宏 就编译#if和endif之间的代码
#if defined(B)
printf(“aaaaa\\n”);
#endif
如果没有定义A这个宏, 就编译#if和endif之间的代码
#if !defined(A)
printf(“bbbbbb\\n”);
#endif
注意点: 在编写条件编译的时候一定要在后面加上 #endif
#endif 的作用是告诉条件编译什么时候结束
static-extern对函数的作用
外部函数:定义的函数能被本文件和其它文件访问
1>默认情况下所有的函数都是外部函数
2>在不同文件中不能有相同名称的外部函数
extern的作用:
1>完整的定义一个外部函数
2>完整的声明一个外部函数
内部函数:定义的函数只能被本文件访问
1>不同文件中可以有相同名称的内部函数
static的作用:
1>定义一个内部函数
2>声明一个内部函数
static-extern对全局变量的作用
全局变量分为2种:
1.>外部全局变量
>在本文件和其它文件中都可以访问的全局变量称之为外部全局变量
>不同文件中的外部全局变量代表着同一块存储空间
>所有同名的全局变量都代表着同一块存储空间
2.>内部全局变量
>只能在本文件中访问的全局变量称之为内部全局变量
extern对全局变量的作用:
用来“声明”一个外部全局变量
static对全局变量的作用:
用来定义一个外部全局变量
默认情况下所有的全局变量都是外部全局变量
所有同名的全局变量都代表着同一块存储空间
static对局部变量的作用
普通局部变量和静态局部变量的区别
1.存储空间不一样
2.普通局部变量没有显示初始化没有固定的初始化值,
而静态局部变量如果没有显示初始化有固定初始化值,默认就是0
3. 用static修饰局部变量,会延长局部变量的生命周期,但不会改变TA的作用域
static修饰局部变量的使用场合:
1.如果某个变量调用频率非常高,而且这个变量的值是固定不变的,就可以使用static来修饰该局部变量,提高性能
typedef基本概念
tepedef的作用:给现有的数据类型起一个外号(别名)
>有利于加强数据类型的描述性, 提高了代码的可读性
>提高了程序的可扩展性, 移植性
>减少了代码的书写工作量, 简化了代码
注意点:
typedef 仅仅是给原有的数据类型起了一个别名,并不是创建一个新的数据类型
注意点:如果通过typedef给指向函数的指针起别名 指针变量的名称就是别名
typedef不仅可以写在函数外面还可以写在函数里面,只要在使用别名之前定义就OK
篇3:c语言教程:CategoryOC
Category 书上翻译为目录 [系统类的扩展]
(1)实现继承之外的扩展方法机制
(2)Category使用方法
(3)字符串翻转方法Category扩展
(4)让函数私有化
(1)实现继承之外的扩展方法机制
在一个类里面拓展一些方法进去
1、能把一个类的实现分为若干不同文件中,
<1>c/c++无法实现的,把类实现分到若干文件中实现。
<2>或者现有的类中拓展一些方法进去。
以前是用继承方法在里面实现一些方法,现在只要在字符串类中拓展一些方法就好。[用系统类中动态的添加一些方法]
<3>公司经常问Category 与 继承有什么区别呢?
Category 不能完全替代继承,但是它能够做很多继承做不了的事情,写起来比继承麻烦,但使用起来比较好用。
2、每个Category 是类的一部分
3、类的不同类别可以单独编译(可以让不同开发者负责一个Category )
4、如果把一个类Category (申明和实现)放到一个.m文件中,那么该Category 外界不能访问。这样实现类似c++中的 class的private功能。
5、Category 实际上就是对类的扩展。
Category 的缺点:
只能扩展函数,消息,不能扩展字符段,变量等[所以说不能替代继承]
Category 命名规范:
一般:
要扩展的类名+扩展变量.[h/m]
比如:
NSString + ReverseString.h
NSString + ReverseString.m
unichar == unsigned short 两个字节,
电脑资料
“%C” 这个C是大c,和语音中的c不一样。
appendString 添加到字符串里。
实现.m函数私有化[只给.m函数提供调用
@interface Foo (Private)//这样声明
-(void) test2;
@end
@implementation Foo
-(void) test
{
[self test2];
}
-(void) test2
{
NSLog(@“test2 is calling”);
}
@end
(2)Category使用方法
(3)字符串翻转方法Category扩展
篇4:C/C++常用预处理指令
预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查,预处理命令以符号“#”开头。
常用的预处理指令包括:
宏定义:#define
文件包含:#include
条件编译:#if、#elif、#ifndef、#ifdef、#endif、#undef
错误信息指令:#error
#line指令
布局控制:#pragma
宏定义
宏定义又称为宏代换、宏替换,简称“宏”。宏替换只作替换,不做计算,不做表达式求解。宏定义分带参数的宏定义和不带参数的宏定义。在带参数的宏定义,宏名和参数的括号间不能有空格。
宏定义不分配内存,变量定义分配内存。
宏展开不占运行时间,只占编译时间;函数调用占运行时间(分配内存、保留现场、值传递、返回值)。
出现在宏定义中的#运算符把跟在其后的参数转换成一个字符串,有时把这种用法的#称为字符串化运算符。例如:
复制代码
#include
using namespace std;
#define STR(n)“abcd”#n
int main
{
cout<
system(“pause”);
return 0;
}
复制代码
输出结果为:
##运算符用于把参数连接到一起,预处理程序把出现在##两侧的参数合并成一个符号。例如:
复制代码
#include
using namespace std;
#define STR(a,b,c) a##b##c
int main()
{
cout<
system(“pause”);
return 0;
}
复制代码
输出结果为:
文件包含
#include<文件名>称为标准方式,到系统头文件目录查找文件,#include“文件名”则先在当前目录(用户路径)查找,而后到系统头文件目录查找。文件名>
我们以#include
被包含文件中的静态全局变量不用在包含文件中声明。
条件编译
使用条件编译可以使目标程序变小,运行时间变短。
#undef指令,用来删除事先定义的宏定义, 其一般形式为:#undef 宏替换名
错误信息指令
#error指令,该指令用于程序的调试,输出一个错误信息,当编译中遇到#error指令就停止编译。其一般形式为: #error 出错信息。
复制代码
#ifndef __cplusplus
#error this is not a C++ complier.
#endif
#include
using namespace std;
int main()
{
system(“pause”);
return 0;
}
复制代码
#line指令
命令#line改变_LINE_与_FILE_的内容,它们是在编译程序中预先定义的标识符。
其格式为:#line number [ filename ],这条指令可以改变当前的行号和文件名。
复制代码
#include
using namespace std;
#line 100 “a.cpp”
int main()
{
cout<<__LINE__<<'\\t'<<__FILE__<
system(“pause”);
return 0;
}
复制代码
运行结果:
布局控制指令
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作,
#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
其格式一般为: #pragma Para,其中Para 为参数。
message 参数:在编译信息输出窗口中输出相应的信息
#pragma message(“消息文本”)
code_seg参数:设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到它
#pragma code_seg([“section-name”[,“section-class”]])
#pragma once:
只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,但移植性差。如果写的程序要跨平台,最好使用C++中的宏定义。
#pragma hdrstop:表示预编译头文件到此为止,后面的头文件不进行预编译。
#pragma resource:
#pragma resource “winform.dfm”
表示把winform.dfm文件中的资源加入工程,winform.dfm中包括窗体外观的定义。
#pragma warning:输出警告信息。
我们运行一下程序:
复制代码
int main()
{
float f=3.6;
int i=f;
cout<<
system(“pause”);
return 0;
}
复制代码
会出现如下警告信息:
1>ClCompile:
1>f.cpp
1>c:\\users\\gaohongchen\\desktop\\45\\5\\5\\f.cpp(12): warning C4305: “初始化”: 从“double”到“float”截断
1>c:\\users\\gaohongchen\\desktop\\45\\5\\5\\f.cpp(13): warning C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
若我们在程序上方添加:
#pragma warning(disable:4305)
则编译时警告信息会变为:
1>ClCompile:
1>f.cpp
1>c:\\users\\gaohongchen\\desktop\\45\\5\\5\\f.cpp(13): warning C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
若我们在程序上方添加:
#pragma warning(error:4244)
则警告信息会变为错误信息:
1>ClCompile:
1>f.cpp
1>c:\\users\\gaohongchen\\desktop\\45\\5\\5\\f.cpp(12): warning C4305: “初始化”: 从“double”到“float”截断
1>c:\\users\\gaohongchen\\desktop\\45\\5\\5\\f.cpp(13): error C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
#pragma comment:该指令将一个注释记录放入一个对象文件或可执行文件中。
常用的lib关键字,可以帮我们连入一个库文件。例如:
#pragma comment(lib,“wsock32.lib”)
#pragma disable:在函数前声明,只对一个函数有效。该函数调用过程中将不可被中断。一般在C51中使用较多。
篇5: c语言心得体会
c语言心得体会范文 1
在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在为期一周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。
在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。
还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了去看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲课中海给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。
通过这次实训,也使我们发现了许多问题。
在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。
还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。
首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。
总之,这一切都成为我记忆里面的一个 篇章,更是在C语言编程上的一个里程碑。
c语言心得体会范文 2
在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试自己编写一个比较复杂的程序系统。在为期两周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,自然感触良多。
刚开始接触到C的时候,我已经学过一些有关VB的内容,这个在算法和思维上稍微有点帮助。回想本学期的学习,首先,最基本的,是C的数据格式,让我们知道整数,浮点数以及字符常量在C中的运用。然后,在学会了数据转化,以及熟练的可以对各种数据处理之后,我开始进行有关数据结构,像数组,结构体等的学习,因为有的东西从现有的知识来看都是非常简单的,还没有联系到指针等等一些复杂的概念。可是,仅仅学会这些是远远不够的,C语言中,还有很多更加经典、重要、实用的知识。
说说函数。虽说很多程序语言都有函数这一内容,但我觉得C语言的函数是最有魅力的了。学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,学习C语言的“高人”都说,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。比如,大家可以作一个比较字符串的实验,用C语言中的strcmp函数只要一句话,而自己编写的话,30句都很难实现,可想而知函数的实用和快捷。在我们C语言实训的代码中,函数更是得到了充分的应用,可以说,实训题目的复杂代码,就是用无数个函数的调用和嵌套积累出来的。
要注意的是,有的同学刚刚开始的时候,都是被一些大的程序激励的,所以当开始的时候看到繁琐的数据转化和简单的算法,都觉得很无聊,都想自己做几个自己满意的程序来看看,虽然这种想法很好,但是,我们说,没有基础,纯粹是搬照一些现成设计方法,是不足取的。要知道,程序设计讲究的是个人的思维的,假如刚开始就被一些现成的思想束缚住,以后就会觉得很无趣。
我们知道,指针其实是C语言的灵魂,许多的数据结构在我们学到这里之前都可以说是精通了。所以我们的任务就是,让数据结构在指针中运行。当然,刚刚开始接触到这些新的东西,是一件非常痛苦的事情,所以我们一定要用非常形象的思维去看待指针,不能太固化。所以,新的东西,比如结构体在指针中的表现方法,数组及多维数组在结构体中的运用,都一点一点的加了进来,同时丰满了我们对原来C的数据机构,数据表示的理解。当我们完成了这三步的学习,我们已经可以自豪的说,我们的基础都扎实了,可以进一步的学习有关算法,设计概念等等深层次的东西了。
但是,指针,结构体,这些太抽象的东西,在学习C语言的时候我们就有点“似懂非懂”,可是在眼下的C语言实训中,像这么重要的C语言知识,一定要达到能熟练掌握,实际运用的程度。在实训的大程序中,结构体在指针中的表现方法,数组及在结构体中的运用等具体的技术环节,都得到了体现,不会指针,我们的工作是没法展开的。所以,在实训期间,大家在巩固基本知识的基础上,逐块攻克实训课题,克服了困难,自信心得到了提高。
最后,谈谈我们组的程序软件。商店商品管理系统,是一个比较利于应用,解决实际问题,方便实际管理的程序。设计代码比较复杂,结构比较严谨。在程序编写的1周左右的时间里,组员们遇到了上述的困难,包括程序设计构思,甚至是指针等某些知识点的欠缺,导致的工作中出现的困难。但是,当大家一起团结协作,解决了这些困难之后,发现自己也可以编写复杂的、应用性的程序了,更发现自己对C语言这门学科的兴趣也提高了。
当然,我们编写的商店商品管理系统,还存在很多疏漏和不合理之处。比如,程序复杂冗长,如果时间充裕,我们将在不改变程序运行结果的基础上,简化程序,使每一句更加精辟,总体上更加简化。另外,在程序的外观上,我们由于时间问题,没有做更多的修饰,运行起来显得比较死板、枯燥乏味。如果增添一些色彩和其他效果,我们的程序也许会更加完美。
c语言心得体会范文 3
通过一学期对C语言的学习,我感觉学习C语言是有一定难度却又是非常有趣的科目。也是很有帮助的,特别是对将要面对的计算机二级考试。这段时间的学习我知道了C语言的基本特点有以下几点:
1.语言简洁,使用灵活方便。
2.运算符丰富,表达能力强。
3.数计类型丰富。
4.目标程序质量高,具有面向硬件系统的特点。
5.具有结构化的控制语句和模块化的程序结构。
6.具有编译预处理功能。
7.程序设计自由度大,可移植性好。
这段时间学习使我掌握了:
一、我学习了C语言的数据类型、常量与符号常量、变量、C语言的运
算符和表达式、赋值运算符和赋值表达式、自增自减运算符以及逗号表达式等。
二、这章介绍了结构化程序的三种基本结构、C语句概述、数据输出包
括字符输出函数putchar和格式输出函数printf、数据输入包括字符输入函数getchar和格式输入函数scanf,还有一些简单的C语程序设计举列等。
前几天一直在看C++语法,所以对一些比较实际的例子总感到比较抽象,但是那也是一个必需阶段,可能大家和我的学习方式不一样,但从刚接触程序到现在来看,发现这样学习语言的方法挺不错的。
经过第一阶段对语法的学习,我觉得实例阶段应该是一个过渡阶段吧,通过前一阶段对语法的学习之后,可能有很多概念我们都比较模糊,或者说很多东西太抽象了,这就为我们第二个阶段的学习做好了实例化的准备,可以这样说吧,第一个阶段就我们为我们的学习一样东西而构建的一个类,里面讲了我们应该在这里面要做什么?第二阶,也就是本阶段,我们就应该去把前一段的东西具体化(实例化先前创建的类),那怎么个具体化呢,呵呵!说白了,去练习一些小例子,从网上下载的电子书上有很多这方面的例子的,如果有自己去书店买书的话,里面也应该提供了不少,里面的例子,我是每次都打了一遍,也许有的人不会亲自去用手打一遍,什么copy等,当然这样也行,但我个人认为,对于初学者来说,最好还是自己动手打一遍比较好,毕竟这些东西对我们来说,都比较陌生,如果每个字都自己打完的话,有些代码你不想记住也难了,在这里,我们得弄懂练习的每一个例子,如果能把一些例子稍稍修改,弄懂里面精髓的东西,让自己知道为什么这样做,那么是最好不过的了,我平时练习时,这一步是少不了的,都习惯了,所以也就成了条件反射,想不这样都不行。最后,我们就应该汇一下总,把前面做过的例子里所用的技术理一下,再做一个比较大的例子,尽量把到目前为止所懂的知识全部应用到里面去,只是尽量,当然有些东西是不能集成到一起的,也是是代码之间的排斥性。
这是个人的一点学习心得,希望能更好的运用到学习中去。C语言是一门很有用的、对于我们的就业很实际的语言,学习好C语言是一项必须而实际的任务。我们必须要好好掌握。
c语言心得体会范文 4
在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理。简单界面程序。高级界面程序。程序的添加修改。用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:
1.加深对课堂讲授内容的理解
课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,
这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。
通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去“掩盖”程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。
2.熟悉程序开发环境、学习计算机系统的操作方法
一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓“环境”就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。
3.学习上机调试程序
完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的'调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。
c语言心得体会范文 5
1、引言
《C语言程序设计》是各大高校理工类专业的一门重要的必修课程,由于C语言使用灵活,数据类型繁多,结构复杂,因此学生在学习该课程时都或多或少的感觉头疼,学习不得要领。这就要求教师在教学中需要贯穿先进的教学理念,采用适合的教学方法。本文针对C语言教学中存在的问题,结合多年的教学经验,提出几点教学方法和体会。
2、C语言教学中存在的问题
2.1学生学习热情不高
C语言课程的开设对象一般为大一学生,想让他们马上接受程序设计的思想几乎是不可能的。另外他们从高年级同学那里得知C语言学习难度大,就会产生学习C语言这门课程的惧怕心理。还有一部分学生认为学习C语言对自身的专业没有什么用处,因此产生了厌学的情绪。
2.2传统教学方式存在弊端
以教师为中心的灌输式教学方法忽视了学生的“学”,学生处于被动接受状态,缺少教师和学生的互动,学生学习的主动性、积极性难以发挥。虽然近年来C语言程序设计课程多媒体课件教学得到广泛普及,在某种程度上激发了学生的学习兴趣,但仍然没有脱离传统教学方式,缺少教学目标的针对性,由“照本宣科”变为“照片(幻灯片)宣科”,没有从根本上解决师生交互匮乏的现实[1]。
2.3学生学习方法不得当
由于大一学生还不是很适应大学的学习方式,很多时候还沿用高中时候学数学、英语等科目的方法来学习C语言,一些学生只重视理论知识,以为光靠背一背、做做题就能学好,忽视了实践环节的重要性,从而导致了一部分学生学不得法,效率极低。
3、几点教学体会
针对上述存在的问题,分别提出几点体会,可以归纳为:“一个目标”、“两个关键”、“三步实践”。
3.1树立一个目标
这是针对学生的学习态度提出的。做一件事情如果没有一个明确的目标。就很难提起兴趣,遇到困难也很容易放弃,当然也无法做好。学习C语言也不例外。如果想激发学生的学习兴趣,让学生喜欢学、主动学,就必须让学生明确为什么要学习C语言,明确一个学习的目标。事实上,学习C语言对于任何专业的学生都有莫大的好处,可以锻炼逻辑思维能力,对以后的专业课的学习有很好的辅助作用,也会对以后学习其他编程语言打下良好的基础,正所谓”万变不离其宗”,如果真正掌握精了程序设计思想,具备了真正解决实际问题的能力,语言再更新可程序设计的本质不会变[2]。当然,从更实用的角度来看,可以把“通过国家二级考试”作为一个为之努力实现的目标,不仅对以后就业很有帮助,让学习有了兴趣和动力,有了克服困难的决心,取得事半功倍的效果。
c语言心得体会范文 6
在初学C语言的一个学期后,我们进行了C语言阶段,尝试编写各种类型的程序。在为期一个周时间中,我的感受是:C语言实训和平时上课所接触的成有很多不同,所经受的考验和克服的困难和平时的相差不大,遇到不会做的题同学互相讨论,互相帮助,共同解决,攻克了C语言的复杂程序,我感触良多。
在这次实训中,我对C语言有了一个更深的认识了解,也对这学期的知识得到巩固,还尝试了运行编程,每次运行程序成功,让我对下面的项目充满了信心通过自己的努力最终把最初的理论知识转化成基本技能,这次的实训,是我对C语言的学习产生了农活的兴趣。
还是这次实训,最令人激动的就是同学遇到问题互相帮助虽然只是一个很小得实训,但同学们的满腔人情却是值得骄傲的,我们在实训中取长补短在实训中长知识,提高了我们学习,虽然对有些时候老师没给我们指出解决问题的方法有一些小抱怨,但到了结束是才知道,这种教学让我们自己学会了自学,学会了去看懂别人的代码。更多的是老师的感动,每天在我们来之前家到了机房,给我们我分享他学C语言的感受,还提醒我们注意在编程时与遇到的事项,,这些是我们平时上课无发了解到的知识是我们更深层次的极大收获。
通过实训我们也发现了许多问题,在试训中我认识到自己还有很多知识没学好,最基本的知识点没有理清楚,而且许多东西要经过翻书,上网查阅,搜索,遇到一小点错误运行不出来,就会烦躁不安,觉得有些自暴自弃或这抱怨题目有些变态,以后要克服,尽量保持一颗蓝好的心态,学好C语言,用C语言来编写一个按要求的系统。
对于未来,近程下个学期,我觉得我还有许多方面需要提高。
首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。能写出一些程序,上网的时候多看一些优秀的教程和优秀的代码,遇到问题是多和同学讨论,并且多弄出几套方案,多练习自己结局问题的能力和与同学合作的能力。
总之,这一切都成为我记忆里面的一个 篇章,更是C语言编程上的一个里程碑。
c语言心得体会范文 7
三周的课程设计已经结束了。
回想学习C语言 的过程中,既有快乐又有烦恼。
从领到书的那一刻,我就很郁闷,《C 语言程序设计》到底事学什么的,有什么用。刚开始上课时,还在迷茫这门课程是用来做什么的。不过,这些感受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过半个学期的学习,我掌握了基本知识。
下学期开始时,被通知要进行三周的课程设计。当时有点懵,感觉学的东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为我们了。
第一天基本上都是在看书,把基本知识再熟悉一边。到了下午的时候,老师发过来三道练习题,从这几道练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。
第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。但是,到了第二周,我们由不得不再次陷入困境。在整个程序的编写过程中。最难的就是修改和删除这两个模块,这也是我们第二周要解决的重点问题。
开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。困难之时,我们组的其他人,帮助了我,完成了修改和删除。这样的话,整个程序基本上全部完成了,就剩下完善工作了。我们组写了两个程序,最后,两个程序相互组合,互补,大功告成
虽然设计时完成了,但是我觉得其中还是由一些不足之处:
1. 警告句。程序中缺少一些警告句,例如:“是否真的删除(y/n)?”。
2. 重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。
3. 选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。
整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。
短短的三周课程设计结束了,但是这段时间里,我又学到了更多C 知识,如:对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。,也看到了团队精神和互帮互助的重要性。这一点会让我终生受益。通过三周的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这三周过的挺充实!
篇6:C语言练习题
C语言练习题
2.1以下叙述中正确的是
A)C语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D)C语言出现的最晚,具有其他语言的.一切优点
正确答案: C
2.2 以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
正确答案: A
2.3 以下说法正确的是
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
正确答案: C
2.4 C语言规定,在一个源程序中,main函数的位置
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
正确答案: C
2.5 以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
正确答案: D
篇7:C语言测试题
(1)下面关于算法说法错误的是_______。
a. 算法最终必须由计算机程序实现
b. 为解决某问题的算法同为该问题编写的程序含义是相同的
c. 算法的可行性是指指令不能有二义性
d. 以上几个都是错误的
(2)下面说法错误的是______.
a. 算法原地工作的含义是指不需要任何额外的辅助空间
b. 在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
c. 所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
d. 同一个算法,实现语言的级别越高,执行效率就越低
(3)在下面的程序段中,对x的赋值语句的频度为_____。
for (int i; i
{ for (int j=o; j
{ x:=x+1;
} }
a. 0(2n) b. 0(n) c. 0(n2) d. O(log2n)
(4)下面说法正确的是______。
a. 数据元素是数据的最小单位;
b. 数据元素是数据的最小单位;
c. 数据的物理结构是指数据在计算机内的实际存储形式
d. 数据结构的抽象操作的定义与具体实现有关
(5)下面说法正确的是_______。
a. 在顺序存储结构中,有时也存储数据结构中元素之间的关系
b. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高
c. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立
d. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构
篇8:C语言测试题
(1) 下述_____是顺序存储结构的优点。
a. 存储密度大
b. 插入运算方便
c. 删除运算方便
d. 可方便地用于各种逻辑结构的存储表示
(2)下面关于线性表的叙述中,错误的是_____。
a. 线性表采用顺序存储,必须占用一片连续的存储单元
b. 线性表采用顺序存储,便于进行插入和删除操作
c. 线性表采用链接存储,不必占用一片连续的存储单元
d. 线性表采用链接存储,便于插入和删除操作
(3) 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用_______存储方式最节省时间。
a. 顺序表 b. 双链表 c. 带头结点的双循环链表 d. 单循环链表
(4)静态链表中指针表示的是______。
a. 内存地址 b. 数组下标 c. 下一元素地址 d. 左、右孩子地址
(5)下面的叙述不正确的是_______。
a. 线性表在链式存储时,查找第i个元素的时间同i的值成正比
b. 线性表在链式存储时,查找第i个元素的时间同i的值无关
c. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比
d. 线性表在顺序存储时,查找第i个元素的时间同i的值无关
篇9:C语言测试题
(1)下面说法错误的是_____。
a. 静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关。
b. 静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。
c. 静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。
d. 静态链表就是一直不发生变化的链表。
(2)在双向链表指针p的结点前插入一个指针q的结点操作是______。
a. p->Llink=q; q->Rlink=p; p->Llink->Rlink=q; q->Llink=q;
b. p->Llink=q; p->Llink->Rlink=q; q->Rlink=p; q->Llink=p->Llink;
c. q->Rlink=p; q->Llink=p->Llink; p->Llink->Rlink=q; p->Llink=q;
d. q->Llink=p->Llink; q->Rlink=q; p->Llink=q; p->Llink=q;
(3)下面说法正确的是______。
a. 顺序存储结构的主要缺点是不利于插入或删除操作;
b. 线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的;
c. 顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好;
d. 顺序存储方式只能用于存储线性结构。
(4)下面说法正确的是______。
a. 线性表只能用顺序存储结构实现。
b. 为了很方便的插入和删除数据,可以使用双向链表存放数据。
c. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
d. 链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。
(5)下面说法正确的是_________。
a. 数据元素是数据的最小单位。
b. 队列逻辑上是一个下端口和上端能增加又能减少的线性表。
c. 任何一个递归过程都可以转换成非递归过程。
d. 只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈。
篇10:C语言小游戏
C语言小游戏
最基础的贪吃蛇的代码
#include
#include//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。
#include //用户通过按键盘产生的对应操作 (控制台) #include
#include //日期和时间头文件
#define LEN 30
#define WID 25
int Snake[LEN][WID] = {0}; //数组的元素代表蛇的各个部位 char Sna_Hea_Dir = 'a';//记录蛇头的移动方向
int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置
int Snake_Len = 3;//记录蛇的`长度
clock_t Now_Time;//记录当前时间,以便自动移动
int Wait_Time ;//记录自动移动的时间间隔
int Eat_Apple = 1;//吃到苹果表示为1
int Level ;
int All_Score = -1;
int Apple_Num = -1;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄
//句柄 :标志应用程序中的不同对象和同类对象中的不同的实例 方便操控, void gotoxy(int x, int y)//设置光标位置
{
COORD pos = {x,y}; //定义一个字符在控制台屏幕上的坐标POS
//定位光标位置的函数 SetConsoleCursorPosition(hConsole, pos);
}
void Hide_Cursor()//隐藏光标 固定函数
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(hConsole, &cursor_info);
}
void SetColor(int color)//设置颜色
{
SetConsoleTextAttribute(hConsole, color);
//是API设置字体颜色和背景色的函数 格式:SetConsoleTextAttribute(句柄,颜色);
}
void Print_Snake()//打印蛇头和蛇的脖子和蛇尾
{
int iy, ix, color;
for(iy = 0; iy
for(ix = 0; ix
{
if(Snake[ix][iy] == 1)//蛇头
{
SetColor(0xf); //oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数
gotoxy(ix*2, iy);
printf(
}
if(Snake[ix][iy] == 2)//蛇的脖子
{
color = rand()%15 + 1; //rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。
//头文件:stdlib.h
if(color == 14)
color -= rand() % 13 + 1;
SetColor(color);
gotoxy(ix*2, iy);
printf(
}
if(Snake[ix][iy] == Snake_Len)
{
gotoxy(ix*2, iy);
SetColor(0xe);
printf(
} //变色
}
}
void Clear_Snake()//擦除贪吃蛇
{
int iy, ix;
for(iy = 0; iy
for(ix = 0; ix
{
gotoxy(ix*2, iy);
if(Snake[ix][iy] == Snake_Len)
printf(
}
}
void Rand_Apple()//随机产生苹果
{
int ix, iy;
do
{
ix = rand() % LEN;
iy = rand() % WID;
}while(Snake[ix][iy]);
Snake[ix][iy] = -1;
gotoxy(ix*2, iy);
printf(
Eat_Apple = 0;
}
void Game_Over()//蛇死掉了
{
gotoxy(30, 10);
printf(
Sleep(3000);
system(
exit(0);
}
void Move_Snake()//让蛇动起来
{
int ix, iy;
for(ix = 0; ix
for(iy = 0; iy
if(Snake[ix][iy] == 1)
{
switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头 {
case 'w':
if(iy == 0)
Game_Over();
else
Sna_Hea_Y = iy - 1;
Sna_Hea_X = ix;
break;
case 's':
if(iy == (WID -1))
Game_Over();
else
Sna_Hea_Y = iy + 1;
Sna_Hea_X = ix;
break;
case 'a':
if(ix == 0)
Game_Over();
else
Sna_Hea_X = ix - 1;
Sna_Hea_Y = iy;
break;
case 'd':
if(ix == (LEN - 1))
Game_Over();
else
Sna_Hea_X = ix + 1;
Sna_Hea_Y = iy;
break;
default:
break;
}
}
if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1&&Snake[Sna_Hea_X][Sna_Hea_Y]!=0&&Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
Game_Over();
if(Snake[Sna_Hea_X][Sna_Hea_Y]
{
++Snake_Len;
Eat_Apple = 1;
}
for(ix = 0; ix
for(iy = 0; iy
{
if(Snake[ix][iy] >0)
{
if(Snake[ix][iy] != Snake_Len)
Snake[ix][iy] += 1;
else
Snake[ix][iy] = 0;
}
}
Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//处理蛇头
}
void Get_Input()//控制蛇的移动方向
{
if(kbhit())
{
switch(getch())
{
case 87:
Sna_Hea_Dir = 'w';
break;
case 83:
Sna_Hea_Dir = 's';
break;
case 65:
Sna_Hea_Dir = 'a';
break;
case 68:
Sna_Hea_Dir = 'd';
break;
default:
break;
}
}
if(clock() - Now_Time >= Wait_Time)//蛇到时间自动行走 {
Clear_Snake();
Move_Snake();
Print_Snake();
Now_Time = clock();
}
}
void Init()//初始化
{
system(
system(
Hide_Cursor();
gotoxy(61, 4);
printf(
gotoxy(61, 6);
printf(
gotoxy(61, 8);
printf(
gotoxy(61, 10);
printf(
gotoxy(61, 12);
printf(
int i;
for(i = 0; i
Snake[10+i][15] = i+1;
int iy, ix;//打印蛇
for(iy = 0; iy
for(ix = 0; ix
{
if(Snake[ix][iy])
{
SetColor(Snake[ix][iy]); gotoxy(ix*2, iy);
printf(
}
}
}
void Pri_News()//打印信息
{
SetColor(0xe);
gotoxy(73,4);
All_Score += Level;
printf(
gotoxy(73, 6);
printf(
gotoxy(73, 8);
printf(
gotoxy(73, 10);
printf(
gotoxy(73, 12);
printf(
}
void Lev_Sys()//等级系统
{
if(((Apple_Num-1) / 10) == Level)
{
++Level;
if(Wait_Time >50)
Wait_Time -= 50;
else
if(Wait_Time >10)
Wait_Time -= 10;
else
Wait_Time -= 1;
}
}
int main(void)
{
Init();
srand((unsigned)time(NULL));//设置随机数的种子 Now_Time = clock();
int speed1=1000,speed2,a;
printf(
printf(
scanf(
Level=1;
Wait_Time=speed1-speed2;
printf(
scanf(
while(a--)
Rand_Apple(); while(1)
{
if(Eat_Apple) {
++Apple_Num; Rand_Apple(); Lev_Sys(); Pri_News(); }
Get_Input(); Sleep(10); }
return 0;
}
- C 编译器 GCC 简单教程2022-12-26
- C语言实习报告2022-12-30
- c语言心得总结2024-07-12
- c语言课程设计计划书2023-10-23
- c语言试题及答案2023-07-31
- c语言学习心得体会2023-05-31
- C语言程序设计求职信2023-03-25
- C语言见习报告2024-05-28
- C语言计算随机数2023-07-19
- c语言程序设计答案2023-08-24