C语言程序设计题

2024-08-10

C语言程序设计题(精选十篇)

C语言程序设计题 篇1

二级C语言考试由笔试和上机两部分。笔试考察的是应试者对基础知识和基本理论的掌握情况,而上机考试主要测试的是应试者的逻辑思维能力和运用C语言的能力,一般包括3种题型:填空题、改错题、编程题。该文对考试题库中编程题作出归纳,总结,希望对应试者有所帮助。

1 上机编程题的知识点

上机考试的知识点大概可以有5个,分别是:基本运算、循环、数组、字符串、结构体。以下对这5个知识点分别举例说明。

1.1 基本运算

例如有以下编程题:

编写函数fun,它的功能是:将两个两位正整数a, b中个位数和十位数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位依次放在变量c的百位和个位上,b中的十位和个位依次放在变量c的十位和千位上。

例如:当a=45, b=12。调用函数后c=2415。

注意:部分源程序存在文件PROG1.C中,数据文件IN.DAT中的数据不得修改。请勿改动主函数main () 和其他函数中的任何内容,仅在函数fun的花括号中填写编写的如干语句。

程序如下:

分析:这类基础题主要是考察应试者对基本运算的掌握。针对这个题关键是把这两个数的个位和十位求出来,然后再重新组合成一个新数。表示两位数a的个位数的方法是:a对10取余,即a%10;表示两位数a的十位数的方法是:a先除10后在对10取余,即a/10%10。

本题的答案为:c=b%10*1000+a/10*100+b/10*10+a%10;

1.2 循环

循环中最主要的应用就是迭代和遍历。迭代一般是用来解决累加、累乘的问题,可用for语句来实现。

例如有以下编程题:

编写函数fun,它的功能是计算并输出以下多项式的值:

例如:当在主函数中从键盘给n输入5,则输出为:s=-0.28333。

注意:要求n的值大于1但不大于100。部分源程序存在文件PROG1.C中,数据文件IN.DAT中的数据不得修改。请勿改动主函数main () 和其他函数中的任何内容,仅在函数fun的花括号中填写编写的如干语句。

程序如下:

分析:这类题主要是考察应试者对迭代的掌握。关键是找出迭代公式、变量的起始值和最大值。本题中表达式的每一项是都是一个分数,分子都是1,分母初始值是2,最大值是n, 而且每项增1,所以可设一整型变量i, 用for语句实现:for (i=2;i<=n;i++) 。表达式的值用变量s表示,s的初始值为1,每一项之间用减号连接,所以迭代公式,也就是循环语句可表示为s=s-1/i。除此以外,还应注意两点1。变量s的类型,因为表达式的值是实数,所以变量s应定义为double。2.注意基本算术运算中,两整数相除结果为整数,而题目中每一项要得到的结果为实数,所以应用算术运算中数据类型的转换将s=s-1/i改为s=s-1.0/i。

本题的答案为:

1.3 数组

数组可以分为一维数组和二维数组。

1.3.1 一维数组

编写函数fun, 它的功能是:找出一位整型数组中元素的最大值和它所在的下标,最大值和下标通过形参传回。数组元素中的值已在主函数中赋予。

主函数中的x是数组名,n是x中的数据个数,max存放最大值,index存放最大值的下标。

程序如下:

分析:这类题是遍历在数组中的应用。要找出数组中的最大值,必须对数组中每一个元素查找一遍,同时要进行比较。编程思想:可设一变量max, 假设数组中的第一个元素a[0]是最大的,然后后面的元素依次和max进行比较,只要比当前max的值大,就把它放在max中。

本题的答案为:

1.3.2 二维数组

编写程序,实现矩阵的转置。

例如:输入下面的矩阵:

分析:这类题是关键是解决两个问题:1.怎样对二维数组元素的遍历。2.怎样完成矩阵的转置法。因为二维数组元素表示要用到两个下标即行标和列标,所以遍历数组元素用到两层循环。矩阵的转置就是对应行和变成对应列,换句话说就是关于主对角线的对应元素交换。

本题的答案为:

1.4 字符串

例如有以下编程题:

规定函数中只包含字母和*。请编写函数fun, 它的功能是:删除字符串中的所有*。在编写函数时,不得使用字符串函数。

例如:字符串中的内容为:****A*BC*DEF*G*****,删除后,字符串中的内容为:ABCDEFG。

分析:这类题要对字符串中所有字符遍历,把不是*的字符保留下来。本题要解决两个问题:1.怎样判断字符串结束。2.怎样把不是*的字符放在原来的字符串中。字符串都是以’�’作为结束标志,可以把字符串中元素是不是’�’作为判断字符串结束的依据。可设一变量j作为字符串的新下标,初始值为0,只要原字符串中的元素不是’�’, j就加1,特别注意要在最后加上’�’最为字符串结束标志。

本题的答案为:

1.5 结构体

例如有以下编程题:

学生的记录是有学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun, 它的功能是:把分数最低的学生数据放在数组b中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。

程序如下:

分析:这类问题其实编程思想和前面的没有太大的差别,主要考察的是对结构体成员的引用,其引用形式为:结构体变量名.成员名。

本题的答案为:

2 结论

本文只是对计算机等级考试二级C语言的上机题作了简单的分析和总结,仅过分析可以看出,考察的知识点总共有5个,但是基本上都是循环的两方面的应用:迭代、遍历。

参考文献

[1]未来教育与教学研究中心.全国计算机等级考试二级C语言上机考试题库[M].北京:金版电子出版社, 2007.

C语言程序设计题 篇2

C语言程序设计第01题 设计程序:

将满足条件pow(1.05,n)<1e6

以格式“%d,%.0f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ float y=1.05;int n=1;FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d,%.0f”,n,pow(1.05,n));

fclose(p);}

C语言程序设计第02题 设计程序:

将数组a的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/

for(i=0;i<3;i++){

for(j=0;j<3;j++)fprintf(p,“%10.6f”,a[i][j]);

fprintf(p,“n”);

}

fclose(p);}

C语言程序设计第03题 设计程序:求解百鸡问题。

已知公鸡每只5元、母鸡每只3元、小鸡1元3只。求出用100元买100只鸡的解。

将得到的解按公鸡、母鸡和小鸡的只数以“%d,%d,%dn”的格式写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int cock,hen,chick;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第04题 设计程序:

z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y取值为区间[0,10]的整数,找出使z取最小值的x1,y1,并将x1、y1以格式“%d,%d”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int x,y,x1,y1;float z,z1;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第05题 设计程序:

计算字符串s中每个字符的权重值,所谓权重值就是字符在字符串中的位置值与该字符的ASCII码值的乘积。位置值从1开始依此递增。将每个字符的权重值,以格式“%d ”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;int i,w;

char *s=“we45*&y3r#$1”;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第06题 设计程序:

计算表达式1+2!+3!+...+12!的值,并将计算结果以格式“%ld” 写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=1,k=1;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第07题 设计程序:

统计满足条件x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中。说明:若a、b、c是1个解,则a、c、b也是1个解,等等。#include void main(){ FILE *p;int x,y,z,k=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第08题 设计程序:

将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;char *s=“634,.%@w|SQ2”,c;

int i,j,k,n=strlen(s);

/*

*

*

* 考生在这里添加代码

*

*

*/

for(i=0;i

fclose(p);}

C语言程序设计第09题 设计程序:

对x=1,2,...,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式“%.3f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float f(float),max,x;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第10题 设计程序:

x[i],y[i]分别表示平面上1个点的x、y坐标,求下列5点各点间距离总和,并将该数以格式“%.4f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s,x[5]={-1.5,2.1,6.3,3.2,-0.7};

float y[5]={7,5.1,3.2,4.5,7.6};int i,j;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第11题 设计程序:

计算数列1,-1/3!,1/5!,-1/7!,1/9!,...的和至某项的绝对值小于1e-5时为止(该项不累加),将求和的结果以格式“%.6”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s=1,t=1,i=3;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第12题 设计程序:

z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式“%d,%d”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;float f(float x,float y),min;

int x,y,x1,y1;

/*

*

*

* 考生在这里添加代码

*

*

*/ } float f(float u,float v){ return(3.14*u-v)/(u+v);}

C语言程序设计第13题 设计程序:

将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p;float x;int i,j;

/*

*

*

* 考生在这里添加代码

*

*

*/

p=fopen(“design.dat”,“w”);

for(i=0;i<3;i++){

for(j=0;j<3;j++)fprintf(p,“%10.6f”,a[i][j]);

fprintf(p,“n”);

}

fclose(p);}

C语言程序设计第14题 设计程序:

在6至5000内找出所有的亲密数对,并将每对亲密数用语句fprintf(p,“%6d,%6dn”,a,b);写到考生目录中Paper子目录下的新建文件design.dat中。

说明:若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。#include void main(){ FILE *p;int a,b,c,k;

p=fopen(“design.dat”,“w”);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第15题 设计程序:

计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+……的值,并将其值以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;float x=2.345,t=1.0,y=0.0;

float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第16题 设计程序:

