c语言论文报告

2024-05-29

c语言论文报告(通用14篇)

篇1:c语言论文报告

学号:__________ 姓名:__________ 班级:__________ 日期:__________

指导教师:__________ 成绩:__________

实验一 上机操作初步和简单的C程序设计

一、实验目的1、熟悉C语言运行环境Turbo C++3.02、会简单的程序调试

3、熟悉C语言各种类型数据的输入输出函数的使用方法

4、掌握顺序结构程序设计

二、实验内容

1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7)

2、编写一个C程序,输入a、b、c 3个值,输出其中最大者。(习题1.6)

3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。(习题4.8)

4、运行如下程序,写出运行结果。第一┆范文网整理该文章,版权归原作者、原出处所有...#include

void main()

{

int a=1,b=2;

a=a+b;b=a-b;a=a-b;

printf(“%d,%dn”,a,b);

}

三、实验步骤与过程

四、程序调试记录

篇2:c语言论文报告

做完这个课程设计,我们的自信一下子提高了;尽管对于有些人这种程序会很简单,可对我们c语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在很美妙啊!虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。做完这个程序最大的收获就是感受到了集体的力量,当然个人的智慧也是很重要的哦!

忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。

篇3:c语言论文报告

1 ATPCS调用标准

ARM处理器主要是利用编译器将汇编语言以及C/C++语言进行相互的切换, 并且ARM制定了相关标准, 来保障切换过程中的顺利实施。

1.1 寄存器使用规则

ATPCS为ARM寄存器进行不同命名, 从而在编程的过程中来利用ATPCS寄存器进行编程。如表1所示。

1.2 堆栈的使用规则

在ATPCS中规定, 堆栈的主要类型是FD, 被称为满递减堆栈, 所以必须要利用STMFD/LDMFF进行堆栈的操作。

1.3 参数传递规则

参数传递的规则不一样, 利用参数的数量可以将子程序分为参数数量固定, 以及参数数量不固定的子程序, 对于参数变化的子程序, 若参数的数量少于四个, 那么要利用寄存器来进行参数的传递, 若参数的数量多余四个, 那么必须要利用堆栈来进行参数的传递, 所以参数之间传递的规则不同。

2 ATPCS应用

2.1 汇编语言调用C语言

在对计算机嵌入式程序的开发中, 前期由汇编语言进行初始化的编程, 然后在进行C语言之间的切换, 对于C语言的切换, 主要指令R16lr帧指针是通过BL来实现的。以下是调用的字符:

2.2 C语言调用汇编语言

在程序中, 使用“C++”程序来调用C程序, 以下是调用C程序的字符:

2.3 汇编程序调用C++程序

在汇编语言与C++程序的切换时, 必须要利用关键词进行声明, 在C++程序的结构中, 如果没有基类, 则要使相应的存储结构与ARMC相同。并且在汇编过程中将参数的数据放在数据栈中, 只有这样才能使被调用的C++程序访问到相应的参数。

3 内嵌汇编

在进行混合编程的过程中, 若汇编代码较短, 那么可以利用内嵌汇编的方式进行混合编程, 不会直接指定寄存器, 而是直接利用编译器进行分配。主要的内嵌汇编语言如下:

4 结束语

在计算机系统嵌入式应用程序的开发中, 利用ARM汇编语言与C/C++语言相互结合的混合编程方式, 可以在很大程度上提高编程的最佳效果。本文主要举出了ARM汇编语言以及C/C++语言汇编中的实例, 提出了设计的方法, 阐述了ARM汇编语言与C/C++语言相互结混合编程方式的实现。

摘要:在计算机系统嵌入式应用程序的开发中, 对于汇编语言与C/C++语言的设计开发, 二者都存在着优缺点, 所以相关人员在开发中会采用ARM汇编语言与C/C++语言混合编程, 从而取得最大的效果。本文主要研究了ARM汇编语言与C/C++语言混合编程的设计实现方法, 并进行相关的讨论。

关键词:ARM汇编语言,C/C++语言,混合编程

参考文献

[1]马忠梅, 徐英慧.ARM嵌入式处理器结构与应用基础[M].北京航空航天大学出版社, 2010, 1 (2) :20-30.

[2]史斌, 孙晔.ARM汇编语言与C/C++混合编程方法[J].电子测量技术, 2010, 6 (6) :15-20.

篇4:c语言论文报告

关键词:C语言;编程技巧;应用

中图分类号:G642 文献标识码:B 文章编号:1002-7661(2014)24-002-01

C语言属于一种程序设计类语言,其使用在数据处理方面有突出作用,在很多的学习工作领域都有大规模的应用,像是软件开发、科研建设等都离不开C语言的利用。C语言编程,就是用C语言进行相应计算机代码的编写,C语言的学习,需要掌握一定的技巧,不然没有头绪的学习是得不到良好学习效果的,掌握了C语言的学习技巧,才能够更好的促进C语言的学习[1]。

一、C语言与C语言的优势

当下世界上使用范围最广,流行度最高的计算机编程语言便是C语言,要想良好的学习和使用C语言,必须加深对C语言的了解。C语言发源于上个世纪60年代,成熟在70年代,最近半个世纪的使用过程中,C语言表现了如下几种优势:第一,C语言简洁紧凑,使用方式灵活方便,且语法运用宽松不受限制,书写方式自由随意,结合了高级编程语言的结构性与实用性的特点,组成了一种全新式的有强大使用功能的编程语言;第二,C语言有广泛的应用层面,且可植性强,C语言在各种系统中都能够被兼容使用;第三,C语言的运算符丰富多样,各种数据结构类型的使用,除了C语言可以将各种复杂的数据运算完成外,还具有强大的图形功能;第四,结构式的语言特点分割了代码和数据,其中的程序表现层次条理清楚,后期的使用和维护工作便利,使用C语言可以访问物理地址[2]。从中可知,C语言具有强大的功能,因此在信息技术的领域中,C语言所占据的地位是非常高的。

