“plumsea”通过精心收集,向本站投稿了5篇C语言里的位域,下面是小编为大家整理后的C语言里的位域,欢迎阅读与收藏。

篇1:C语言里的位域(一)
C语言里的位域是一个比较复杂的问题,涉及的方面也比较多,关于位域的基础内容可以参考以下文章:理解C语言位域
分析代码如下:
#include “stdio.h”
#include “memory.h”
struct BitSeg1{
int a:4;
int b:3;
};
struct BitSeg2{
char a:4;
char b:3;
};
int main
{
struct BitSeg1 ba1;
ba1.a=1;
ba1.b=2;
printf(“第一次赋值后: a的值为:%d\tb的值为:%d\n”,ba1.a,ba1.b);
ba1.a=100;
ba1.b=30;
printf(“第二次赋值后: a的值为:%d\tb的值为:%d\n”,ba1.a,ba1.b);
char str[]=“0123”;
memcpy(&ba1,str,sizeof(BitSeg1));
printf(“第二次赋值后: a的值为:%d\tb的值为:%d\n”,ba1.a,ba1.b);
printf(“BitSeg1的字节数为: %d\n”,sizeof(BitSeg1));
printf(“BitSeg2的字节数为: %d\n”,sizeof(BitSeg2));
return 0;
}
输出结果为:
第一次赋值后: a的值为:1 b的值为:2
第二次赋值后: a的值为:4 b的值为:-2
第二次赋值后: a的值为:0 b的值为:3
BitSeg1的字节数为: 4
BitSeg2的字节数为: 1
代码中的BigSeg1定义了两个int类型的字段,而且它们分别只占用4位和3位的空间,当BitSeg1中的a,b分别赋值为1和2时,输出的结果也如我们所料。当第二次赋值为100和30时,输出的结果却是4和-2,为什么呢?
1.赋值问题
出现上述问题,是由于赋值与位域效果共同形成的,a和b虽然都是int类型,但是在BigSeg1结构里,它们只有4位和3位为实际有效位。也就是BigSeg1中的前4位是a的,接着的3位是b的(这里没有字节的跨越问题)。执行ba1.a=100语句,其中100的二进制代码是:01100100,程序只把这100的二进制数的前面4位(已用红色字体表示)赋值给a,那么ba1中的a只是0100(b),结果当然是4咯。然后是执行b1.b=30语句,其中30的二进制代码为:00011110,同样的程序只把前3位(注意b定义有效位数是3位)赋值给b,那么ba1中的b就是110(b),结果是-2,为什么?是这样的,我们定义b为int类型,也就是有符号的整型,如果想定义为无符号整型我们必须这样写unsigned int,而有符号整型的第一位是符号位,用于表示正负的(1表示负数,0表示正数),那么对于b,程序就会把b的第一位(即1)做为符号位,即b应该是负数,而后面的是它的数值(即10(b)),注意计算机里负数是按补码的形式表示的,这种赋值下b的确是110(它是补码,按“即反加一”的法则,即十进制的-2),结果就是-2了,
而刚才的a给赋值为0100(b)时,第一位是0,解释为正数。再举一例,若使ba1.b=7,那么ba1.b的值是多少呢?7的二进制是0111,前面3位直接给到b,因为是负数,读出来时按补码形式读,那么就是-1了。
总之一句话:用位为理解位域。
接下来是用memcpy对ba1进行内存copy,就更应该用位来考虑位域了。下面我们分析一下:
首先,sizeof(BitSeg1)的值是4个字节,先记住,后面会对此问题进行详细解释。
执行memcpy(&ba1,str,sizeof(BitSeg1)),把str的内容中的前面4个字节的内存里的内容复制到ba1中,我们先来看一下str的内存位信息(用16进制表示):
0x0012ff74:30 31 32 33
其中0x0012ff74时str数组的地址起始位置,30,31,32,33等16进制值分别表示字符'0','1','2','3',它们当然是ACII值啦。
copy之后的ba1的内存位信息如下:
0x0012ff7c:30 31 32 33
因为ba1也是占4个字节的空间的,所以不会出现内存溢出。memcpy只是把相应内存复制到了ba1上,位信息与str上的信息一样的。
现在,我们把30(H)的二进制写出来,是:00110000,ba1的a占前面4位,b占接下来的3位,直观地看,a应该是0011(b)即十进制的3,b是000(b)即十进制的0,但看输出的结果却是a=0,b=3,这又是为什么呢?其实很简单,处理器定义字节的前面4位是指该字节从右往左4位,而不是从左往右的4位,所以a应该是0000(b),b应该是011(b)。
2.字节对齐
回到上面留下的字节数的问题,即sizeof(BitSeg1)的结果为4个字节。按理来说,BitSeg1的有效位数是7位,但为了程序的快速运行,一个重要的手段是减少内存的读写次数,所以一样的处理器都是以字节的倍数将内存中的数据读到寄存器中,所以程序把数据以字节的形式对齐了就可以有效的减少内存的读写时间,你可想想要处理器只读内存中的7位是如何做的,一次一个位?那倒不如一次读8位。
在做字节对齐的时候也是有规则的,在32位的系统里,编译器会按类型进行字节的对齐,以它们的位宽为基准,在VC下:
char
偏移量必须为sizeof(char)即1的倍数
int
偏移量必须为sizeof(int)即4的倍数
float
偏移量必须为sizeof(float)即4的倍数
long
偏移量必须为sizeof(long)即4的倍数
double
偏移量必须为sizeof(double)即8的
篇2:八、枚举,位运算(C语言)
枚举
在实际问题中, 有些变量的取值被限定在一个有限的范围内,例如,一个星期内只有七天,一年只有十二个月, 一个班每周有六门课程等等。如果把这些量说明为整型, 字符型或其它类型显然是不妥当的。 为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值, 被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是, 枚举类型是一种基本数据类型,而不是一种构造类型, 因为它不能再分解为任何基本类型。
枚举类型的定义和枚举变量的说明
一、枚举的定义枚举类型定义的一般形式为:
enum 枚举名
{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
例如: enum weekday
{ sun,mou,tue,wed,thu,fri,sat };
该枚举名为weekday,枚举值共有7个,即一周中的七天。 凡被说明为weekday类型变量的取值只能是七天中的某一天。
二、枚举变量的说明 如同结构和联合一样,枚举变量也可用不同的方式说明, 即先定义后说明,同时定义说明或直接说明。设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:
enum weekday
{
......
};
enum weekday a,b,c;或者为: enum weekday
{
......
}a,b,c;或者为: enum
{
......
}a,b,c;
枚举类型变量的赋值和使用
枚举类型在使用中有以下规定:
1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。
2. 枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1, …,sat值为6。
main(){
enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=tue;
printf(“%d,%d,%d”,a,b,c);
}
3. 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: a=sum;b=mon; 是正确的。而: a=0;b=1; 是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量, 使用时不要加单、双引号。
main(){
enum body
{ a,b,c,d } month[31],j;
int i;
j=a;
for(i=1;i<=30;i++){
month[i]=j;
j++;
if (j>d) j=a;
}
for(i=1;i<=30;i++){
switch(month[i])
{
case a:printf(“ %2d %c\t”,i,'a'); break;
case b:printf(“ %2d %c\t”,i,'b'); break;
case c:printf(“ %2d %c\t”,i,'c'); break;
case d:printf(“ %2d %c\t”,i,'d'); break;
default:break;
}
}
printf(“\n”);
}
C语言教程第八章:枚举,位运算
位运算
前面介绍的各种运算都是以字节作为最基本位进行的,
但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。
一、位运算符C语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>>右移
1. 按位与运算 按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。
main(){
int a=9,b=5,c;
c=a&b;
printf(“a=%d\nb=%d\nc=%d\n”,a,b,c);
}
2. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下: 00001001|00000101
00001101 (十进制为13)可见9|5=13
main(){
int a=9,b=5,c;
c=a|b;
printf(“a=%d\nb=%d\nc=%d\n”,a,b,c);
}
3. 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12)
篇3:站在c位作文
站在c位作文
十八般武艺,样样是好戏,既然人人都有自己的独门绝活,架子鼓就是我的拿手好戏。
小时候我总是对家里的瓶瓶罐罐一阵乱敲,听它们发出不同的声音,觉得有趣。妈妈见我喜欢敲敲打打,就把我送去学架子鼓。刚开始学习时,我专心致志,乐此不疲,觉得打鼓既能发出美妙的音乐,又能满足我的好奇心,真是一举两得。着时间的推移,每天重复打击同一个节奏,我渐渐感到枯燥乏味。妈妈见我练习的时间一天天减少,兴趣也一天天减弱,鼓励我说:“万事开头难,第一年咱们先坚持练好基本功,等到一年之后,你就会发现自己有很大的变化了。”在妈妈的鼓励下,我坚持练习,一年后我终于能熟练地打出曲目了。
通过不断的练习,我打鼓越来越熟练,越来越自如,也算是个老手了。坚持学鼓四年,我也顺利考取了爵士鼓10级证书。考完级的那个暑假,老师选派我去参加位于老门东的一场露天爵士鼓演出。这一次,生性内向的我决定勇敢地跨出第一步,挑战自我。
参加演出的那一天,我换好演出服,早早地就到达了表演场地。火辣辣的太阳照耀着大地,选手们聚集在候场区里,舞台下的观众黑压压的一片,场面十分壮观。虽然曲子已经练得十分流畅,可看到这么多人,我的小心脏还是“咚咚咚”不受控制地打起鼓来。我既想上去好好表演一番,又怕表演出错被大家嘲笑。妈妈感受到我的`紧张,安慰道:“不要紧张,只要尽力就行了。”我点点头,心想一定不能出错,我要向大家展示我的激情和魅力。
“请欣赏下一曲《远走高飞》,有请鼓手们上台!”主持人播报到了我们的曲目。我一甩头,握紧手中的鼓棒就上了台。当我们依次落座时,我才发现在三个鼓手中,我竟坐在了中间的位置,这正是整个舞台的C位。观众们的目光也大部分都聚集在我的身上。我深深吸了一口气,默默给自己加油。坐在那陌生又熟悉的鼓凳上,闭上眼睛,我的心瞬间安静了下来。随着熟悉的音乐响起,我熟练地开启了前奏,两手各持一根鼓棒敲击起来。棒嘭嘭敲,鼓咚咚响,一会儿节奏加快,一会儿节奏平缓,我感觉自己的手如同一条游蛇在鼓与镲之间游走,我完全陶醉在自己所创造的“惊涛骇浪”之中,整个世界似乎只有我一个人……
一曲结束,我仰起头抬起眼,观众的目光都集聚在我的身上。几秒钟后,场下响起了雷鸣般的掌声。下场后,我的脸上洋溢着快乐的笑容。妈妈也走过来与我击掌庆祝,她激动地说道:“你简直太棒了,超常发挥啊!”老师们也为我竖起了大拇指。“没有白流的汗水,没有白费的努力。”此刻,我也终于明白了这句话的含义。
站在C位成就了最好的自己,我为今天站在C位而感到幸运。
篇4:位域的规律题
位域的规律题
有无unsigned、a:1 a:2 a:4 a:8 a:16 a:32 以及用char的各值来试验就可发现位域的.规律,
#include
#include
using namespace std;
void main
{
struct test
{
//在这里测试就可以发现其规律,有无unsigned、a:1 a:2 a:4 a:8 a:16 a:32 以及用char的各值来试验就可发现位域的规律
unsigned int a:8;
};
test t1;
t1.a = 0;
cout<<“十进制 ->0: ”<
cout<<“十六进制->0: ”<
cout<
t1.a = 1;
cout<<“十进制 ->1: ”<
cout<<“十六进制->1: ”<
cout<
t1.a = 2;
cout<<“十进制 ->2: ”<
cout<<“十六进制->2: ”<
cout<
t1.a = 3;
cout<<“十进制 ->3: ”<
cout<<“十六进制->3: ”<
cout<
t1.a = 126;
cout<<“十进制 ->126: ”<
cout<<“十六进制->126: ”<
cout<
t1.a = 127;
cout<<“十进制 ->127: ”<
cout<<“十六进制->127: ”<
cout<
t1.a = 128;
cout<<“十进制 ->128: ”<
cout<<“十六进制->128: ”<
cout<
t1.a = 129;
cout<<“十进制 ->129: ”<
cout<<“十六进制->129: ”<
cout<
t1.a = 253;
cout<<“十进制 ->253: ”<
cout<<“十六进制->253: ”<
cout<
t1.a = 254;
cout<<“十进制 ->254: ”<
cout<<“十六进制->254: ”<
cout<
t1.a = 255;
cout<<“十进制 ->255: ”<
cout<<“十六进制->255: ”<
cout<
t1.a = 256;
cout<<“十进制 ->256: ”<
cout<<“十六进制->256: ”<
cout<
t1.a = 257;
篇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类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。,也看到了团队精神和互帮互助的重要性。这一点会让我终生受益。通过三周的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这三周过的挺充实!