a、b、c为区间[1,100]的整数,统计使等式 c/(a*a+b*b)=1成立的所有解的个数,并将统计数以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中(若a=

1、b=

3、c=10是1个解,则a=

3、b=

1、c=10 也是解)。

#include void main(){ FILE *p;int n=0,a,b,c;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第17题 设计程序:

数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式“%.3f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s=0,a=81,i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第18题 设计程序:

数组元素x[i]、y[i]表示平面上某点坐标,统计10个点中处在圆(x-1)*(x-1)+(y+0.5)*(y+0.5)=25内的点数k,并将变量k的值以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i,k=0;

float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第19题 设计程序:

在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第20题 设计程序: 数组元素x[i]、y[i]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include #define len(x1,y1,x2,y2)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))void main(){ FILE *p;int i,j;float c,minc;

float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};

minc=len(x[0],y[0],x[1],y[1]);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第21题 设计程序:

计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t=1,y=0;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第22题 设计程序:

计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...的值,并将其以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t,y;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第23题 设计程序:

数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和,并将求和的结果以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=0,i,a[40];

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第24题 设计程序:

累加a字符串中各个字符的ASCII码值,然后将累加和以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;int s=0,i=0;

char *a=“r235%^%34cdDW,.”;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第25题 设计程序:

在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式“%.5f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i,k=0;float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81},d,v=0;for(i=0;i<10;i++)v+=x[i];v=v/10;d=fabs(x[0]-v);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第26题 设计程序:

计算27的小于1.00001的2n次方根(27的2(n-1)次方根不小于1.00001),将n以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float x=27;int n=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第27题 设计程序:

计算2的平方根、3的平方根、...、10的的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式“%.10fn”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第28题 设计程序:

选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt及这些数字的和sum到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *p;

int cnt,sum;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d,%d”,cnt,sum);

fclose(p);}

C语言程序设计第29题 设计程序:

求斐波那契(Fibonacci)数列中大于t的最小的一个数,结果由函数JSValue返回,其中斐波那契数列F(n)的定义为:

F(0)=0,F(1)=1

F(n)=F(N-1)+F(n-2)分别计算当t=1000和t=3000时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include int JSValue(int t){

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

fprintf(p,“%d,%d”,JSValue(1000),JSValue(3000));

fclose(p);}

C语言程序设计第30题 设计程序:

寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。

所谓回文数是指各位数字左右对称,例如121、676、94249等。满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。

请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include #include #include int JSValue(long m){

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;long m;

p=fopen(“design.dat”,“w”);

for(m=11;m<1000;m++)

{

if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m))

fprintf(p,“%ld ”,m);

}

fclose(p);}

C语言程序设计第31题 设计程序:

找出1000至9999之间符合条件的自然数。条件是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且此四位数是偶数,统计出满足此条件的自然数的个数cnt,以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中。

#include void main(){

FILE *p;

int cnt=0;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d”,cnt);

fclose(p);}

C语言程序设计第32题 设计程序:

计算500~800区间内素数的个数cnt和素数和sum。请编写函数JSValue()实现程序的要求。最后把cnt和sum写入到考生目录中Paper子目录下的新建文件design.dat中。#include int cnt,sum;void JSValue(){

int i,j,half;

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

JSValue();

fprintf(p,“%d,%d”,cnt,sum);

fclose(p);}

C语言程序设计第33题 设计程序:

有数列:2/1,3/2,5/3,8/5,13/8,21/13,……求出数列的前40项的和。将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *p;

int i;

float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s;

float f,t;

s=t1/f1+t2/f2;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第34题 设计程序:

x[i],y[i]分别表示平面上一个点的坐标,求下列10个点与点(1.0,1.0)的距离的总和,并将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;

float x[10]={-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6};

float y[10]={3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4};

float s=0.0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第35题 设计程序:

在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和,并将结果以格式“%.5f”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int i;

float a[10]={7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81},sum,v=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第36题 设计程序:

在整数数组a中找出偶数放到b数组中,对b数组按从小到大的顺序进行排序后以格式“%3d”每行3个数写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int i,j,temp,n=0;

int a[10]={7,6,20,3,14,88,53,62,10,29},b[10];

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第37题 设计程序:

某公司1999年年产量11.5万件,生产能力每年提高9.8%,求出产量能超过x万件的年份,结果由函数Year返回。

分别计算当x=20和x=30时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include int Year(int x){

int p=11.5,y=1999;

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

fprintf(p,“%d,%d”,Year(20),Year(30));

fclose(p);}

C语言程序设计第38题 设计程序:

一个球从100米高度落下,每次落地后都反弹至原高度一半位置,再落下。

计算出第10次落地时小球共经过的距离,并将结果以格式“%.0f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *fp;float s=100,h=100;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第39题 设计程序:

利用公式π/4≈1-1/3+1/5-1/7+……公式计算π的近似值,直到某一项的绝对值小于1e-6为止。(π/4的结果不包含此项)

将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *fp;float n=1,t=1,pi=0;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ } C语言程序设计第40题 设计程序:

计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+……+a9*sin(x*x*x*x*x*x*x*x*x)的值,并将其值以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;float x=2.345,t=1.0,y=0.0;

float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第41题 设计程序:

计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...+a9*x*x*x*x*x*x*x*x*x的值,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t=1,y=0;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第42题 设计程序:

计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...-a9*x*x*x*x*x*x*x*x*x/9!的值,并将其以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t,y;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第43题 设计程序:

求斐波那契(Fibonacci)数列中其前40项之和,其中斐波那契数列的定义为 后一项为前两项之和,并将求和的结果以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=0,i,a[40];