二、C语言学习难度大的原因

因为C语言所具备的各种强大功能,因此人们对其的关注程度也越来越高,想要学会并且全面掌握C语言技术的人也越来越多。可是大部分在刚刚接触C语言的时候,觉得C语言过于枯燥乏味,学习了一段时间后都没有掌握到多少知识,也没有一个清楚全面的认识对于C语言,觉得十分的茫然。出现这种情况的原因还是因为C语言是一种高级语言,这种语言和面向对象的语言之间存在较大的差别,在C语言的学习过程中,学习者难以从中看到形象的画面,只能够在编程程序成功后,经过调试才可以看到效果。在编程的过程中,只要出现一点粗心错误,就会让整个编程无法成功调试,出现一些错误的现象,除此之外,C语言的使用过程中,包含了大量的算法与数据组成结构,这些没有任何的技巧,就是要死记硬背,所以很多学习者在遇到这些枯燥晦涩的问题时,就会丧失学习兴趣,降低学习效率和学习质量。

三、C语言编程技巧的应用

1、用空间换时间

例如对字符串进行赋值,方法有以下几种:

(1)基础方法:

#define LEN 32

Char string I[LEN];

memset(string 1,0,LEN);

ctrcpy(string 1,“this is a example”) ;

(2)方法2:

const char string2[LEN]=“this is a example”;

char*cp;

cp=string2;

从这个案例中可以发现,方法(1)与方法(2)在电脑上的执行效率是不一样的,第一种方法必须使用两个字符函数才可以完成,而第二种方法直接使用指针就可以完成了。但是第二种方法相比第一种方法灵活性欠缺,如果这个字符串有不断变化的要求,那么第一种方法就有很大的使用优势了,第二种方法要占用较大的内存,但是效率比第一种更高[3]。

2、位运算掌握

在利用位运算的时候,能够让代码变得更加的简洁,提升运算效率,让问题得到顺利解决。在所有的计算机程序之中,最小的数据单位就是位,无特殊情况的话,所有的数据运算和操作都可以使用“位运算”方式完成,从这里就就可以看出,在编程语言之中,“位”有多么重要了。“位”使用在C语言的运算过程中,可以提升工作效率,顺利的将更多难度大的问题解决。

3、C语言特有函数掌握

很多时候进行编程,都需要使用C语言的特有函数,函数不是一种数据,而是一种功能,每一个函数都能够执行一定的功能建设,而相对应的函数名称中也将函数的功能反映了出来。开展函数定义的时候,要求操作者包含名字、参数名、类型和函数返回类型的数据,编译过程中,数据库系统是之前被定义好了的,使用过程中只要通过#include这项指令,把各种相关的头文件包含在本文件当中就可以了。

但是不管在C语言编程过程中使用怎样的技巧,还是需要做到具体问题具体分析,以上各种技巧使用起来因人而异,整体是能够提升编程效率,在学习过程中使用会获得一定的成效,而降低学习的枯燥感,拓宽C语言的使用范围。

C语言的学习过程中,每一位学习者都应该对C语言的特性有充分的了解,学习并且掌握每一种编程技巧,学习好了C语言的编程技巧,可以帮助学生提升C语言的学习兴趣,让学生的学习目的性更强,提升学生的C语言学习效率与学习质量。

参考文献:

[1] 余 勍.王 捷.浅谈C语言编程技巧在C语言学习中的应用[J].信息通信,2013,07:108.

[2] 赵 黎.范君君.C语言编程技巧在C语言学习中的应用研究[J]. 信息与电脑(理论版),2014,09:252.

篇5:C语言实验报告

实验名称 ____ C程序的运行环境和运行C程序的方法_学期日期

同组人李江涛指导老师_杨雪松___________成绩___________-------------------------

【实验目的】:

1.了解所用的计算机系统的基本操作方法,学会独立使用该系统

2.了解在该系统上如何编辑、编译、连接和运行一个C程序

3.通过运行简单的C程序,初步了解C源程序的特点

【实验原理及相关知识】:(此处请简短概述一下就可以)

【实验设备】:(正确填写每次实验所用的设备型号)

【实验内容】:(此外按实指导书的要求写自己设计的东西)

【实验过程】:

【实验总结】:(此处写实验完成情况及对相关结果的分析总结)

【实验心得及其他】:

请各位同学认真添写实验报告,不要抄袭,尽量用自己的语言,自己的想法完成实验及

篇6:c语言实验报告

2、求圆环的面积。(函数的嵌套调用;定义求圆的面积和圆环面积实现)#include #define PI 3.1415926 float area_ring(float x,float y);float area(float r);void main(){ float r,r1;printf(“input two figures:n”);scanf(“%f,%f”,&r,&r1);printf(“area_ring is %fn”,area_ring(r,r1));

} float area_ring(float x,float y){ float c;c=fabs(area(x)-area(y));return(c);} float area(float r){ return(PI*r*r);}

3、设计求n!的函数(分别使用连乘和递归法)再调用函数求x!-y!+z!。递归

#include int fac(int n){ int i,t=1;for(i=1;i<=n;i++)

t*=i;return t;} void main(){ { unsigned int n;printf(“input a unsignded interger number:n”);scanf(“%d”,&n);printf(“%d!=%10ldn”,n,fac(n));} {

篇7:c语言论文报告

实验二 循环结构程序设计

班级 2012196 学号 201219628 姓名 李明月

一、实验目的

(1)掌握用while语句,do-while语句和for语句实现循环的方法;(2)掌握循环结构的嵌套;

(3)掌握break语句和continue语句的使用方法。

二、实验内容及步骤

1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。国王能兑现他的许诺吗?

程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒)总粒数为:sum=1+2+22+23+„+263 程序代码:

#include int main()//定义一个主函数 { int i;double t=1,sum=1,v;//定义变量

for(i=1;i<=63;i++)//用for循环语句实现循环运算 { t=t*2;sum+=t;//循环表达式 } printf(“总麦粒数为:%fn”,sum);v=sum/1.42e8;printf(“折合体积为: %f立方米n”,v);//对结果进行输出

return 0;} 运行结果:

2.求完数。

程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示6个数);

程序代码:

#include int main(){ int i,j,sum,n=0;printf(“ 1000以内的完数有:n”);for(i=1;i<=1000;i++){

sum=0;for(j=1;j

if(i%j==0)

{

sum=sum+j;

} } if(sum==i)

{ printf(“ %d”,i);

n=n+1;

if(n%2==0)

printf(“n”);

} } printf(“n”);return 0;} 运行结果:

3.打印九九乘法表

程序3:编程输出如下上三角形式的九九乘法表。2 3 4 5 6 7 8 9-------n“);for(i=1;i<10;i++)//i { for(j=1;j<=i;j++)// printf(” “);for(j=i;j<10;j++)//j printf(”%-2d “,i*j);// printf(”n“);}

代表行 输出空格达到来使得向右对齐代表列

输出行与列的乘积 3 1 2 3 4 5 6 7 8 9

运行结果:

三、问题讨论

break语句和continue语句在循环结构中使用时有何区别?举例说明。

break语句是跳出整个循环过程,不再判断执行循环的田间是否成立,并且break语句不能用于循环语句和switch语句之外的任何其他语句中。而continue语句则只是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

例子:

#include int main(){ int i;for(i=100;i<=200;i++){ if(i%3==0)continue;