/*

*

*

* 考生在这里添加代码

*

*

C语言填空题的解法 篇3

关键词:C语言 解题技巧 变量 一般方法

大多数学生都有学好C语言的愿望,但由于学习方法不对,最终事与愿违。有没有一种方法能够将学生这种好学的愿望转变成学习动力,真正将知识转变成学生行万里路的智慧呢?

笔者从自己的教学实践出发,以一道C语言填空题的解题方法为例,与广大同行共同进行探讨。

例:10个小孩围成一圈来分糖果,教师分发给每个小孩的糖果数依次为12、2、8、22、16、4、10、6、14、20,然后所有的小孩同时把自己的糖果分一半给右边的小孩,糖果数变为奇数的小孩向老师补要一块,问经过多少次调整后每个小孩的糖果数都一样,此时的糖果数为多少?请填空。

#include

void main()

{int i,k,f,y,b[10],a[10]=

{12,2,8,22,16,4,10,6,14,20};

k=1;f=0;

while(f!=1)

{ ①;

for(i=0;i<=9;i++)

{ ②;

b[i]=a[i];}

for(i=0;i<=9;i++)

{y= ③;

a[y]=a[y]+b[i];

if(a[y]%2!=0) ④; }

for(i=1;i<=9;i++)

if(a[0]!=a[i]){f=0;break;}

k++;}

printf(“k=%d,a[0]=%d”,k,a[0]);}

C语言的填空题首先要从变量入手,弄懂变量的作用,然后通读整个程序,读懂程序的算法,接下来再结合一些技巧和经验来解答,问题就能迎刃而解了。

要读懂变量的作用,应该从变量的初值入手。对于变量的初值,笔者做了一些总结,如某一变量的初值为0(假如s=0),那么变量s一般情况下可以用来求和、进行统计、状态变量、数组下标等。如果出题者严格遵循变量名的命名规则,那么学生应该可以很快读懂变量的作用。有时初值为1的变量也可以用来进行统计,关键要善于归纳、总结。特别要提醒的是,如果初值作为状态变量的话,那么该变量的数值一定是在0和1之间变化的。

另外,变量k是用来统计分糖果的次数,变量f是一个状态变量。既然这样,状态肯定在1和0之间变化。而整个程序只有一处f=0,那么肯定有一空是变量f=1,不然这道题就成了一个死循环。结合程序,第①空应该填写f=1。

a数组第一次用来存放最初的糖果数,循环之后就变成用来存放分糖果后自己以及左面小孩给的总糖果数。统一起来a数组就是用来存放每次分之前各个小孩的糖果数。因为题目中要求同时分糖果,程序b数组是用作一个中间数组,用来存放每个小孩要分给右面小孩的糖果数,即每个小孩手中糖果数的一半,故b[i]=a[i]。所以,第②空可填成“a[i]=a[i]/2”。

经过仔细审题,再结合程序,第④空的答案也就显而易见了。故此空可填“a[y]++”。另外,学生在解题时,要注意体会题目中的“同时”一词。

经过前面的几个步骤之后,学生就会发现第二个for语句是真正意义上的分糖果的过程。学生很快得出答案“y=i+1”。但是,这个答案是错误的。把两个变量的变化关系写出来,为:

y=1时 i=0

y=2时 i=1......

y=9时 i=8

y=0时 i=9

前面9处两个变量间的关系均可以写成“y=i+1”。但最后一处如果也用这样的关系,那么得出“y=9+1=10”。显然此处的变量y不等于10。这时就要采用取余方法,就得出答案为“y=(i+1)%10”。

参考文献:

[1]谭浩强.C程序设计语言[M].

北京:清华大学出版社,2005.

[2]方明.陶行知教育名篇[M].北京:教育科学出版社,2006.

[3]李崇泰.C语言案例教程[M].

北京:电子工业出版社,2005.

C语言程序设计题 篇4

1“以人为本”开展教学

学生是教学活动的主体,教学活动要以学生为中心而展开。教育心理学的研究表明:学生在没有精神压力、没有心理负担、心情舒畅,情绪饱满的情境下,大脑皮层容易形成兴奋中心,思维最活跃,实践能力最强。因此,在授课过程中,本人尽量以通俗易懂的方式讲解,通过设置问题情景,充分调动学生的积极性和主动性,引导学生参与到教学环节中。课下,深入学生群体,通过与学生交流,把握学生的思想动态,及时做好学生的思想工作。同时利用课余时间与学生打成一片,建立一种民主平等亦师亦友的关系。在评价学生时,根据学生特点,经常运用一些激励性的语言。例如:“你真聪明”、“你真行”、“我为你感到骄傲”、“你虽然说错了,但很勇敢”等等。一次次的表扬和鼓励,使学生充分信任自己,从而达到在课堂教学中的互动。

2 采用“模块化”教学方式

C语言是计算机及其相关专业的一门非常重要的基础课。但这几年的C语言的教学效果总是不理想。主要存在的原因:一是C语言牵涉的概念比较复杂,规则繁多。不容易记忆,而且易混淆。二是C语言应用灵活。学生不能较好地将所掌握的理论知识应用到实践中。针对现状,我在本学期授课中,积极响应职业教育改革要求,进行模块化教学。按照C语言教学大纲和教学计划,我将授课内容划分为6个模块:课程入门、结构化程序设计、数组应用、函数应用、结构体和指针的综合应用以及文件应用。在每一模块的教学过程中,首先介绍一个较完整的程序例子,该例子包含了此模块所涉及的主要语法和语句,目的是使学生先对此部分内容有个初步的印象,再简单介绍该例子中用到的语法和语句,让学生对该模块的学习有一个大概的了解,也不会因为一大堆语句的出现,而对学习语言望而生畏。这样的教学方法,学生先对语言的学习有了整体的概念,再具体介绍语句,学习时心里就有了“底”。整个教学过程中应该把解题思路、方法和步骤(即“算法”)当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。

3 构建自主探究、小组讨论的学习模式

为了能够及时、全面地关注到每位学生的学习状态,充分调动学生的积极性,我采用分组方式进行教学控制和管理。每周抽出固定时间对组长进行提前培训,并给出一些难度较高、与实际生活接近的题目,加强辅导,引导学生掌握良好的编程思想。然后在课堂讨论和实践课时间,就由组长全权负责。实践证明,自主探究、小组讨论的学习模式,变被动接受为“自主研究”型学习,实现学生学习方式的个性化。这种学习模式能够克服和解决以教师讲授为主要形式带来的许多弊端,尤其在促进调动全体学生参与学习活动方面效果特别明显。这种学习模式是研究型的,力求做到学生人人参与,为其创设了宽松良好的环境,使其可以随想、随说、随问,消除自卑感,让其不同程度的得到发挥、提高。

4 采用丰富多彩的CAI课件进行课堂教学

针对C语言中一些比较抽象、难理解的知识点,积极引入CAI课件进行讲解。CAI课件可创设新颖有趣的动画情境,容直观性、多变形、知识性、趣味性于一体,为学生营造一个图文并茂、动静结合的教学场景,促使学生多种感官同时接受刺激,大大激发了学生的学习兴趣,活跃课堂气氛,从而达到“课伊始,趣亦生”的境界。以指针为例,指针是地址的形象化名称。要想掌握指针,关键是弄清楚指针的指向问题。所以此部分内容需要结合所使用的数据在内存中的存储问题讲解。这就需要形象化的描述出内存的存储。利用CAI课件不但能够形象化地描述出数据在内存中的存储,还可以动态记录指针在某一时刻的变化。从而化抽象为形象,便于学生理解。

总之,经过积极的探索和思考,打破传统的教学模式,采取以人为本、模块化教学、结合CAI课件等方式,充分调动学生的积极性和参与性,才能更好地培养学生的竞争合作精神和独立学习的能力,才能适应职业教育的改革发展要求。

参考文献

[1]张瑞,陈岚.关于多媒体教学的几点思考[J].贵阳金筑大学学报,2004(4):73-74.

[2]薛小锋.C语言程序设计》教学方法探析[J].福建电脑;2004(1):81,87.

[3]魏利华.谈《C语言程序设计》课程的教学定位[J].雁北师范学院学报,2003(3):97-99.

[4]徐章艳.“C语言程序设计”实验教学探讨[J].电气电子教学学报,2004,26(2):84-89.

寒假C语言113题 篇5

2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。3.输入一个正整数求出它是几位数;输出原数和位数。4.输入一个正整数,输出原数并逆序打印出各位数字。

5.从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。

6.从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。将结果输出。

8.打印以下图案:

*

***

*****

******* 9.打印以下图案:

* ** *** **** 10.求下列试子的值:1-1/2+1/3-1/4+„„+1/99-1/100,将结果输出。11.打印出100~999之间的所有水仙花数。

12.求Sn=a+aa+aaa+„+aa„a之值,n,a由键盘输入。13.打印以下图案:

*******

*******

*******

******* 14.打印以下图案:

121

12321

1234321 15.打印以下图案:

1234321

12321

16.编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。17.打印以下图案:

*****

*****

*****

*****

***** 18.给出年、月、日,计算该日是该年的第几天。19.求一个3*3的整型矩阵对角线元素之和。将原矩阵和求出的和输出。

20.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。21.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。22.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出。23.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。24.求一个M*N的矩阵中元素的最大值,将原矩阵和求出的最大值全部输出。25.判断一个N*N的矩阵是否为对称矩阵,将原矩阵输出,判断结果输出。

26.有一篇文章,有三行文字,每行有80个字符。要求统计出其中英文大写字母、消协字母、数字、空格以及其他字符的个数。

27.将20个整数放到一维数组中,输出该数组的最大值和最小值。

28.将15个整数放到一维数组中,输出该数组中的最大值它的下标,然后将它和数组中的最前面的元素对换。

29.将字符数组str1种下标为偶数的元素赋给另一字符数组str2,并输出str1和str2。30.编写一个程序,将两个字符串连接起来,不要使用strcat函数。

31.编写一个程序,将字符数组a中的全部字符复制到字符数组b中。不要使用strcpy函数。32.编写一个程序,找出3个字符串中的最大者,将它输出。

33.编写程序,输入任意一个1~7之间的整数,将他们转换成对应的英文单词。例如:1转换成Monday,7转换成Sunday。

34.编写程序,输入两个整数,和+、-、*、/之中的任意一个运算符,输出计算结果。35.输入年号,计算这一年的2月份的天数,将结果输出。

36.输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,若能,计算面积。

37.输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,何种类型的三角形:等腰、等边、直角、等腰直角、一般。

38.输入奖金数a,计算并输出税率、应缴税款和实得奖金数。(用if语句编程)39.输入奖金数a,计算并输出税率、应缴税款和实得奖金数。(用switch语句编程)40.输入学生的成绩,利用计算机将学生的成绩划分出等级并输出:

90~100:A级;

80~89:B级;

70~79:C级;

60~69:D级;

0~59:E级; 41.编程序,求方程aX2+bX+c=0的解;输入a,b,c.42.编程序,输入4个整数,按由小到大的顺序输出。

43.求满足1+2+3+„+n<500中最大的N,并求其和,编写程序实现。

45.求Fibonacci数列前40个数,每行输出5个,将40个Fibonacci数输出。46.按以下规律翻译密码:

将每一个字母变成它后面的字母,例如,将A变成B,B变成C,„,Z变成A,非字母字符不变,“!”作为电文结束标志。

47.百元买百鸡问题:公鸡每只5元,母鸡每只3元,小鸡3只一元,问一百元买一百只鸡有几种买法。

48.使用数组编程,计算出前20项fibonacci数列,要求一行打印5个数。

49.编程序求出两个3*4矩阵的和并将原矩阵和求出的和矩阵按原矩阵的形式分别输出。50.将一个4*3的矩阵转置,并将原矩阵和求出的转置矩阵按原矩阵的形式分别输出。

51.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是小写字母,则把它变成大写字母;其它字符不变,请编程。

52.已知x和y存在下列对应关系,要求对输入的每个x值,计算出y值,请编程。

y=x*(x+2),2

y=2x,-1

y=0,x=a||x=-a;y=sqrt(a*a-x*x),-a

56.请编制程序判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no.57.编程实现:计算1到100之间的奇数之和及偶数之和。58.请编程实现:求100个任意整数的累加和。

59.请编程实现:求1到100之间所有能被3整除,但不能被5整除的数的和。

60.请编程实现:输入任意正整数n,计算n!并将结果输出,输出结果中没有小数部分。61.请编程实现:计算1至50中是7的倍数的数值之和。

62.请编程实现:对任意100个整数,统计0的个数及正数的累加和。63.请编程实现:输入两个整数,判断它们之间的关系(=,<,>等),并清楚地将比较结果输出。64.请编程实现:输入几个整数,判断其中偶数的个数,并输出结果(要求:数据的个数及原始数据由键盘输入)。

65.请编程实现:输入几个整数,判断其中奇数的个数,并输出奇数的累加和。(要求:数据的个数及原始数据由键盘输入)

66.有一个两位数XY,X是十位,Y是个位;给出X+Y的值和X*Y的值;编程实现让用户猜测这个两位数十多少?根据猜测给出不同的提示。

67.键盘输入的一个两位数XY,X是十位,Y是个位;请编程计算X+Y的值和X*Y的值。68.用for循环语句计算1到20的和,并将结果输出。

69.从键盘输入一行字符,统计出输入的字符个数(注:不要使用strlun函数编程)。70.编程实现:任意输入10个数,计算所有正数的和,负数的和以及10个数的和。71.编程实现:求任意20个数中的正数之和及正数的个数,并将结果输出。72.编程实现:对键盘输入的任意一个四位正整数,计算各位数字平方和。如:2345 则:计算2*2+3*3+4*4+5*5 73.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完,请编程。

74.编程实现:打印100以内个位数为6且能被3整除的所有数。75.编程实现:从键盘输入若干个整数(数据个数应不少于50),其值在0至4的范围内,用-1作为输入结束的标志,统计每个整数的个数。76.编写一个函数sort,将放到一维数组中的若干个数按从大到小的顺序排序;在主函数中输入若干个数到一个一维数组中,调用sort,对该数组进行排序,在主函数中将原数组和排好序的数组输出。

77.输入一个正整数,将其用质因子的乘积表示,并输出结果,格式为:12=2×2×3。

78.输入一个正整数,求出它的质因子的和,并输出结果,格式为:12的质因子和=2+2+3=7。79.编写一个函数,判断一个正整数是否为完数:如果一个数的除它本身以外的所有因数之和等于它本身,则它就是完数。主函数中找出1000以内的所有完数。

80.编写函数GCD,求两个正整数的最大公约数,主函数中输入任意5个正整数,调用函数GCD,求出这5个数的最大公约数和最小公倍数。

81.编函数isprime判断正整m是否为素数;如果是素数,返回正整数1,否则返回0;主函数中调用isprime,找出2到1000之间的所有素数。

82.一维数组a中的若干个数已按从小到大的顺序有序;在主函数中输入一个数,将其插入到该数组中,使得原数组依然按原序有序,分别输入原数组和插入新元素之后的数组。83.有5个国家名,编程实现按字母先后顺序排序,然后分别输出原数组和排序之后的数组。84.有一行文字,要求删去其中的某个字符,此行文字和要删的字符均由键盘输入,分别输出原文字和删除之后的文字(注:原文字中的所有和要删除字符相同的字符完全删除)。85.打印如图所示的杨辉三角,要求打印出n行,n由键盘输入。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 „„„

86.编一个函数实现将一个整型的一维数组中的数逆序存放,不使用辅助数组。主函数输入一个整型的一维数组,调用上述函数,将该数组逆置,将结果输出。

87.编写一个函数convert,求一个方阵的转置矩阵;主函数中输入方阵的阶数和方阵,在主函数中将原矩阵和转置矩阵按原格式输出。

88.求∏值,精度为10-5:∏/4≈1-1/3+1/5-1/7+„„

89.用公式计算:e≈1+1/1!+1/2!„+1/n!,精度为10-6。90.有一分数序列

2/1,3/2,5/3,8/5,13/8,21/13

求该序列的前20项之和。

91.编一个子函数GCD,求两个正整数的最大公约数,主程序输入n个自然数,调GCD,求出这n个数的最大公约数。92.写函数求sin(x)的值。计算公式为:Sin(x)=X-X3/3!+X5/5!-X7/7!+ „+(-1)n-1X2n-1/(2n-1)!。93.编一函数使用冒泡法对若干个整数按从小到大的顺序排序,主函数中输入若干个整数到一个一维数组中,调用排序函数,将其排序,最后将原数组和排好序的数组输出。

94.求一个m行n列的二维数组中的这样一个原素;它在它所在的行为最大,在它所在的列为最小。

95.编写一个函数求给定字符串长度,主函数中输入一个字符串,调用该子函数,求出该字符串的长度,输出。

96.编写一个函数将给定字符串复制到另一个字符串中去,主函数中输入一个字符串,调用该子函数,复制出另一字符串,将两个串输出。

97.写函数求Cos(x)=1+X2/2!-X4/4!+X6/6!-„+(-1)nX2n/(2n)!。

98.编写一个函数将给定字符串中的大写字母转换成小写字母,主函数中输入一个字符串,调用该子函数,进行转换,将原字符串及转换后的字符串输出。99.编写一个函数将给定的两个字符串连接成一个字符串:

格式为:strcat(ch1,ch2);

功能:将ch2复制到ch1的后面;

主函数中输入两个字符串,调用该子函数,求出连接之后的字符串,将两个原字符串及连接之后的结果串输出。

100.用40元钱买苹果、西瓜和梨共100个,且三种水果都有。已知苹果0.4元一个,西瓜4元一个,梨0.2元一个。问可以买多少个?编程输出所有购买方案。101.编程:建立一个3×3的二维整数数组,求两条对角线上元素值得和,并将结果输出。(用函数调用方式编程)

102.编程计算:1*2*3+3*4*5+„„+99*100*101的值。103.有一个5×4的矩阵,编程实现:找出该矩阵中每行元素的最大值,并使该值成为该行的首列元素。

104.编写一个程序,使输入的一个字符串按反序存放在一字符数组中,然后输出。要求:

(1)在主调函数中输入字符串;

(2)写函数完成由主调函数传递来的字符串按反序存放;

(3)在主调函数中输出结果。

105.从键盘输入五个字符串,分别求出字符串中长度最长和最短的字符串,请编程。(要求:不要使用strlen(_)函数编程)

106.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请编程实现。

107.写一个判断素数的函数,在主函数中调用素数的判断函数,求出2到1000之间的素数的累加和,将结果输出,请编程。

108.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

109.请编程实现:将两个字符串s1和s2比较,如果s1>s2,输出一个正数;s1

要求:不要用strcpy函数,两个串用gets函数读入,输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCⅡ码的差值。

110.编写一个函数,由实参传来一个字符串,把串中所有大写字母变成相应的小写字母;原串中所有的小写字母变成相应的大写字母,在主函数中输入原字符串和输出变换后的字符串,请编程。

111.编程实现:由键盘输入的任意一组字符中统计出大写字母的个m和小写字母的个数n,并输出m、n中的较大者。

112.定义一个含有30个整形元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出,请编程。

113.输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:

(1)能同时被3,5,7整除;

(2)能被其中两数(要指出哪两个数)整除;

C语言程序设计教学方法探讨 篇6

关键词:C语言;程序设计;教学方法

1.前言

C语言是目前最流行的、功能强大的、面向对象的编程语言,在教学过程中发现,学生经常会出现听得懂、编不出程序的现象,影响学生的在专业方面的需求。笔者结合多年教学经验,认为在教学过程中要将学生分为三个不同的阶段,具体为引导入门、基础充实和实践提高三个阶段,分阶段采用不同的教学方法与手段,提高教学效果。

2.引导入门阶段

学生刚开始学习《C语言程序设计》,感觉内容抽象,学习枯燥,失去学习兴趣,因而没有学习动力。入门阶段关键在于激发学生学习C语言程序设计的兴趣,引导学生入门。有些老师恨不得学生一下子掌握自己所有的知识,不知老师的知识是多年积累下来的,学生很难一下子接受,更不用说掌握了。教师对所教内容需精心选择,以简单有趣为主,关键是能够激发学生学习兴趣。可通过多媒体课件,用一些趣味性的程序或者小游戏来调动学生的积极性,提高他们学习编程的兴趣。学生具有差异性,为了让所有学生都能产生浓厚的学习兴趣,适宜采用分层教学法。入门阶段也需注重理论联系实际,但不必要求学生编程,可考虑让学生编辑或修改程序,可以通过给出源代码的、简单的并有详细输入、输出结果的程序,让学生进行编辑并调试,利用输出结果让学生收获成功的喜悦,以轻松愉快的心态学习程序设计。在此基础上,以循序渐进的方式,逐步引导,进行一些简单的修改,让程序得到不同的结果,并解释原因,然后提出新的问题,让学生思考如何修改程序以解决新的问题,培养学生的创造性。

3.基础充实阶段

兴趣是最好的老师,学生经过入门阶段的学习产生了兴趣,就可以进入基础充实阶段了。这一阶段主要是打基础,主要是一些基本概念的讲解和语法的学习,为提高教学质量,也要求老师能够根据不同的概念灵活采用教法,常用的教学方法有类比法、对比法、归纳法和实例教学等方法。

3.1教学方法

相对抽象的概念教学时可选用类比法,例如《数据及其类型》章节中类型的概念,可以采用类比法来进行教学,把C语言中所涉及的数据类型和生活中重量单位做类比,加深概念的认识;可以采用对比法传授《顺序、分支、循环》三种程序设计,通过对比,分清三种程序设计的异同,从根本上掌握三种程序设计。按顺序执行是顺序结构程序设计的特点;分支结构程序设计的特点是需要根据条件而执行不同的操作;而循环结构程序设计中存在重复执行的某种操作。在基础阶段,选取的例题要具有代表性,针对不同的知识点选择典型例题,重点是要学生通过典型例题的掌握,理解程序思想,教师可采用归纳教学法,帮助学生归纳出某一类型程序的程序设计。《指针》是C语言的精华,主要采用实例教学法,参照生活中具体的事例将理论实例化,指针就是地址,学会如何描述地址也就掌握了指针的主要应用(以一维数组和指针为例来进行说明)。一维数组中各元素的地址利用指针法描述,讲解时可以类比第一层教学楼的教室,例如a[O]所在的地址为东1 101,则a[1]所在的地址为东1102,可以假想P为一个人,处于东1101的位置,移动到东1 102即往下走了一个教室,即下一个元素的地址值为P+I。再运用类比的教学方法讲解二维数组和指针,应用类比法可以推广到更加一般的情形。

3.2教学手段

3.2.1科学安排内容,灵活运用多媒体课件

不必所有的内容都讲到,更不必所有内容详细讲,要科学安排内容,可以安排学生在老师的指点下自学简单的内容;如函数、指针等重点内容需要借助多媒体课件详细讲解,最好能够应用一些具有代表性的实例,让学生在理解的基础上掌握概念与思想。

3.2.2成立兴趣小组,培养学生的合作能力。

对一些学习能力较好的同学,以四到五人为单位,按照自愿的原则组织起来成立兴趣小组,通过小组内同学之间互相帮助,培养学生的团队合作精神;通过小组之间相互竞争,锻炼学生的竞争意识。还可以指导兴趣小组参与实际项目的开发,或者组织兴趣小組成员参加一些软件开发竞赛,进一步提高学生的实际动手能力。

3.2.3构建网络平台,加强学生学习的能力。

如今计算机网络已经走进校园,构建网络教学资源平台,构建一个学生可以在任何时候、反复进行互动学习的平台,提供一个师生互动的教学环境。分章节将知识重点、难点放在网站上,让学生通过网络自行解决实践课上那些出现的错误。学生利用网络把每次实践课上程序编写和调试中所犯的错误进行交流、总结,加强学生学习的能力。

4.实践提高阶段

实践提高阶段,采用最适合计算机软件应用课的教学方法项目教学法。通过实施一个完整的项目工作而进行的教学活动,采取小组讨论、协作学习的方式,学生学习的过程就是一个探究的过程。在C语言程序设计课程中应用这种方法的目的在于培养学生综合运用所学知识解决实际问题的能力。它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。改变过去单纯讲理论的现状,运用项目引导的方法,学生在分组解决项目的过程中学会语法的使用,逐步过渡到独立的编写简单小程序,通过项目训练多模块程序的编写,最终实现开发一定规模的大型程序。

5.结束语

C语言程序设计教学探讨 篇7

关键词:C语言,程序设计,教学方法

C语言以其功能丰富、表达能力强、使用灵活、应用面广、目标程序效率高,可移植性好等优点,广泛应用于数据处理、科学计算、系统软件设计和计算机控制等领域。C语言也是一门典型的结构化程序设计语言,既适合编写应用程序,又适合编写系统程序,实用性很强。通过学习C语言,学生不仅能学习有关程序设计的知识,为以后的学习和工作打好基础,而且还能够逐渐培养缜密的思考能力和细致的观察能力,提高整体的工作、学习及生活能力。在学习C语言时,随着开始几堂课大量难以理解和记忆的新概念、新名词、新术语、新规则的介绍,以及枯燥乏味的例题分析后,学生普遍认为这门课难度大、抽象、不太容易学习;而且C语言规则繁多,使用灵活,在实际应用中,常常出错而不知其所以然,使不少学生在学习时感到困难。在教学过程中,作为教师需要加大教学研究力度,应该根据C语言的特点,把握C语言的重点和难点,深入浅出,把课程内容介绍得通俗易懂,以便学生更好地掌握C语言。本人就近年来对C语言程序设计教学的体会进行交流探讨,以抛砖引玉。

1 结合现实生活,激发学习兴趣

为了激发学生对C语言的学习兴趣,通常教师首先会找一些已学课程如数学方面的问题,通过编写C语言程序来实现求解,使学生体会程序设计的用途和一种全新的解决问题的方法。有些教师还会介绍一些趣味性算例,如“鸡兔同笼”、“水仙花数”等,以培养学生的学习兴趣,让大家积极主动、自觉地获取知识,打好学习程序设计语言的基础。整个教学过程中把解题思路、方法和步骤(即“算法”)当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。

这种教学模式是目前许多教师所采取的一种教学方式,也体现出很多的优点。但是由于学生初次学这门课程,这种方法也使得他们的思维受到制约,产生一种印象,即编程就是为了解决某些数学模型。虽然是一些简单的数学问题,但很多学生会联想到数学的其它难题,这使数学基础差的学生产生一种畏惧感,反而会收到不好的教学效果。大量实践证明,学生的确有如此感受,他们需要简单易懂的程序示例。那么,结合现实生活和学习中的简单且常用的实例来说明C语言程序的应用是非常可行的。

本人注意采用大家平时用得较多的软件如Word中的一个应用(英文字母大小写的自动转换)作为教学引入首例,使用C程序实现。通过运行的效果,使学生对C语言有初步的了解;并一直注意采用一些比较常用的软件功能设计如加密、猜拳、图形设计等作为案例来进行教学示例,从而进一步说明学习C语言后能在平时常用的一些应用软件、以后的课程学习及工作应用中做些什么事情,来激发学生的学习兴趣。

2 注重编程细节,培养缜密的思考能力和细致的观察能力

C语言的规则颇多,编写C程序应该严格按照其规则进行程序设计,对初学者而言,常常马虎大意,所编写的程序不能正常编译和执行结果。因此在教学初期,教师必须强调C语言的许多细节问题,让学生的诸多不良习惯扼杀于“萌芽”状态。如学生常常在写程序时出现以下问题:

2.1 标点符号问题

学生在编写程序时,往往忽视标点符号。问题主要表现在:

1)忘记录入标点。C语言中,经常用到各种括号,括号要求成对出现的,并且一条语句的结束需要用分号与另一语句隔开。对初学的学生,他们通常会忽略掉这个细节问题,这需要教师在讲授中明确地指出,让学生弄清楚。特别是括号太多时,一定要养成缩进书写的良好习惯,以减少错误的发生。

2)标点录入错误。要强调不同标点符号的作用和区别,如分号和逗号,“{}”与“[]”,“()”与“<>”等等。在录入程序时,很多学生录入的标点是不正确的。如分号“;”和“;”是有区别的,前者为中文下的标点符号,而后者才是程序中需要的。必须给学生强调程序中所需要的标点符号都应该是英文状态下的。

2.2 字母大小写问题

C语言程序中大小写字母是不同的,所以应严格区分字母的大、小写,一般情况下字母都有小写。此规则一定要讲清楚,让学生记住那些使用大写字母的特例。如符号常量一般都用大写,在用科学计数法表示浮点数中的“E”,弄清该计数法的规则,其中的字母“E”可以不区分大、小写;再如表示16进制数的符号“0x”,其中字母“x”也可不区分大小写等等。在教学过程中,对该类问题应该进行总结、归纳以方便学生掌握。

2.3 容易混淆的符号

C语言中有一些符号很容易混淆,如字母“o”、“O”与数字符号“0”,字母“l”与数字符号“1”,字母“z”与数字符号“2”的区别等等,需要特别提出。

2.4 运算符问题

C语言的一个显著特点是它的运算符丰富,利用这一点可以巧妙地解决许多在其他语言中难以解决的问题,但另一方面,有时也会出现令人混淆的问题,是许多学生在学习C语言时感到比较头疼的,同样需要教师在教学中重点突出讲授。下面就其中几种有代表性的运算符的运算做一些举例说明。

除(/)、求余(%)这两种运算符进行的都是除法运算,但前者结果是取商,而且结果可为整型亦可为实型,且当被除数和除数都为整型时其取整型(相当多的学生在教师讲授时明白,而一旦自己应用于程序编写时就忘记了),当被除数和除数有任何一个为实型则结果取实型;而后者取余运算的结果是取余数,要求被除数和除数必须都为整型,结果也只能取整型。

自增(++)和自减(--)运算,运算量必须是变量(错误:一些学生将符号常量、表达式也用于自增和自减),结合方式都是右结合性(错误:习惯性左结合),区别只在于一个是使变量自增1,一个是使变量自减1,关于它们的用法在此以自增(++)为例。自增形式有两种:1)i++;2)++i。而对于运算规则建议不要急于在此就先说明它们的区别,最好分为两种情况来讲。

第一种情况,当这两种形式中的任何一种单独作为一个C语句存在时,两者可以看作没有差别,都等价于i=i+1;。如:

这三个程序段的分别运行结果是一样的,i的值都为2。

第二种情况,当这两种形式中任何一种和其他的运算符相结合,一起构成一个复合表达式时,两者的运算规则就有很大的差别。而这个很大的差别可归纳为一口决:“名前先取,名后先增”,理解并记住这口诀就用不怕出错了。无论是i++还是++i在此时的操作都可分解为两步:1)取变量i的值参加其他运算;2)变量i自身的值增1;问题就在于这两步谁先执行谁后执行,而口诀的前半句“名前先取”就是指变量名在前就先作第一步,后半句“名后先增”是指变量名在后就先作第二步。

关系运算(或比较运算)表达式求值,表面上运算规则与数学中的比较运算相同,但是有一点要特别注意的是:关系运算表达式在数学中的值是一个逻辑值,“真”或“假”,“成立”或“不成立”,而在C语言中它的值是算术值,当表达式成立时其值为“1”,不成立时其值为“0”,这样就造成了某个表达式在数学上是成立的、合理的,而在C语言中它变成了非法的、不合理的。如表达式88&&x<10,而不能是8

3 因材施教,任务驱动学习

在C语言的教学中,不可避免地会用到大量的数学知识。教师在教学过程中要针对学生的数学知识基础,将教材中涉及到的学生未掌握的数学知识类例题进行更换,避免因数学方面的问题形成教学障碍。

如在设计“循环语句”教学时,可以先给学生讲清楚学习循环语句的用处及优点,介绍学习重点、难点,要求掌握一些程序设计的算法,让他们明确该语句的重要性。如实现求等差数列s=1+2+3+…+n的和时,主要介绍使用循环语句求解,并要求学生掌握其求解方法,并按照此方法推广,以掌握算法思想,然后再通过作业的形式编写累加算法的相关程序,如求s=1!+2!+3!+…+n!等。

在下面这个图形的输出设计教学中,

本人先比较详细地介绍程序的实现方法,然后要求学生在掌握的基础上自行编写这个图形经过变形后得到的图形的程序代码,图形的变形包括颠倒、塔状、旗状、倒三角等,让学生带着任务学习,在总结中提高编程水平。

学生通过自己的练习不断总结编写循环程序的经验,体会循环的思想,使得他们对循环语句有更深的理解和认识,从而达到较好的教学效果。

4 注重实践教学,提高动手能力

C语言的学习,不仅要掌握理论知识,而且实践操作的经验积累也是非常重要的。教师在讲授C语言时,不能忽视学生上机实践课的教学。

有些教师认为,上机课就是让学生自由练习,及时为有疑问的学生解决问题。实际上这种教学辅导方式是不合理的,应该在以下方面进行改进:

(1)学生上机应有明确的练习目标,提高编程效率。教师要结合上课的理论知识,确定上机课要完成的目标,有目的地给学生安排上机实验的任务;并且引入相关的程序实例,逐步分析解决该程序的思路和相关的程序代码,让学生了解如何下手去编写程序。

(2)根据引入的程序实例再扩展开,让同学们自己动手完成相关的程序代码。

(3)鼓励学生相互讨论、共同完成,鼓励公开自己的程序设计,评讲相关的程序代码,并引出新的程序,引导学生自己独立完成。

(4)整个上机课堂中教师随时走动,进行课堂答疑,并敦促学生完成相关程序编写。

C语言具有许多的优点,是使用性很强的程序设计语言之一,它的知识点比较多,初学的学生不好掌握。这就要求教师在教学过程中,注重条理性,多从技巧性入手,把一些琐碎复杂的规则用一些简洁、形象的语言来描述代替,提高教学效率,降低学生学习难度,激发他们的学习兴趣,这样才有可能达到良好的教学效果。

参考文献

[1]谭浩强.C语言程序设计[M].2版.北京:清华大学出版社,1998.

[2]李凤霞.C语言程序设计[M].北京:北京理工大学出版社,2001.

[3]谭浩强,张基温,唐永兴.C语言程序设计教程[M].北京:高等教育出版社,1992.

C语言程序设计教学探讨 篇8

《程序设计基础》课程是计算机科学与技术专业本科教育的必修课程,多数学校选择了C语言作为入门课程。其主要原因在于,C语言是当今最流行的程序设计语言之一,其功能强大,语言严谨,对编写需要硬件进行操作的场合优于其它高级语言,适用于各种操作系统,且数据类型丰富,表达方式灵活实用。作为一门计算机专业学生学习程序设计的入门语言,其入门门槛并不高,但在深入学习之后,其严谨的语法构成对于学习其他编程语言有良好的辅助作用。

我校是一所独立院校,目标是应用型本科人才的培养,学生整体程度比专科生略好,但和重点院校学生相比,还是有一定差距。他们的特点是,好奇心强,理解能力参差不齐,对于单纯的理论学习容易产生倦怠感。对于这种程度的学生,要注重教学方式的调整,才能达到较好的教学效果。由于C语言所涉及的概念比较复杂,规则繁多,使用时容易出错且初学者不易修改,C语言最终目的是教会学生如何编程,而不仅仅局限于语法的使用。不少学生在听课时觉得不得要领,或是对语法成分明确却不会应用,这就要求变一贯照本宣科的教学方式,培养学生具有基本的算法思想,才能达到最终的目的。

1 关于教学方法

俗话说得好,“兴趣是最好的老师”。一门课在刚开始的时候往往是充满神秘感的,第一堂课的成功关系到学生对这门课程的兴趣。作为大一的新生,好奇心还比较强,因此,展示编程的魅力所在,比单纯介绍语言发展史要有意义得多。[1]

建议此时可以展示一些编写得比较优秀、将课本内容应用得比较全面的程序,最好是前几届学生编写的,让学生知道,通过自身的努力学完这门课程之后,可以到达怎样一个境界。同时介绍关于编程有哪些赛事,学院参与了其中的哪些,曾经获得了怎样的名次。学生的目的性明确了,自然就对课程的兴趣有所增加。

平时的授课方式也应做调整,改变传统的教师一味地对着幻灯片进行语法讲解的授课方法,建议教师在介绍代码时打开软件,边讲解边编写和调试,这样学生在看代码的同时,能同时学习编程风格和思维习惯,比单纯看幻灯片的效果要好得很多。教师编程时还可故意错上一两步,让学生自行发现,这样学生的参与度高了,注意力自然比较集中,学习积极性也更高,知识点能掌握得更全面。此外,出错的部分调试时会出现errors提示,修改errors的过程也是一个经验逐步积累的过程,学生在此时可以了解部分errors的调试修改方法,在上机实践的时候践行方法,对能力的提高大有裨益。

2 关于教学内容

C语言的教材种类繁多,但内容上总体上都包括如下几个方面:开篇的C语言发展史、软件的介绍(TC和VC)、流程图,编程部分的基本输入输出语句、分支和循环语句、数组和函数、指针和链表、结构体等。此外,部分书本还有文件输入输出的详细介绍,位运算等。这些内容中的大部分都需要向学生进行详细的介绍,一方面是为了让他们更好地了解高级程序设计语言,另一方面也是为了和后续课程的良好衔接。但若是事无巨细一应介绍,作为初学者的学生会觉得非常枯燥,也很难记住如此多的内容。所以,详略得当就显得非常重要。

(一)开篇部分

对于开篇的C语言发展史、软件的介绍(TC和VC)、流程图部分内容,建议只要简要介绍点到即止即可,毋需让学生在这里耗费太多的精力。缩短学生从开始上课到正式学习编程(主要是基本输入输出)的时间,在他们还对内容充满好奇心的时候就将具体的内容抛出,这样有助于减少额外的干扰。软件使用和程序调试的内容可在之后的授课过程中进行渗透,比在学生一无所知时进行纯讲解效果要好得多。而且作为入门课程的C语言里,并没有用到太艰深的算法,因此流程图一开始只需看懂即可。详细的流程图的画法,包括N-S图等,建议等教学内容完成后再补充讲解,这样才不会喧宾夺主。伪代码的书写也不宜在开篇就做太深入的介绍,会影响到之后对编程语言的理解,干扰到语言的严谨性。

(二)编程部分

编程部分的基本输入输出语句、分支和循环语句、数组和函数、指针和链表、结构体等,是学好C语言的主要组成部分,在其他程序设计语言中,也包含了类似的内容。这部分的内容学生理解起来难度较大,需要详细介绍,所以,在介绍的时候就需要相当的技巧了。

比如基本输入输出语句,根据不同的课本,侧重点也有所不同。部分课本的内容极其详尽,除了包括各种不同的数据类型方面的内容外,还囊括了非常细节的内容,如浮点型和字符型输入和输出的位数、输入时包含的标点等。这些细节问题虽然在编程中因为要求的不同而有可能用到,但是因为有些枯燥,在作为入门课程的时候,会耗掉大量的精力而不得要领。其实这部分的内容大可以化繁为简,仅仅讲授各种不同数据类型的输入输出即可,当学生实际编程需要用到细节内容的时候,再让他们像查参考书一样,对这部分进行详究。往往这个时候学生就会觉得这部分的内容其实并不困难,对此也更加印象深刻。

其次就是循环语句,这对学生来说相对较难的一个知识点。比如在介绍for(表达式1;表达式2;表达式3)语句时,经常会花费教师大量的精力,对各个表达式的用法做详细的介绍,强调其各部分重要性,突出重点,说明语法的各种变形形式。这种介绍方式虽然条理清晰,但在实际教学过程中其实效果寥寥。C语言和外语一样,也是有语感的,在介绍语法的时候,最好的方法是将其融入到大量的例子中,有目的性地进行介绍,效果会事半功倍。建议可以举一些非常具体的例子,比如等求和的例子,以及1到1000之间完全平方数个数等计数的例子。“求和”和“计数”是基本循环语句中最常用的算法,在此时渗透这些算法,之后学生编写这一类内容时就事半功倍。再比如双重循环语句,即所谓的两个for语句的嵌套,常用在排序或是矩阵运算方面,学生入手经常感到非常的艰深。在这方面的经验是,可以先让他们学会输出“*”组成的各种图形,比如输出如下所示的三行三列的三角形:

之后改为由用户输入行列数n,输出n行n列,这样在循环的内容中又加入了交互。在这种基本方式讲解完之后,可以让学生思考如何输出其他不同图形,比如倒三角,等边三角,菱形等。这种图形的输出法即灵活有趣,可以吸引学生的注意力,对循环编写能力的提升又大有益处。

指针方面的介绍主要就是多举例子,这里不再赘述。链表部分建议在介绍代码前,将链表制作方法逐步在黑板上画出来,主要包括链表的建立、添加、修改、删除。这样比单纯用幻灯片进行讲解要好得多。只有理解了思路,才能看得懂代码,要知道程序设计艰深的,从来不是代码的语法本身,而是算法思路!

(三)其他

部分教材到了这里,还剩下文件输入输出、编译处理和位运算这些内容,可根据课时按照需要进行介绍。学生学习到此处,对C语言已经有了一个大致的认识。文件输入输出方式若是时间不够充裕,可捡重要部分稍加介绍,但不建议完全抛弃这部分内容,以避免之后学生遇到该部分内容时一无所知。

3上机课的重要性

实践环节是C语言学习极其重要的一个环节,实践环节没有及时跟上,那么前面的一切方法都是空谈。上机环节是教师发现问题的一个很好的渠道。学生在课堂上的听课效果在这里会得到很好的反馈。

许多学生在这里表现出动手能力的欠缺。建议针对书本各个知识点,有针对性地设计上机实验内容,这样学生才能吃透各个知识点,这也要求教师在这个过程中一定要非常的耐心。因为学生是初学者,对编译调试程序非常陌生,对语法也不熟悉,犯一些很低级的错误是非常正常的。在学生出现问题时,及时帮他们解决问题,他们在学会一些解决问题的方法后,如果能自己独立编写出一些代码,也会比较有成就感。这就从另一个方面加深了他们对课程的好感。多上机练习,练习的对象更广泛一些,题型更灵活一些,那么学生的知识面也会比较宽。虽然说大学强调的是“自学”的过程,但是作为大一的学生,很多人的思维习惯还没有改过来,而且我校学生的整体水平并不高,自我约束能力也比较弱,所以教师有目的性的引导就显得尤为重要。[2]

我们的目标是培养应用型人才,因此,如何使用C语言解决问题,比单纯地如何使用C语言要重要的多!以上是我在C语言教学过程中的一些心得体会,在以后的教学过程中,我也会不断地探索实践,改进方法,以学生为本,努力提高教学质量。

摘要:C语言程序设计是本科计算机专业教育中极其重要的一门课程,这门课程学习的程度好坏,直接影响到后续的一系列课程。通过对近几年该课程教学经验的总结,分析了在教学过程中普遍存在的问题,提出一些适用于我院学生水平下的操作方法,实践表明,这些方法对学生学习C语言有所助益。

关键词:C语言,教学,本科,代码编写

参考文献

[1]杨进,中职C语言程序设计教学探讨[J].科学咨询(科技·管理),2012年7月

C语言程序设计教学探讨 篇9

目前国内大多数高职高专院校的教学时间较短, 学生要在有限的时间内学完大量的课程, 因此许多学校在新生一开学就开设了C语言程序设计课程。作为后续课程的基础类核心课, 学好C语言就很关键。而新生的基础知识相对薄弱且在中学所养成的思维模式, 这都对C语言的教学提出了问题。如何使学生在短时间内快速的进入角色, 熟悉C语言的思维方式, 激发学习兴趣就成为了一个值得探讨的问题。在以往的教学模式中, 教师会在初期就介绍C语言这门课程在今后的学习生活中扮演着十分重要的角色, 强调学生要重视对这门课程的学习。这样确实能够使一部分学生重视起这门课程, 但随着大量难以理解的新概念、新名词、新规则的出现, 造成学生普遍认为这门课难度大、难学的印象, 使不少学生在学习初期就对这门课程感到恐惧, 不能更好的进行教学。因此, 要想让学生真正学好此门课, 为后续课程打好坚实的基础, 需要加大C语言课程的教学与研究力度。

首先, 这门课程是以培养学生程序设计思想为目的的, 使其具备基本的程序编写能力, 为后续课程打下基础。根据目前的教学效果反映, 学生在学完这门课程之后并没有达到预期的目的, 甚至连最基本的程序编写代码的能力都不具备。究其原因, 一是不能很好的培养学生的动手能力, 以至于部分同学对C语言的学习还停留在“纸上谈兵”的阶段;二是对学生自主学习能力的培养没有到位, 以至于涉及讲授范围之外的问题学生就不知从何入手。

接下来, 作者就上述两方面原因简单讲述一下教学中的心得体会。

1 学生的动手能力没有到位

学生步入大学校园后都是充满了期待, 都是怀着好奇兴奋得心情开始大学阶段的学习, 然而没过多久就对某些课程的失去了兴趣, 自然就缺乏相应的动手能力。要想提高学生的动手能, 使其在今后的工作中都能熟练发挥出这种技能, 必须从一开始就培养学生的学习兴趣。为提高学生学习C语言的兴趣, 教师通常会在第一节课上就应给学生找些生活中的特殊问题, 例如汉诺塔游戏, 带着学生共同寻找解决方案, 使学生学会面对问题的时候所应采用什么样的思维方式。教师还可以介绍一些能够激发学生兴趣的例子, 如:“菲波纳契兔子问题”、“竞赛记分”、“万年历”、“计算器”等, 以培养学生的学习兴趣, 使大家能积极主动、自觉独立地获取知识。在教学过程中将解题思路、方法和步骤 (即“算法”) 作为的重点, 教会学生如何分析并解决实际问题, 从而使其逐渐形成正确思维模式。目前该教学模式被广泛采用, 也体现出很多优点。但由于学生初次学该课程, 会使他们产生一种印象即编程就是解决某些数学模型。加之学生中学阶段的数学基础可能不是很好, 即便现在需要解决的都是些简单的问题, 出于对数学学习的恐惧感会在授课中产生适得其反的效果。因此授课过程中还要大量的结合现实生活中的C程序实例给学生进行讲解, 并通过运行来激发学生的学习兴趣。

作者曾见过一位教师在第一节课就以超市购物的收银系统为例, 给学生演示使用C程序实现, 通过运行的效果来激发学生学习的兴趣, 使之对C语言有个初步的认识, 学生看到了生动的演示界面, 都产生了浓厚的学习兴趣。接下来老师再进一步讲解学习C语言后可做些什么事情, 使学生明确学习目的, 树立信心。之后的每节课, 每个细节, 学生都会自觉认真地学习。为达到这样成功的教学效果, 需要教师在讲授课之前就必须做好充分准备。才能有效调动学生的学习热情, 引导其从浅到深, 由简入难的学习这门课程。

2 对学生自主学习能力的培养

培养学生自主学习的能力, 其目标是为了让学生在该门课程之外的的其他课程中能运用自己的逻辑思维能力自主学习, 从而在今后的学习工作中能够自如的学习新兴的技术。

C语言作为学生入学以来的第一门程序设计语言类的课程, 注重编程细节, 培养编程技巧很是重要。其规则较多, 编写C程序得严格按照规则进行。初学时, 由于概念模糊可能造成程序不能正常编译和执行, 就会影响学生的学习积极性。因此在教学初期, 教师就必须强调C的许多细节问题, 不要等学生将错误养成习惯之后再改正就已经晚了。如学生常常在写程序时出现以下问题:

2.1 书写标识符时, 忽略了大小写字母的区别

在C语言程序中大写字母和小写字母是两个不同的字符。习惯上, 符号常量名用大写, 变量名用小写表示。教师可以在上机操作中演示一些因为忽略大小而导致程序运行出错的例题。一方面加深了学生对此类错误的印象, 一方面也可以提高学生调试程序的能力。在教学过程中, 教师要对该类问题经常地进行总结、归纳, 帮助学生学习。

2.2 标点符号问题

学生在编写程序初期, 经常会有标点符号的问题。主要表现在: (1) 忘记加分号。分号是C语句中不可缺少的一部分, 语句末尾必须有分号。对初学的学生, 他们通常会忽略掉这个细节问题, 这需要教师在讲授中明确地指出, 如果没有分号, 编译器就会把下一行的内容也作为上一行的一部分去执行, 可能会导致运行错误, 使学生提高警惕。 (2) 多加分号。程序中的复合语句的花括号外不需要再加分号, 否则将画蛇添足。

2.3 容易混淆的符号

忽略了“=”与“==”的区别。在许多高级语言中, 用“=”符号作为关系运算符“等于”。但C语言中, “=”是赋值运算符, “==”是关系运算符。前者是进行比较, 后者表示把b值赋给a。初学者由于习惯问题, 往往会范这样的错误。一定要引起学生的重视, 这就需要教师多找些有关这类符号的特殊程序让学生自己调试。除了以上这几点之外, C语言中还有一些输入的问题也会导致程序出错, 这都需要教师认真总结, 并通过上机调试的方式使学生加深印象。对于C语言的学习, 我们一直强调理论与实践相结合, 把理论的知识应用于上机操作中, 能更好的帮助学生掌握这门课程, 因此, 教师在讲授C语言课程时, 不能忽视实践课的教学, 尤其是学生的上机辅导课。教师应该在上机课程中有目的有意识的给同学安排上机的任务, 使学生知道本次上机应该干什么, 从而提高学习效率。

制定的上机内容应从以下几个方面着手:

(1) 结合讲授的理论知识, 确定题目, 先以程序补充的形式完成部门代码的编辑;

(2) 引入相关的程序实例, 分析解决该问题的算法, 并编写全部代码, 运行;

(3) 讲评学生的作业, 对于有创新的算法提出表扬, 提高学生的积极性, 也能及时的发现学生所存在的问题;

(4) 多在学生中走动, 也是为了能更快的发现学生的问题, 纠正错误。

总之, 为了使学生能够达到预期的培养目标, 除了采用一定可行的教学方式之外, 还需要教师在课下花费更多的精力和时间对学生进行辅导。

3 结束语

除了上述的两点之外, 作者认为要想教好一门课程, 良好的师生关系也是成功的关键。教学是师生情感双向交流的过程, 教学活动是否充满温馨的互动, 既是产生良好的授课气氛的重要因素, 同时也是衡量和评价课堂气氛的重要标志。因此, 在采用激励教育授课过程中, 师生间情感的交流融汇是不可缺少的, 教师要用自己的爱心来感化学生、关心学生、激励学生, 与学生建立平等和谐的关系。除了在课堂上与学生的交流, 在课下也应该多抽出时间给学生答疑解惑, 帮助学生及时、准确的消化课堂的教学内容。在教学中, 教师以充沛的精力、生动的语言、深切的情感、亲切的教态讲课也会引起学生的情感共鸣, 产生“亲其师而信其道”的良好教学效应, 学生才会兴趣盎然地进行学习。

摘要:C语言作为当前程序设计的入门语言已经有着越来越重要的地位, 为提高C语言的教学效果就不得不花费大量的心血。本文针对高职院校程序设计课程枯燥、难懂, 教师只讲授语法知识, 不注重学生学习兴趣的培养, 学生厌学等问题。文中从两方面阐述了对C语言程序设计教学的心得体会, 提出C语言的教学中应该注意的问题。克服传统“灌输”式教学模式的弊端, 以激发学生的学习兴趣, 提高学生分析问题、解决问题的能力。

关键词:C语言程序设计,程序设计,动手能力,自主学习

参考文献

[1]谢桂芳, 高守平.提高《C程序设计》课程教学质量的探讨, 计算机与信息技术.2008 (Z1期) :101-102

[2]王静.基于兴趣培养的《C语言程序设计》教学研究[J]电脑知识与技术 (学术交流) , 2007, (22) :78-80.

[3]张园, 王青松.浅谈独立学院C程序设计课程教学[J]中国科教创新导刊, 2007, (24) :90-93.

[4]董志民, 崔建平, 肖利娜.《C语言程序设计》教学改革探索与实践[J]福建电脑, 2007, (05) :116-117.

[5]王瑾.高职院校教师提高《C程序设计》课程教学质量的研究, 考试周刊.2010年第29期.

C语言程序设计题 篇10

1 课程教学中存在的问题

本人在多年的计算机程序设计语言教学过程中发现,高职学生普遍基础知识薄弱,学习主动性差,缺乏学习兴趣,接受能力有限,英文水平低,看到稍长的程序代码就头痛,课上不积极参与,课后不及时复习,遇到不懂的问题,很少有学生主动询问老师,大多无视实践操作中的逻辑错误与语法错误,有些学生甚至把宝贵的课堂时间浪费在玩手机、逛网页上,最终课程结束也不会编写简单的程序。

针对以上的问题,并结合高职计算机专业学生就业岗位的要求和课程本身的特点,对《C语言程序设计》课程进行了教学的改革。

2 课程教学改革实施

2.1 教学内容的整合

根据高职院校对学生培养技能应用型人才的目标,重在培养学生的程序设计能力、阅读及调试程序的能力上,因此对教材中的内容进行适当的整合,以项目实施顺序为导向来安排组织教学内容,根据项目中各模块所含有的知识、能力及职业素质建立课程体系结构导出基本语法知识、三种程序结构、数组及函数等相关内容。在教学中重点放在三种基本结构、函数调用、数组等常用的知识点,对程序设计语言中偏难偏繁的知识不讲或少讲,对实际应用较多的内容进行必要的加强。在选取实际项目作为教学内容后,通过对问题的解决来引导知识点的学习,使学生在完成项目的过程中提高解决实际问题的能力。

教学内容除选择一个学生熟悉的“成绩管理系统”综合项目贯穿整个课程外,还结合相对独立、有趣的小任务进行教学,用以巩固和拓展知识点,课程内容整合如下:

2.2 教学方法和手段的改革

1)课堂中以项目为先导,推行任务驱动、现场演示、模仿练习、要点剖析、拓展练习的教学形式。由教师对课本知识点的讲解为主体转变为以学生完成项目任务为主体,多年的教学经验说明这种“教师精讲学生多练”的教学方法对高职生学好计算机程序设计语言有着很好的效果。教学中应遵循“深入浅出、突出实用”的原则,将知识难点分散从而提高学生的接受能力。为了巩固课堂的教学内容,学生课后不仅要动手操作编写小程序,还要动笔练习,对课堂上编写调试过的案例和习题,要求课后抄写并加以注释,以加深对程序结构的理解、对程序中英文单词的记忆、对程序语句书写规则的掌握。

2)教学过程中,运用信息量较大的多媒体技术辅助教学,缩减理论讲解时间,优化教学过程,激发学生的学习兴趣。如将选择结构、循环结构、数组和指针等重要的知识点制作成生动的课件,降低理论教学的枯燥性,提高学习的趣味性;将语句、结构及概念等理论知识融合在案例代码中以课件的形式,呈现在课堂中增加教学信息量;充分利用网络资源,将课件、习题等放到网上供学生自行调用复习,巩固教学内容。

3)加强实践教学中的监督和辅导。在任务执行过程中,教师要及时了解学生作业中存在的问题,个别问题单独辅导,普遍问题集中讲解,根据学生实践中出现的问题,教师可适当调整授课计划和授课内容,以满足学生知识学习的需要,这过程可以增强教师与学生的交流,掌握学生学习动态,杜绝学生开小差的弊端,提高课堂教学效果,更好的培养了学生的编写程序及程序调试的能力。

2.3 考核方式改革

考核作为一种教学评价手段对教学有着重要的促进作用,单一的用期末考试成绩来评价学生,往往使学生不注意平时上机实践的积累。所以要实现教学目的,要确保课堂教学效果,还应完善考评机制。要调动学生上机操作的积极性,可在课堂上对学生的任务完成情况作评分;为保证课堂教学内容及时被消化掌握,教师可在课后布置作业,以复习和巩固课堂教学内容,视作业完成的质量记分,如上表所示。提高课堂任务完成和课后任务执行的考核分在总成绩中的比重,使学生有意识的重视平时的上机操作和课后知识点的复习,这才是学好C语言的关键。因此考核由平时成绩(课堂任务+课后任务)50%、上机考试成绩30%、期末考试成绩20%三部分组成,多样化考评机制有助于发挥学生学习的积极性,保障C语言课程的学习效果

3 结束语

程序设计语言的课程教学改革必须针对高职院校学生的特点,认清教学现状,打破常规教学理念,以教师为主导、学生为主体,夯实基础、重在实践,运用多种教学方法和手段并加强教学各环节的实施,来有效培养学生编写程序和调试程序的能力,真正提高教学质量。

参考文献

[1]谭浩强.C语言程序设计教程[M].北京:清华大学出版社,2007.

[2]吴春兰.浅析职业教育课程教学改革[J].教育教学论坛,2011(28):24-26.

[3]隋艳,魏灿欣.浅析高职高专院校实施课堂项目化教学中教学质量评价机制的建立[J]牡丹江大学学报,2011(12):161-163.

上一篇:隐性知识的测度下一篇:研究取向