printf(”%d“,i);} printf(”n");return 0;} 输出:

但是换成break之后:

四、实验心得

篇8:c语言论文报告

1 C语言

1.1 C语言特点

C语言在计算机语言编程中应用最流行、最广泛, 在学习中应对C语言有一点了解, 在使用过程中, C语言具有以下的特点: (1) C语言比较紧凑、操作灵活、操作方便, 没有非常严格的语法限制, 比较自由的书写程序过程, C语言有效结合了低级语言的实用性及高级语言的结构性, 功能非常强大。 (2) C语言应用范围广泛。C语言是学习其他语言程序的基础, 可植性比较强, 在多种操作系统中, 皆适用C语言, 可以灵活使用运算符, 实现编程的高效性。 (3) C语言的语法中数据结构多种多样, 简单复杂皆有, 图形处理能力甚强。 (4) C语言可以使用数据和代码分割, 具有结构式的语言特点, 程序层次清晰, 便于维护、使用及调式进行。C语言能够对物理地址进行直接访问以及各种操作。因此, C语言是学生学习计算机课程并不可少的一门知识, 但要学好C语言, 盲目的学习是不对的。

1.2 C语言的产生背景

1970年美国的Ken Thompson, 以BCPL语言作为基础, 然后设计出简单且接近硬件的B语言, 但是B语言功能比较有限, 过于简单。1972年~1973年, 美国D·M在B语言基础之上设计出C语言, C语言的出现给程序的编写带来不少便利, 而且编写程序比较自由, 吸引许多软件使用它。C语言语法里的运算和程序非常丰富, 编写程序的运算方法很多, 拥有可以实现一些高级程序都无法实现的功能, 且C语言用起来比较灵活, 在运算各种数据结构时, 不管事简单还是复杂, 都可以简单实现。C语言不仅在运算和程序编写上更加便利, 且可以直接访问地址, 并进行操作, 较快较容易的对程序进行编译以及控制。

2 学习

虽然许多学生选择计算机专业, 努力学习C语言, 但是学生仍然很难对C语言产生兴趣。C语言是计算机专业学习的基础课程, 且功能强大, 用途广泛。随着经济迅速发展, 第三产业越发越重要, 计算机相关的产业所占比重越来越大, C语言功能强大, 在计算机中越来越受到重视。

针对C语言的学习, 仅仅是课堂的理论传授远远不够, C语言理论比较丰富, 集合众多语言特点, 通过直接的感官方式教授给学生, 学生难以完全理解。如果教师能够把内容通过直观的方式展示出来, 比如让学生上机操作, 让理论与实践相结合, 提高学生对C语言的学习兴趣。

C语言中包含比较复杂的结构和算法, 许多学生难以理解, 只能简单的记忆, 但是学习效果比较低, 且学生觉得枯燥, 没有较高的学习兴趣, 在学生学习理论的同时, 应该多上机操作, 更加容易的掌握C语言的规律和方法。教师要注意自己的教学方法, 不能简单的进行实践教学与理论教学, 要关注学生, 加强学生与教师的沟通, 帮助学生理解课堂课外的C语言相关知识, 在教授知识之外, 教师要突出C语言在计算机学习中的重要性, 让学生更容易、深入的理解及分析C语言, 增加学习兴趣。

3 C语言编程的技巧

学生觉得C语言抽象、难以理解, 归根结底是没有找到学习的技巧, 对于刚入门者说, 学习C语言比较吃力, 学习任何一项技能都需要一个过程, 关键在于掌握其精髓, 掌握其中精髓再学习这门课程就容易许多。对于C语言, 编程技巧非常重要。 (1) 指针的掌握。掌握指针是C语言中比较重要的技巧, 指针虽有消耗内存的缺点, 但指针在运算中速度加快, 编程语句也更加容易, 指针的耗内存虽大, 但对整个编程而言却是微不足道。学生在学习指针这一章节时, 需加强学习能力, 除学习课堂知识之外, 可以多在网上查询资料, 进行补充, 掌握好指针这一技巧。 (2) 掌握数学知识。在学习计算机过程中, 数学知识的重要性不容小觑, 能够解决C语言运算中的许多问题, IT界有一句话叫“数学是计算机之母”, 可见数学对计算机的重要性。在C语言学习中, 逻辑思维较好的同学可以较容易的学习C语言, 进行编程前会分析, 选择更加简单的运算方法, 因此, 数学知识对学习C语言起很大作用。 (3) 掌握位运算。位运算的使用可以方便简洁代码, 提高运算效率, 较快解决问题。在计算机程序中, 位是最小数据单位, 是所有操作和运算的基础单位, 位运算是所有操作的基础运算程序。当然具体问题需要具体分析, 提高学生兴趣和编程效率, 让C语言的应用更加广泛最为重要。

4 结语

在学习C语言的过程中, 学生应准确了解C语言的特点, 学习并掌握C语言的编程技巧, 提高学生的学习兴趣, 学习更加具有目的性, 提高C语言的学习效率以及学习质量。培养学生的编程能力, 能够更好的服务社会。

摘要:随着时代的发展, 信息技术发展迅速, 计算机人才被社会所大量需求。因此大学中大都设立计算机专业, 为社会培养所需人才, C语言是计算机专业的重要课程之一, 是大一课程学习中比较基础的一门课程, C语言功能强大, 对于学生以后专业基础起到很大的作用, 但是学生学习效果并不是很好, 即使努力学习也没有得到预期的效果。笔者对C语言编程技巧在C语言学习进行研究, 并且提出解决措施。

关键词:C语言,学习编程,语言特点

参考文献

篇9:c语言论文报告

【关键词】C语言;编程技巧;学习技巧;教学效果

前言:我国高校已经普遍开展C语言的学习,对培养知识经济时代下高素质、复合型人才起到了重要的推动作用。然而在实践过程中却发现,学生学习C语言的动力不足、掌握及运用能力较低,为C语言进一步发展蒙上了一层阴影。所以本文首先对C语言学习过程中的难点进行分析,随后探讨C语言编程技巧的应用内容,以为学生学习及课堂教学效果的提升提供帮助。

一、当前C语言学习难点

(一)函数的定义和应用

由于C语言是一门较为高级的计算机汇编语言,在学习过程中包含了大量的函数,而相应函数如何定义和使用成为当前学生学习的难点之所在。众所周知,C语言编程过程中往往会通过汇编语言来将函数功能在相应代码中实现[1]。然而,在实际运用及学习过程中经常会出现函数嵌套的事情发生,而产生该现象的原因则是在C语言编程过程中已經定义了一个函数,但是操作者并没有注意到此种情况,当使用不同定义的函数时,系统就会提示不能在函数体内定义函数。所以在C语言学习过程中关于函数的定于和使用是困扰学生的主要问题。

(二)编写程序的工整严谨性

运用C语言编写程序是当前知识经济时代下较为常用的程序编写方式,需要操作人员具有较强的逻辑思维能力以及编写水平,并且耐心要足够良好。编写程序主要是通过计算机检验来实现相应的功能,在编写过程中每一个细节问题都需要处理到位。一旦某个环节某个字母没有正确书写,那么将会导致编写的整段程序无法运行,降低了程序编写效率。而编程工整性和严谨性是考验每一个学生学习效果及能力的重要指标。但是对于当前大多数学生来说,编写程序仍然是一个难点问题,出错几率始终居高不下,导致学生在经过了很长时间学习后依然无法掌握正确的编写技巧,继而丧失了继续学习的兴趣和信心。所以C语言学习过程如何运用编程技巧来提高编写程序的工整严谨性成为当前亟待解决的问题。

二、C语言编程技巧在C语言学习中的应用

(一)指针技巧的掌握与运用

C语言编程技巧中指针是一个较为特殊的变量,在其中存储着大量的数值,可以被称作是内存地址之一。指针技巧可以通过分解来将各部分内容展现在学生面前,以促使学生明确指针的使用。当前C语言学习中指针由指针类型、指针指向类型、指针值、指针自身所占内存区所组成。指针类型是C语言学习及编程中最为常见的知识点,学生可以通过去除指针声明语句中所包含的指针名字来判断该指针类型,如:int*ptr、char*ptr,将指针名字ptr去掉后剩下的int*、char*即为指针类型。学生通过该技巧的使用可以在短时间内明确所有C语言指针的类型,为其应用提供了便利条件。指针指向类型相较于指针类型稍稍复杂一些,上例中去掉*后剩下的int、char等即为指针指向类型。所以指针技巧的掌握与运用主要在于学习者的耐心及细心程度,加强其主观重视程度后,学习C语言将会更加得心应手。

(二)C语言特有函数技巧的掌握于应用

C语言编程中函数的应用是实现特定功能的基础与前提,学生往往在函数的定义及使用过程中出现不同程度的问题,造成其学习效果不佳。因此,在C语言课堂教学中教师可以在函数定义所包含的名字、参数名称、类型以及函数返回值类型逐步分解并一一明确其各组成部分的功能,并且将独立的函数存储在编译系统数据库中,使用时输入#include指令即可将想要使用的头文件放入本文件中,使得C语言特有函数能够在短时间内被学生掌握及利用[2]。随着计算机技术快速发展,C语言特有函数的编写已经可以通过程序化步骤来实现,在方便了使用的同时,也降低了学生学习难度,使得C语言教学效果得到大幅提升。

(三)算法技巧的掌握与应用

算法是程序编写工作的重要组成部分,也是学习过程中花费时间较长的环节。为了能够提高学生学习效率,教师需要在课堂教学中将常用流程符号普及给学生,并且利用流程图来讲算法的应用逐一分解,向学生直观展示算法的应用。当前还可以利用自然语言来表示算法,同时与流程图讲解相结合,使得具备一定数学知识的学习者能够熟练掌握算法技巧,并运用在具体的程序编写工作中。C语言是建立在数学思想基础上的应用学科,数学思维在算法技巧掌握及应用中起到了重要的辅助所用。所以,在通过系统展示及分步讲解基础上拓展数学思维去寻找C语言程序编写规律,可以为其血气起到事半功倍的效果。

(四)位运算技巧的熟练掌握与应用

C语言之所以独立于其他计算机语言,就在于位运算使用。位运算是一种以二进制为对象、进行各种程序、数据、结果运算的一种基本算法。特别是在计算机文件中其应用更为频繁,掌握了位运算技巧,就相当于掌握了打开宝藏大门的钥匙。比如:数独时需要使用大量Hash表来统计九宫格里已经存在那些数据,如果在一个九宫格之中已经存在数字2和5,那么采用位运算后该九宫格可以使用数字18来表示;如果某一行或某一个九宫格为运算状态为511,则代表了该九宫格空间已满。要想改变其状态,只需要对其进行位操作,而省去了将数据重新转换成为二进制修改之后在转回来的步骤,使得整个C语言学习效率得到大幅提升[3]。

结论:综上所述,本文通过对当前C语言学习难点的分析得出了困扰学生的主要问题在于函数的定义及使用和编写程序的工整严谨性。并以此为依据提出了C语言编程技巧中指针、特有函数、算法、位运算等技巧熟练掌握是提高C语言学习效率的关键。希望通过本文的分析能够为我国高校改进C语言教学提供帮助,以促使C语言知识正迁移。

参考文献:

[1]段煅.C语言编程技巧在C语言学习中的应用[J].电脑编程技巧与维护,2010,12(20):150-151.

[2]余勍,王捷.浅谈C语言编程技巧在C语言学习中的应用[J].信息通信,2013,25(07):108.

篇10:C语言实习报告

在长学期之后,我们又进行了短学期,在短学期中C语言实习让我获益匪浅。通过C语言实习,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。

这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。

C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。

比如自己写的写的小程序出了问题,不会解决了就叫老师或同小组的同学帮忙,虽然说这样会做得更好更快,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到自己可以完成一些简单的程序编写与错误排除。

还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。

自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,在上课的时候老师就讲,学习C语言最重要的是学习C语言的逻辑思维,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。

当初在初步接触C语言的时候,看着一堆“奇形怪状”的符号,觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态!

短学期让我学到了很多知识,在实训过程中,同学之间的相互探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同时,也增加了同学老师之间的感情。希望以后还会有更多类似的实训课程,在有限的大学时间内学到更多的实用技能,为以后的工作打下

篇11:c语言实习报告

《C/C++语言程序设计》

课程设计报告

题 目

院、系(部)

专业及班级 姓 名 日 期

1设计目的

设计一个职工信息管理系统,使之能提供以下功能: 1)录入职工信息并保存 2)显示所有职工信息 3)查询职工信息 4)修改职工信息并保存 5)删除职工信息 需求说明: 职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,并且要求职工号不重复;

录入的职工信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作; 职工信息的显式要求有一定的规范格式;

对职工信息应能够分别按工资及按学历两种方式进行,要求能返回所有符合条件的职工的信息; 对职工信息的修改应逐个地进行,一个职工信息的更改不应影响其他的职工记录;

所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。总体设计

1.该系统可以按功能进行模块划分,其模块图如下:

系统模块图

其中:

信息输入模块完成职工信息的输入功能,输入信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等;

信息浏览模块完成已录入职工信息的显示;

信息查询模块完成职工信息的查询,查询时对应有按工资查询和按学历查询两种方式; 信息修改模块完成职工信息的修改功能; 信息删除模块完成职工信息的删除功能;

菜单选择模块完成用户命令的接收,此模块也是职工信息管理系统的入口,用户所要进行的各种

操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;

2.数据结构

本系统中主要的数据结构就是职工的信息,包含职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,在处理过程中各项可以作为一个职工的不同属性来进行处理

3.程序流程

系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:

程序流程图 详细设计

对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下: ① 信息输入模块:

打开职工信息文件; while(继续输入){ 读入职工信息;

将读入信息添加到职工信息文件中;

提示是否继续输入; } 关闭职工信息文件;

② 信息浏览模块:

打开职工信息文件; while(不到文件结束){ 从文件中顺序读出一个职工的信息;

按指定格式输出该职工的信息; } 关闭职工信息文件;

③ 信息查询模块:

while(仍继续查询){ if(按工资查询){ 读入查询的职工工资条件;

打开职工信息文件;

while(不到文件结束){ 顺序读出一个职工的信息;

if(该职工信息的工资符合条件)输出该职工的信息; } 关闭职工信息文件;

提示共有几条符合条件的记录; } else if(按学历查询){ 读入学历查询的条件;

打开职工信息文件;

while(不到文件结束){

顺序读出一个职工的信息;

if(该职工信息的学历符合条件)输出该职工的信息;

} 关闭职工信息文件; 提示符合条件的记录数; }

else 提示输入不合适;

提示是否继续查询; }

④ 信息修改模块:

while(继续修改){

从给出信息文件中所有的记录情况; 提示并读入待修改的记录的职工的职工号; 打开职工信息文件;

查找并读出该职工的信息到一个中间变量中; 提示并读入要针对该职工的哪个属性进行修改; 根据用户的选择提示并读入所要修改属性的新值; 在该职工的中间变量中修改刚刚读入的属性值; 提示是否确定要进行修改;

如果用户确定则将中间变量重新写回到原职工信息文件中; 关闭职工信息文件; } ⑤ 信息删除模块:

while(继续删除){ 显示所有职工的信息;

提示并读入待删除的职工的职工号;

打开职工信息文件;

查找是否有符合条件的职工记录; if(有符合条件的记录){ 提示是否确认该删除操作; if(用户确认此操作){ 创建一个新的临时文件;

打开原信息文件;

while(原信息文件中记录未读完){ 读出原信息文件中的下一条记录;

if(此条记录不是待删除记录)写入临时文件中去; }

关闭原信息文件; 关闭临时文件; 读方式打开临时文件;

写方式重建与原信息文件同名的新信息文件; 将临时文件中的内容写入到新信息文件中去; 关闭新信息文件; 关闭临时文件; 删除临时文件; } } else 提示没有符合条件的记录存在; } ⑥ 菜单选择模块:

给出信息提示; 清屏;

绘制菜单(包含输入、显示、查询、修改、删除、退出); 提示菜单选择并读入到变量;

根据读入变量的值调用不同的模块函数;

数据结构:

性别: enum Sex{ male, female };学历 :enum Education{ high, junior, college, master, doctor};日期 :struct Date { int year;int month;int day;};职工信息:struct Info {

char num[5];/* 职工号 */ char name[8];/* 姓名 */ enum Sex sex;/* 性别 */ struct Date birthday;/* 出生年月*/ enum Education education;/* 学历 */ char duty[8];/* 职务 */ double wage;/* 工资 */ char addr[12];/* 地址 */

篇12:C语言实验报告(一)

一、实验题目:顺序结构

二、实验目的:(略)

三、实验内容

1.程序验证(略)

2.程序设计

1)编写程序,已知圆半径radius=1.25,求圆周长和面积。

源代码:运行结果:

2)编写程序完成单个字母的大小写转换。

源代码:运行结果:

3)任意从键盘输入一个三位整数,要求正确分离出它的个位、十位和百位数,并分别在屏幕上显示。

篇13:浅析C语言指针

指针是C语言的一个最重要的特征, 它提供了一种统一的方法, 使其能访问远程的数据结构。但对C语言初学者而言, 在编程过程中熟练的使用指针并不能像使用int型变量一样地轻松愉快, 容易上手, 往往是不得其精髓。我们知道, 不论什么时候, 运行一个程序A, 首先都是操作系统自身的加载器把A装入内存, 然后CPU才能执行。所以A程序的所有要素都会驻留在内存的某个位置。

下面我们看一段示例程序。

首先, 编译器会为变量i和j开辟内存空间, 用来存储i和j的值。同时也会为函数cmp开辟空间来存放其代码。这样使得最终的可执行程序就变为了跟内存一一对应的序列。操作系统的加载器把这个可执行程序载入内存后, cpu就可以按一条条的语句顺序执行了。

既然内存空间同程序的所有要素是一一对应的, 那么怎么区分各要素的存放位置呢?内存使用不同的地址存放不同的要素, 如下所示。

由于变量都存放于内存地址空间, 并且与地址之间是一一对应的, 那么利用地址能做些什么呢?我们可以把地址存放到别的变量中, 以便我们可以在以后程序的某个地方使用它。C语言有一个专门用来存储内存地址的变量, 这就是指针变量, 通常我们称之为指针 (pointer) 。它是一种变量类型, 这种变量方便我们把需要操控的内存地址记忆起来。

定义指针

定义指针的运算符同乘法运算符是一样的, 都用“*”表示。定义一个指针变量在语法上是简单的, 同我们定义其他变量的区别是:首先规定它指向的变量类型, 然后并不是立即就给出其变量的标识符, 而是在变量类型同变量标识符之间插入指针运算符 (星号) , 这样就告诉编译器这是一个指针变量。

C语言中指针可以指向任何的数据类型, 包括函数。函数指针的定义是:函数返回值+ (* + 函数指针变量标识符) + (函数的参数列表) 。函数指针能构建出更加清晰的程序结构。编程中经常使用的指针定义就是这两种, 当然有些定义可能只是语法上面有意义, 但是语义上面不一定有具体的意义。例如, int* (* (* (*f) () ) []) () 声明f是一个函数指针, 该函数返回一个指针, 该指针指向数组, 该数组元素是指针, 那些指针指向返回值类型为整型指针的函数。这样的声明可能永远也不能应用到实际的代码中。

指针和数组

数组是内存中一段连续相同类型的内存数据, 这组数据的首地址以数组名字来标识。所有数组对其数据的操控都可以使用指针来实现, 同理, 指针指向一段内存数据时, 也可以使用数组下标的方式来实现操作。

数组与指针在使用上的某些地方是非常相似的, 但是数组与指针又有一些细小的区别。数组名表现为一个静态指针, 也可以直接把它赋值给指针变量, 但它的大小与指针通常是不同的。数组名的内涵在于其指代的实体是一种数据结构, 这种数据结构就是数组。数组名可以作为参数传入一个接受参数为指针的函数内部, 但是此时数组完全丢失了数组的本义, 变成了完全的指针类型, 其常量特性 (可以作自增、自减等操作) 可以被修改。并且, 数组名不能再重新赋值为其他的数组名字, 而指针变量是可以被重新赋值并指向一段新的内存地址的。

指针的运算

指针的运算指的是指针的--、++、-和+运算, 一个指针可以加上或者减去一个整数。两个指针相减得到的是指针之间相隔的元素个数。不同的指针变量之间进行相加运算尽管在语法上是合理的, 但是从语义上来讲是没有意义的。除了void型指针和函数指针以外, 所有其他类型的指针都可以进行指针运算。通过指针变量的增加或减少, 指针变量会指向新的内存地址。

一般来说, 指针变量自身的大小在理论上是指机器的字长, 但是指针变量的运算并不是按照指针变量自身的大小进行内存偏移的, 而是按照指针变量指向的变量类型大小进行内存偏移的。比如, 声明一个整形的指针p, 假定p的地址是0x4323672, 那么++p后p的值变为0x43236726。偏移的内存大小等于整形变量的内存大小4 (sizeof (int) ) 。同理, double型指针进行++运算后偏移值就是8 (sizeof (double) ) 。

指针强转

如同整形变量可以强转为浮点型变量一样, 指针类型也可以通过强转变成新的指针类型, 比如我们可以把整形指针强转为字符型指针。指针强转最诱人的地方就在于对内存数据进行操控就够了。指针强转使得指针对数据的操控更具有针对性, 而且通过指针的默认强转可以使得函数的参数更简单, 且传递的信息量是不变的。比如, void*作为参数时可以把任意的指针变量传递到函数内部进行相关的操作。

下面我们来看一个具体的例子。数据的内存布局如下图所示, 首先是一个字符型数据, 紧接着的是两个整形数据, 最后面是三个结构体A型数据。我们需要做的就是把这些数据读出来。

我们先声明一个字符型的指针p, 使其指向第一个数据的内存地址。取完第一个字符型数据后, 通过p++, 然后强转指针为整形指针, 就可以很方便地取出整形数据, 同理可取出三个结构体数据。

指针作为参数

先看一个例子, 我们有两个整形变量, x的值为777, y的值为888, 现在想构建一个函数用来交换两个整形变量的值, 使得x的值为888, y的值为777。首先我们以传值的方式构建

我们调用函数swap_value (x, y) 后, 发现x、y的值并没有被交换。造成这种结果的原因是由于函数调用时, 首先对传入的实参进行变量的拷贝, 交换的值是形参的值, 并不是实参的值。而原来的实参与拷贝后的形参变量所处的内存也不同, 所以并没有交换成功。

要想实现函数内部对这两个值的交换, 必须使得实参与拷贝后的形参变量所处的内存是相同的。我们知道了原理后, 修正函数参数列表, 以指针的方式重新构建函数如下:

这时候我们发现x、y的值被交换了。通过上面的例子可以看出, 使用指针作为参数可以修改原来的变量值, 使得函数实现的机能更加模块化, 方便了程序的设计。

野指针

前面我们已经讨论过指针变量同内存的关系, 了解了指针变量里面存放的是某个变量的内存地址, 该地址可以在程序的某个位置使用, 以方便我们更改或取得该变量的值。指针使得我们拥有了操控内存的利器, 但同时指针也是一把双刃剑。我们必须时刻确保指针变量的值是我们意图操控的内存地址。如果指针变量的值被不受控的更改或者初始化不正确, 那么我们就使用了错误的地址, 从而导致程序错误, 通常我们称这个导致程序错误的指针变量为野指针。由于使用了野指针而产生的程序错误大多时候是隐蔽的, 难于跟踪的。野指针的产生主要是由于以下几种情况。

(1) 声明了指针变量, 但是没有正确的初始化就使用了该指针变量。

(2) 使用指针变量之前没有对其进行安全检查。

(3) 指针指向的内存变为了无效值, 但没有及时对指针清零, 导致程序某处引用了该指针。

(4) 多个指针同时指向同一内存区域, 程序某处通过某个指针释放了该内存, 但是没有及时对其他的指针清零, 导致程序某处进行了错误的引用。

(5) 多线程时, 对全局的指针变量没有进行锁处理。

多级指针

定义一级指针我们使用一个‘*’, 在定义多级指针时, 是几级指针我们就使用几个‘*’。例如, 声明一个整型的二级指针 (int ** ppVar;) 。下面以这个二级指针为例说明一下二级指针的意义。

二级指针变量同样是保存了一个地址, 这个地址就是某个一级指针变量的地址, 而一级指针变量里面保存了最终需要操作的变量的地址, 如下所示。

二级指针变量的值为0x4323640, 就是一级指针变量pVar的地址, 变量pVar的值为0x4323668, 就是变量Var的地址。如果需要修改变量Var的值, 我们可以直接修正**ppVar的值就可以了。

三级指针或者更多级指针的原理与二级指针的原理是相同的, 只是需要索引的内存空间的深度增加了。在程序设计中, 引入多级指针更多的时候并不仅仅是为了关注最后一级指针所能取得的变量, 而更多的是为了使用和操控其中间的级数的内存值。比如利用二级指针作为函数的参数在某个函数内部对其分配内存, 我们更想利用的是一级指针变量自身。当然, 在进行程序设计时, 有时我们要在可读性与语法有效性之间做出选择, 在实现代码的过程中能用低级指针实现的尽量不要使用多级指针实现, 这样的代码更利于维护。

小结

在C语言中指针的使用非常的广泛, 有时指针是实现某个计算的唯一方法。同样的机能使用指针通常也可以获得更加高效、紧凑的代码。指针使得函数构建的机能更加的模块化, 使得函数参数栈更加的短小。同时在操纵字符串的运算中, 指针更加简单直观。

在大项目构建时, 把函数指针同数据封装在一起能够使得代码编程面向对象的结构, 使得后期代码的维护成本大大降低, 代码的表现也更加具有现实意义。

篇14:c语言论文报告

关键词:记忆法;C程序设计语言;口诀记忆

中图分类号:H319文献标识码:A文章编号:1671-864X(2016)08-0190-01

计算机C语言具有设计特性、高效性、可移植性、灵活性、强大的功能等优势,学好C语言有非常重要的意义[1]。但由于初学者缺少先验知识,该课程学习难度大,知识掌握较困难。本文采用“口诀记忆法”,将一些较为复杂和零散的知识点进行编写串联,对促进学习者有效学习的发生,提供了一种较好的选择。

该课程新增知识点较少,教材内容变化不大,通过以下四个步骤(如图1),即可完成编写过程,后续只需在教材章节的基础上对知识点上进行细化。

一、分析环节

分析环节一般分为两个步骤,第一是对学习者的分析,第二是对知识点的分析。分析学习者应该着重分析学习者的一般特征、入门能力和学习风格。教师可以通过查看学生以前的学习成绩记录、直接向学生提问、与学生交谈、与教师交谈、标准化测试、教师自己出题等方式来了解教学对象的特征和入门能力[2]。学习风格可以选择问卷或量表进行测量。在此基础上,确定要进行记忆的重难点。教学者应重点关注那些理解力和思维能力较弱,但容易调动积极性的学习者,进行重点的教学辅导。

对于知识点的分析,一般应结合教材目录、前人总结、课后习题、题库试题等方面进行。以《第二章C程序设计的初步知识》[3]章节为例,首先借助教材对知识点进行初步细分。由目录可知,该章节包括“简单的C语言程序的格式”、“标识符、常量和变量”、“数据类型”、“算术表达式”、“赋值表达式”、“自加、自减运算符和逗号运算符”等小节。其次是对每小节具体知识点进行分析,教材一般都提供了课后习题,这些习题是专家教师经过长期实践总结出的,具有一定的代表性。教学者可以将其中一部分作为要点暂时列出。最后在结合对学习者分析的基础上,进一步筛选出要点知识,即编写知识点。

二、选择记忆方式

对于编写知识点,可以采用口诀记忆可以选择谐音、简化、对偶和综合等方式进行编写。谐音记忆就是把需要记忆的教学难点内容跟日常生活中的谐音结合起来,采用押韵、联想等方式进行记忆;简化是将复杂的知识点,突出重点后进行选择性的简化;对偶是用对称的字句加强语言的效果,但一般情况下在记忆法中,较难达到完整的对偶,只要求字数大概一致即可;综合的方式是指没有固定的格式,可以将几种方式结合运用(如表1所示)。初步完成编写的记忆法往往较为粗陋,还会存在混淆概念或知识点的可能,教学者需要在不断实践的基础上进行修改,同时最好配有口诀的解析说明,方便学习者理解记忆,避免产生歧义。

三、学习者参与编写

对编写的口诀而言,学习者参与编写,可以发挥群体智慧,逐步完善其解释和记忆功能。对学习者自身而言,积极参与会提高学习效果[2]。对教学者而言,可以减轻教学者编写负担。教学者可以定期组织学习者展示上交记忆法成果。

四、评价反馈与修改

评价反馈与修改在整个记忆法的编写过程中都在不断进行,包括判断学习者分析是否准确、对知识点的分析是否适当、对记忆方式是否有改进、对学习者学习和编写过程及结果是否有效。在此过程中,记录调查结果、原始口诀和改进口诀及其解释说明、学习者学习表现等都会为评价过程提供重要的数据依据。同时鼓励并组织学习者对学习中的重难点和学习中出现的问题进行反馈;最后,教学者要把握谨慎修改,修改必须记录说明的原则,逐步修改和完善记忆法。

参考文献:

[1]普拉塔.C Primer Plus(第五版)中文版[M].人民邮电出版社,2005.

[2]斯马尔迪诺.教学技术与媒体[M].高等教育出版社,2008.

[3]教育部考试中心.全国计算机等级考试二级教程——C语言程序设计[M].2010年版.北京:高等教育出版社,2010.

上一篇:卫校毕业生个人自我鉴定下一篇:【热门】小学生自我介绍