c语言程序设计试题集

2024-07-28

c语言程序设计试题集(共14篇)

1.c语言程序设计试题集 篇一

C语言程序设计的试题及答案

c=swap(a,b); printf(“%d%d”, a,c); }

40. #include void fun(int n) { if(n==1) printf(“*”); else { printf(“-”); fun(n-1); } } void main { int i,j=0; for(i=1;i<4;i++) fun(i); printf(“XiaoXin!”); } 解答: 1. p=27 2. 运行结果:12345 3. 3 4. 5 3 32 5. 2 6. 11 21 31 7. 3 7 5

8. 6

7

8

5

5

9. 012345 10. a1=1 a2=3 a3=2 11. 10,20,30 12. a=2,b=3 a=2,b=3 13. 10,20,30 14. a=1.0000 15. 567 16. 4 17. 3.000000 18. 80,-20 19. -1 20. j=12 21. 4,3,5 22. 18 23. Hello, world! Hello, world! Hello, world! 24. x=3; 25. x=22 26. i = 7; j = 6; x = 7 i = 2; j = 7; x = 5

27. 7 28. (1) x = 2 y = 3 z = 0 (2) x = 4 y = 9 z = 5 (3) x = 2 y = 3 z = 0 29. 10, 20, 40, 40 30. 125 31. 3,0,-90,23,6,10 32. sum=6 33. i=20 i=40 34. j=9 35. c=1 36. +4++2+ 37. 8 38. c=33 39. 389 40. * -* --* XiaoXin!

三.补充程序 1. 定义了一个 max 函数,找两个整数的最大值,其位置在 main 之后. #include “stdio.h” ________________________ int main() {

int x,y,z; printf(“input two numbers:”); scanf(“%d%d”,&x,&y); ________________________; printf(“maxmum=%d”,z); return 0; } int max(int a,int b) { ________________________; if(a>b)w=a; else w= b; ________________________; } 2. 用函数 nzp 判别一个整数 a 的值,若大于 0 则输出该值,若小于等于 0 则输出 0 值。 #include “stdio.h” ________________________nzp(________________________) { if(v>0) ________________________ else printf(“%d ”,0); } int main() { int a; printf(“input number a:”); scanf(“%d”,&a); ________________________ return 0; } 3. 主函数调 f1 计算 n 阶乘. #include “stdio.h” ________________________ int main() { int n; long s; scanf(“%d”,&n); ________________________ printf(“s=%ld”,s); return 0; } long f2(int n) { ________________________

int i; for(i=1;i<=n;i++) c=c*i; ________________________ } 4. 主函数调 fun 计算 1+1/2!+1/3!+...+1/30!的和. #include “stdio.h” ________________________ int main() { int n; float s; ________________________ printf(“1+1/2!+1/3!...+1/30!=%f”,s); return 0; } float fun() { int n; float t=1; ________________________ for(n=1;n<=30;n++) { t*=1/n; s+=t; } ________________________ } 5. 数组 a 中存放了一个学生 5 门课程的成绩,求平均成绩。 #include “stdio.h” ________________________ int main() { float sco[5],av; int i; printf(“input 5 scores:”); for(i=0;i<5;i++) scanf(“%f”,&sco[i]); ________________________ printf(“average score is %5.2f”,av);

return 0; } float aver(float a[]) { int i; float s=a[0]; ________________________ for(i=1;i<5;i++) s=s+a[i]; av=s/5; ________________________ } 6. 用递归法计算 n! #include “stdio.h” ________________________ int main() { int n; long y; printf(“input a inteager number:”); scanf(“%d”,&n); ________________________ printf(“%d!=%ld”,n,y); return 0; } ________________________ff( int n) { long f; if(n<0) printf(“n<0,input error”); else if(n==0||n==1) f=1; else f=ff(n-1)*n; ________________________ }

7. 输入正方体的长宽高 l,w,h。求体积及三个面 x*y,x*z,y*z 的面积。 #include “stdio.h” int s1; ________________________ int vs( int a,int b,int c) { ________________________ v=a*b*c; s1=a*b; s2=b*c;

s3=a*c; ________________________ } int main() { int v,l,w,h; printf(“input length,width and height”); scanf(“%d%d%d”,&l,&w,&h); ________________________ printf(“v=%d s1=%d s2=%d s3=%d”,v,s1,s2,s3); return 0; } 8. 输入两个正整数 num1,num2,求其最大公约数. #include “stdio.h” ________________________ int main() { int d; int num1,num2; printf(“please input two numbers:”); scanf(“%d,%d”,&num1,&num2); ________________________ printf(“gongyueshu:%d”,d); return 0; } int gongyue(int a,int b) { ________________________ while(b) { temp=a%b; a=b; b=temp; } ________________________ } 9. 利用递归函数调用方式,输出 6 个数字。 #include “stdio.h” ________________________ int main() { int w=5; fun(w); printf(“”); return 0; } ________________________fun(________________________)

{ if(k>0) ________________________; printf(“%d”,k); } 10. 主函数调 printstar 打印一串星形图案. #include “stdio.h” ________________________ int main() { ________________________ ; return 0; } ________________________printstar(________________________) { printf(“*************”); }

解答: 1. int max(int a,int b); z=max(x,y); int w; return w; 2. void int v printf(“%d”,v); nzp(a); 3. long f2(int n); s=f2(n);

long c=1; return c; 4. float fun(void); s=fun(); float s=0; return s;

5. float aver(float a[]); av=aver(sco); float av; return av;

6. long ff(int n); y=ff(n); long return f; 7. int s2,s3; int v; return v; v=vs(l.w,h); 8. int gongyue(int a,int b); d=gongyue(num1,num2);

int temp; return a; 9. void fun(int k); void int k; fun(k-1); 10. void printstar(void); printstar(); void void 四.改错题 解答: 五.编程一 解答: 六.编程二 1. 编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数 通过自定义函数来输出。 2. 编程实现:求出 10~10000 之内的所有素数。要求素数判断通过自定义函数来实现。 3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 4. 编程实现:打印出 2~1000 之间的所有完数。所谓完数,是指这样的数,该数的各因子之 和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28 都是完数。要求完数 的 判断通过自定义函数来实现。 5. 编程实现:打印出 10~9999 之间的所有回文数,要求每 10 个数一行输出。要求回文数的 判 断通过自定义函数来实现。 6. 编程实现:打印出 1~9999 之间的所有同构数,所谓同构数是指一个数如果出现在该数平

方的右端,该数就是同构数。如 5,25 都是同构数。要求同构数的判断通过自定义函数来实 现 。 7. 给定一 5*5 的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要 求 :对角线元素之和及矩阵输出分别通过两个自定义函数来实现。 8. 编程实现:输入一 4*4 的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过 通 过自定义函数实现矩阵的输入输出。 9. 编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中, 然后输出,要求数制转换通过自定义函数来实现。

10. 编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定 义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位 数,x 为给定的数,a 中存放该数的各个位。 11. 编写程序从键盘输入 x 和 n 的值,求 xn (n 为大于等于零的整数) ,要求用 n 递归函数求 x 。

12. 编写实现:输入两个正整数 m,n(m>n) ,计算从 m 个元素中任意取 n 个元素的组合,计 算机

公式为: 要求通过递归函数求阶乘。

13. 编程实现:从键盘任意输入 10 个不相同的整数,然后,输入要查找的数 x,如果在这 10 个 数中找到 x,则打印“Found!” ;如果找不到,则打印“Not found!” 。要求通过自定义函数

实现查找功能。 14. 从键盘输入某班 20 个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找 出 他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。 15. 编程实现:从键盘任意输入某班 20 个学生的姓名和成绩,输出最高分及不及格学生的 人 数。要求分别用两个自定义函数求最高分和不及格人数。 16. 编程实现:输入 2 个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要 求 每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。 17. 编程实现:输入 N 名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工 信 息。要求:职工信息的输入和输出分别通过自定义函数来实现。

18. 编程实现:从键盘输入 10 名学生的信息,包括学号、姓名、成绩,用一个排序函数 sort 完成学生成绩降序排列,并输出学生排序后的结果。 19. 编程实现:任意输入一组不多于 20 个的升序排列的若干个整数,任意输入不多于 10 个 的 整数(-1 作为输入结束标志) ,将其插入到该序列中,使其依然有序。要求:通过自定义函 数实现将一个整数插入到一个有序序列中,使其依然有序。 20. 一个班级有 30 个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。 要求编程实现以下功能: 1) 从键盘上输入 30 个学生的信息,平均成绩通过公式:平均成绩=(数学+语文+计算 机 )/3 计算得出。 2) 输出所有平均成绩大于等于 85 的学生姓名(要求用自定义函数实现该功能)。 解答: 1. #include “stdio.h” int GreatComDiv(int m,int n); int LeaseComMul(int m,int n); void main() { int m,n,t; printf(“请输入 m 和 n 的值:”); scanf(“%d%d”,&m,&n); if((m<=0)||(n<=0))

{ printf(“输入错误!请重新输入!”); scanf(“%d%d”,&m,&n); } if(m

int LeaseComMul(int m,int n) {int greatcomdiv; greatcomdiv=GreatComDiv( m, n); return m*n/greatcomdiv; }

2. #include “stdio.h” int sushu(int n); void main() { int n; printf(“input n:”); scanf(“%d”,&n); if (sushu(n)) printf(“%d 是素数”,n); else printf(“%d 不是素数”,n); } int sushu(int n) { int i; for(i=2;i

return 1; }

3. 编程实现:输出所有的“水仙花数” 。所谓“水仙花数”是指一个 3 位数,其各位数字立 方和等于该数本身。例如:153 是一个“水仙花数” ,因为 。要求水仙花数的判断通过自定 义函数来实现。 #include “stdio.h” int fun(int n); void main() {int i; for(i=100;i<=999;i++) if (fun(i))printf(“%d”,i); } int fun(int n) {int a,b,c; a=n/100;b=n/10%10;c=n%10; }

if (a*a*a+b*b*b+c*c*c==n)return 1;

return

0;

4. #include “stdio.h” int wanshu(int n); void main() { int n; printf(“input n:”); scanf(“%d”,&n); if (wanshu(n)) printf(“%d 是完数”,n); else printf(“%d 不是完数”,n); } int wanshu(int n) { int i,s=0; for(i=1;i<=n/2;i++) if(n%i==0) s+=i; if(s==n) return 1; else return 0;

}

5. 方法一: #include “stdio.h” int huiwen(int n); void main()

{ int n; printf(“input n:”); scanf(“%d”,&n); if (huiwen(n)) printf(“%d 是回文数”,n); else printf(“%d 不是回文数”,n);

2.c语言程序设计试题集 篇二

关键词:汇编语言,C/C++语言

在计算机系统的应用程序中, 所有汇编任务都由汇编语言来完成, 这样虽然完成任务的效率很高, 但是工作量却非常大, 会影响到对于应用程序的维护。若是所有的程序都是由C/C++语言进行编程, 虽然执行过程比较的简单, 但是这种方式却导致了目标代码的执行任务效率低, 实时性很差。所以在嵌入式系统中, 主要采用的编程方式是汇编语言与C/C++语言混合编程形式, 在编程过程中, 初始化任务由汇编语言来完成, 主要的任务则是由C/C++语言来完成, 从而达到了最大的效果。

1 ARM处理器

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

1.1 寄存器使用规则

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

1.2 堆栈的使用规则

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

1.3 参数传递规则

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

2 C语言

2.1 汇编语言调用C语言

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

汇编语言的集成环境如图1所示。

2.2 C语言调用汇编语言

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

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

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

3 混合编程

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

以下是利用字符串复制的方式实现混合汇编:

4 结语

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

参考文献

[1]翟乃强, 隋树林.汇编语言与C语言及Visual C++混合编程[J].青岛科技大学学报 (自然科学版) , 2003.

[2]王付山.汇编语言程序设计教学初探[J].福建电脑, 2005.

3.《C语言程序设计》教学探究 篇三

关键词:教学方法案例教学启发教学教学效果

0 引言

《C语言程序设计》作为计算机专业的基础课,已经成为一门必修的语言课程,在整个语言课程体系中占有非常重要的地位。在C语言教学过程中,从客观上讲,教师的教法和学生的学法的差异,对教学效果都会产生很大的影响。针对教师的教法和学生学习语言类课程的学法,结合近几年来的教学经验和教学体会,把一些经验和方法总结出来,希望能对C语言课程的教学和学习有所帮助。

1 分析教学中存在的问题

《C语言程序设计》是一个逻辑性很强的课程。有些问题是将数学知识转化用c语言来实现,这就要求学生首先要能够理解和掌握数学知识,才能将其转化用c语言来实现。在调试程序时,提示的信息都是用英语给定,那么也就要求学生掌握最基本的英语单词,有些甚至是计算机专业英语,能将英语句子翻译为汉语,才能够对程序加以修改。学生在心里认为c语言难学,没有积极学习的主动性,导致上课时没兴趣,不能专心听讲,布置的作业无从下手,在实践课中,看到要编写的程序题目,理不出头绪。

2 涉及新的知识要有导入

在教学的過程中,要将新的知识点,要有很自然的导入语,引导学生思考问题和解决问题的方法。例如:scanf(“%d”,&a);只能从键盘接受 一个整型数,现在要输入40名学生的成绩,如何通过一个scanf函数来实现,难道是要定义40个变量,那如果要接受100个数呢?更多的呢?为了解决诸如此类的问题我们采用数组来实现。这样也就引导学生思路跟着教师,给他们提出问题,在给出解决问题的办法。

3 举一反三

给定一个例子时,将涉及到的所有内容都要讲到。各种形式,可能出现的错误都要指定。例如:现在要求n!我们可以给定一下几种形式:

(1)main()(2)main()

{ int i=1,n;{inti=1,n;

doubles=1; doubles=1;

scanf("%d",&n); scanf("%d",&n);

while(i<=n) do{ s*=i;

{s*=i;i++;

i++;} }while(i<=n);

printf("%lf",s); printf("%lf",s):

} }

(3)main()(4)main()

{inti,n ; {int i,n;

double s=1;doubles=1;

scanf("%d",&n); scanf("%d",&n);

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

s*=i;while(i>=1)

printf("%lf",s); {s*=i;

} i--;}

printf("%lf",s);}

(5)main() (6)main()

{intI,n; { inti=0,n;

doubles=1; doubles=1;

scanf("%d",&n); scanf("%d",&n);

i=n; while(i<=n)

for(i=n;i>0,i--) {i++;

s*=I;s*=i;}

printf("%lf",s);}printf("%lf",s);}

一个例子可以给出多种方法来实现,在这只给出6中形式,从这6种中,就可以看到初值不同,语句的书写顺序不同。通过一个例子,让学生能理解各种形式,遇到诸如此类问题时,就可以迎刃而解。

4 与实践教学相结合

程序设计课程具有很强的实践性,对于计算机语言课程的教授不应仅仅是传授知识,应该以培训能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序。应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。

参考文献:

[1]朱健,庞倩超.C语言程序设计案例教程.全国高职高专教育精品规划教材:北京:交通大学出版社.

[2]郭芹.对高职高专计算机专业程序设计教学的思考.中国科技信息.2008(1).

[3]谭浩强.C语言程序设计教程.北京:高等教育出版社.

4.C语言测试题 篇四

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. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立

5.c语言练习试题库 篇五

单项选择题

1.有char c=’1’,下面说法中正确的是(    )。

A. 语句putc+2);的输出结果为51

B. 语句put“%d”,c+2);的输出结果为3

C. 语句put“%c”,c+2);的输出结果为51

D. 语句put“%c”,c+2);的输出结果为3

2.设c1,c2均是char型变量,则下面不正确的函数调用为(    )。

A. scanf(”c1=2=%c”,&c1,&c2);

B. get);

C. putc2);

D. putc1,c2);

3.为了表示关系x>=y>=z,下面C语言表达式中正确的是(    )。

A. (x>=y)&&(y>=z)

B. (x>=y)and(y>=z)

C. (x>=y>=z)

D. (x>=y)&(y>=z)

4.设x,y,z,t为int型变量,则执行以下语句后,t的值为(    )。

x=y=z=1;

t=++x||++y&&++z;

A. 不定值

B. 2

C. 1

D. 0

5.对if语句中表达式的类型,下面正确的说法是(    )。

A. 必须是关系表达式

B. 必须是关系表达式或逻辑表达式

C. 可以是任意表达式

D. 必须是关系表达式或算术表达式

6.对for(表达式1;;表达式3)可以理解为(    )。

A. for(表达式1;0;表达式3)

B. for(表达式1;表达式1;表达式3)

C. for(表达式1;1;表达式3)

D. for(表达式1;表达式3;表达式3)

7.执行语句for(i=1;i++<4;);之后,变量i的值为(    )。

A. 3

B. 4

C. 5

D. 不确定

8.若二维数组a有m列,则在a[i][j]前的元素个数为(    )。

A. j*m+i

B. i*m+j

C. i*m+j-i

D. i*m+j+1

9.下面说法中正确的是(    )。

A. 在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

B. 在C语言中,数组元素的个数可以不确定,允许随即变动

C. 在C语言中,数组元素的数据类型可以不一致

D. 在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数

10.不能把字符串:“good!”赋给数组b的语句是(    )。

A. char b[10]={’g’,’o’,’o’,’d’,’!’};

B. char b[10];b=“good!”;

C. char b[10];strcpy(b, “good!”) ;

D. char b[10]=“good!”;

11.执行下面程序段,给x,y赋值时,不能作为数据分隔符的是(    )。

int x,y;

scanf(”%d%d”,&x&y);

A. 回车

B. Tab键

C. 回车

D. 逗号

12.已知ch是字符型变量,下面不正确的赋值语句为(    )。

A. ch=’a+b’;

B. ch=’’;

C. ch=’7’+’9’;

D. ch=5+9;

13.下面程序段的输出结果是(    )。

char c1=’6’,c2=’0’;

printf(”%c,%c,%d,%d ”,c1,c2,c1-c2,c1+c2);

A. 因输出格式不合法,输出出错信息

B. 6,0,6,102

C. 6,0,7,6

D. 6,0,5,7

14.在C语言的循环语句for, while,do while中,用于直接中断最内层循环的语句是(    )。

A. switch

B. continue

C. break

D. if

15.下面的循环结构中,不是无限循环的是(    )。

A. for( i=1;;i++) printf(“%d”,i--);

B. i=1;while(i--) {printf(”%d”,i++);}

C. i=1;do{printf(”%d”,i); i++;} while(--i);

D. for(i=0;i;i++) printf(”%d”,i);

16.下面程序段的运行结果是(    )。

char c[]=” will ”;

printf(“%d“,strlen(c));

A. 14

B. 3

C. 9

D. 字符串中有非法字符,输出值不确定

17.下面说法中正确的是:在C语言程序中(    )。

A. 函数的定义可以嵌套,但函数的调用不可以嵌套

B. 函数的定义不可以嵌套,但函数的调用可以嵌套

C. 函数的定义和调用均不可以嵌套

D. 函数的定义和 调用均可以嵌套

18.若用数据名作为函数调用的实参,传递给形参的是(    )。

A. 数据的首地址

B. 数组第一个元素的值

C. 数组中全部元素的值

D. 数组元素的个数

19.以下叙述中不正确的是(    )。

A. 在不同的函数中可以使用相同名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效

20.一个变量的指针是指(    )。

A. 该变量的值

B. 该变量的地址

C. 该变量的变量名

D. 该变量的标志

21.若有定义:int a[10],*p=a;,则p+5表示(    )。

A. 元素a[5]的地址

B. 元素a[5]的值

C. 元素a[6]的地址

D. 元素a[6]的值

22. C语言规定,在一个源程序中,main函数的位置(    )。

A. 必须在最开始

B. 必须在系统调用的库函数的后面

C. 可以任意

D. 必须在最后

23. 一个C语言程序是由(    )。

A. 一个主程序或若干个子程序组成

B. 函数组成

C. 若干过程组成

D. 若干个子程序组成

24. 下面哪项是构成C语言的基本单位(    )。

A. 函数

B. 过程

C. 子程序

D. 子例程

25. 以下正确的说法是(    )。

A. 定义函数时,形参的类型说明可以放在函数体内

B. return后边的值不能为表达式

C. 如果函数值的类型和返回值类型不一致,以函数值类型为准

D. 如果形参与实参的类型不一致,以函数值类型为准

26.对于基类型相同的两个指针变量之间,不能进行的运算是(    )。

A. <

B. =

C. +

D. –

27.变量的指针,其含义是指该变量的(    )。

A. 值

B. 地址

C. 名

D. 一个标志

28.下面程序运行的结果是(    )。

void ss(char *s,char t)

{ while(*s)

{ if(*s= =t) *s=t-‘a’+’A’;

s++;

}

}

void main

{ char str1[100]=”abcddfefdbd”,c=’d’;

ss(str1,c);

printf(“%s ”,str1);

}

A. ABCDDFEFDBD

B. abcDDfefDbD

C. abcAAfefAbA

D. Abcddfefdbd

29.下列说法中正确的.是(    )。

A. 结构体变量可以作为一个整体进行其值得输入和输出

B. 结构体成员项不可以是结构体

C. 结构体成员项可以是结构体或其他任何C语言的数据类型

D. 结构体变量和结构体是相同的概念

30.下面说法中不正确的是(    )。

A. 一个C源程序可有一个或多个函数组成

B. 一个C源程序必须包含一个main函数

C. C程序的基本组成是函数

D. 在C程序中,注释语句只能位于一条语句的后面

31.若执行下面的程序段,则下面描述中正确的是(    )。

int k=5;

while(k=1) k--;

A. while循环执行四次

B. 循环体执行一次

C. 循环体一次也不执行

D. 死循环

32.下面关于for循环的正确描述是(    )。

A. for循环只能用于循环次数已经确定的情况

B. for循环中是先执行循环体语句,后判断表达式

C. 在for循环中,不能用break语句跳出循环

D. for循环的循环体可以包含多条语句,但必须用花括号括起来

33.不正确的定义语句是(    )。

A. double x[5]={2.0,4.0,6.0,8.0,10.0};

B. int y[5]={0,1,3,5,7,9};

C. char c1[]={’1’,’2’,’3’,’4’,’5’};

D. char c2[]={’x10’,’x0a’,’x08’};

34.下面是对s的初始化,其中不正确的是(    )。

A. char s[5]={“abc”};

B. char s[5]={‘a’,’b’,’c’};

C. char s[5]=””;

D. char s[5]=”abced”;

35.下面程序段的运行结果是(    )。

char c[5]={‘a’,’b’,’’,’c’,’’};

printf(“%s”,c);

A. ‘a’’b’

B. ab

C. ab c

D. abc

36.以下说法中正确的是(    )。

A. C语言程序总是从第一个定义的函数开始执行

B. 在C语言程序中,要调用的函数必须在main函数中定义

C. C语言程序总是从main函数开始执行

D. C语言程序中的main函数必须放在程序的开始部分

37.下列常量中,合法的C常量是(    )。

A. “x-y”

B. ‘105’

C. ‘Be’

D.  07ff

38.下面程序的输出结果是(    )。

void main

{

int i=011,j=11;

printf(“%d,%d ”,++i,j--);

}

A. 10,11

B. 12,10

C. 11,11

D. 10,9

39.下面程序的执行结果为(    )。

void main()

{int x=20,y;

y=++x;   y+=x;

printf(”%d,”y);

y=x--;    y+=x;

printf(”%d,”y);

}

A. 42,41

B. 42,42

C. 40,41

D. 42,40

40.下面程序的输出结果是(    )。

void main()

{ int i=010,j=10;

printf(“%d,%d”,i++,++j);

}

A. 10,11

B. 11,11

C. 8,11

D. 8,10

41.能正确表示a和b同时为正或同时为负的表达式是(    )。

A. (a>=0||b>=0)&&(a<0||b<0)

B. (a>=0||b>=0)&&(a<0&&b<0)

C. (a+b>0)&& (a+|b<0)

D.   a*b>0

42.以下关于运算符优先顺序的描述中正确的是(    )。

A. 关系运算符<算术运算符<赋值运算符<逻辑运算符

B. 逻辑运算符<关系运算符<算术运算符<赋值运算符

C. 赋值运算符<逻辑运算符<关系运算符<算术运算符

D. 算术运算符<关系运算符<赋值运算符<逻辑运算符

43.下面程序的运行结果是(    )。

void main()

{ int a,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

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

}

A. 6,1

B. 2,1

C. 6,0

D. 2,0

44.若有条件表达式(exp)?a++:b--,则以下表达式中完全等价于表达式(exp)的是(    )。

A. (exp= =0)

B. (exp!=0)

C. (exp= =1)

D. (exp!=1)

45.程序段如下,则正确的执行结果是(    )。

int k=0;

while(k++<=2);

printf(“%d ”,k);

A. 2

B. 3

C. 4

D. 无结果

46.下面说法中正确的是(    )。

A. 在C语言函数中,必须有形参

B. 在C语言函数中,形参必须是变量名

C. 在C语言函数中,可以有也可以没有形参

D. 在C语言函数中,数组名不能做形参

47.下面说法正确的是,在C语言中(    )。

A. 实参和与其对应的形参各占用独立的存储单元

B. 实参和与其对应的形参共占用一个存储单元

C. 只有当实参和与其对应的形参同名时才共占用存储单元

D. 形参是虚拟的,不占用存储单元

48.下面不正确的说法是:C语言规定(    )。

A. 实参可以是常量、变量或表达式

B. 形参可以是常量、变量或表达式

C. 实参传递给形参时,要求实参必须有确定的值

D. 形参应与其对应的实参类型可以不一致

49.C语言允许函数值类型缺省定义,此时函数值隐含的类型是(    )。

A. float型

B. int型

C. long型

D. double型

50.若有以下定义:char s[10]=“include“,*p=s;,则不能代表字符‘u’的表达式为(  )。

A. s[4]

B. s+4

C. *(p+4)

D. p+=4,*p;

51. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是(    )。

A. 地址传递

B. 单向值传递

C. 由实参传给形参,再由形参传给实参

D. 由用户指定传递方式

52. C语言规定,函数返回值的类型是由(    )。

A. return语句中的表达式类型所决定

B. 调用该函数时的主调函数类型所决定

C. 调用该函数时系统临时决定

D. 在定义该函数时所指定的函数类型所决定

53. 若有int *p,a[10];p=a; ,则下列写法不正确的是(    )。

A. p=a+2

B. a++

C. *(a+1)

D. p++

54. 若用数组名作为函数调用的实参,传递给形参的是(    )。

A. 数组的首地址

B. 数组第一个元素的值

C. 数组中全部元素的值

D. 数组元素的个数

55. 若使用以为数组名作函数实参,则下面说法中正确的是(    )。

A. 在被调函数中,与该实参相对应的形参必须是同类型的数组名或指针变量

B. 实参数组类型与形参数组类型可以不匹配

C. 在被调函数中,不需要考虑形参数组的大小

D. 实参数组名与形参数组名必须一致

56. 设p1、p2是指向同一个字符串的指针变量,c为字符变量,则不能正确执行的赋值语句为 (    )。

A. c=*p1+*p2;

B. p2=c;

C. p1=p2;

D. c=(*p1)*(*p2);

57. 若有一下结构体定义,则正确的引用和定义是(    )。

struct example { int x;  int y;} v1;

A. example.x=10

B. example v2; v2.x=10;

C. struct  v2;  v2.x=10;

D. struct  example  v2={10,5};

58. 说明一个结构体变量时,系统分配给它的内存是(    )。

A. 各成员所需内存量的总和

B. 结构体中第一个成员所需内存量

C. 成员中占内存量最大者所需的容量

D. 结构体中最后一成员所需内存量

59. 在C语言中,文件由下面拿个组成(    )。

A. 记录

B. 数据行

C. 数据块

D. 字符(字节)序列

60. 下面程序段的运行结果是(    )。

char c[]=” will ”;

printf(“%d“,strlen(c));

A. 14

B. 3

C. 9

D. 字符串中有非法字符,输出值不确定

61.以下叙述中不正确的是(    )。

A. 在不同的函数中可以使用相同名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个结函数内的符合语句中定义的变量在本函数范围内有效

62.一个变量的指针是指(    )。

A. 该变量的值

B. 该变量的地址

C. 该变量的变量名

6.C语言开发工程师笔试题 篇六

在二叉树中找出和为某一输入值的所有路径。

#include

void getPath(struct treeNode星符号 node, int sum, vector& stack, int currentSum) { //stack用来存放路径,sum为输入值

} if (node == NULL) return; currentSum += node->id; stack.push_back(node->id); if (node->lchild != NULL) getPath(node->lchild, sum, stack, currentSum); if (node->rchild != NULL) getPath(node->rchild, sum, stack, currentSum); if (node->lchild == NULL && node->rchild == NULL) { if (currentSum == sum) { vector::iterator it = stack.begin; for (; it != stack.end; ++it) printf(”%d “, 星符号it); printf(”/n“); } } stack.pop_back;

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

当今计算机已广泛应用于社会生活的各个领域, 并向普及化方向发展。对80、90后的大学生而言, 除了掌握一般的计算机操作技能以外还必须具有一定的实际应用编程能力。C语言是一种通用性计算机程序设计语言。它兼有汇编语言和高级语言的双重优点, 运用它既能编写操作系统软件, 又能开发各个领域的应用软件。C语言的实用性使之成为编程的首选语言。学好并掌握C语言不光能够提高学生自身的计算机编程能力, 而且为将来学生的顺利就业打下基础。然而有很多学习过C语言甚至是计算机专业毕业的大学生连最基本的程序都不会编写, 针对这种现象教学之余笔者做了深入的调查和分析, 发现在当今的C语言教学中还存在一些问题, 有待我们研究和探讨。

1. C语言教学中存在的问题

1.1人才培养目标定位不准确

有的高职高专型学校太注重理论教学环节, 忽视实践教学环节。教师过分强调学习语法等理论知识, 忽视培养学生实际应用的能力。受学科型教学思维的影响, 由教师主导的教学过程呈现出以语法为主线的教学模式, 编程变成了语法学习的示例或验证。这样学生理论课听不懂, 实践课练习编程屡屡受挫, 学习C语言的积极性和主动性受到严重打击。

1.2教师教学过程中采用的教学方法不适当

有的教师在上C语言的第一堂课就采用单调死板、照本宣科的牧师讲法。先讲概念, 然后举例去验证理论的正确性, 而实际问题一点也得不到解决, 使学生陷入不断被灌入理论和不断的尝试和验证中, 使学生失去学习C语言的兴趣。

1.3实训课和实践课没有被充分重视起来

笔者多年教学发现C语言上机课安排的较少, 在相对理论课较少的C语言上机课堂上, 还有很多学生迟到、旷课, 或者上机时打游戏, 做小动作。笔者去过不同的学校听不同的

老师上课, 笔者发现在有的老师的上机课上有将近一半的学生请事假。久而久之, C语言的上机课实际上是名存实亡。学生得不到很好的上机练习机会, 编程能力也得不到提高。

2. 解决问题的方法

2.1准确定位人才培养目标

学校应面向市场, 准确把握市场对计算机编程人员的需求, 从而制定合适的人才培养计划, 依据计划由学校的资深教师编制教学大纲并选定教材。C语言是面向过程的编程语言, 即不生动有趣又不直观可见, 让初学者望而生畏。高职高专型学校和本科学校相比生源质量相对较差, 学生的起点低, 一些普招上来的学生没有学习过计算机文化基础, 甚至有些学生根本没有接触过计算机, 根据笔者多年的C语言教学经验, C语言的第一次实训课上, 往往有很多学生不会开机, 也不会关机。所以高职高专型学校应把人才培养目标定位在培养技能应用型人才上, 培养学生实际动手能力和软件开发能力。

2.2把一些先进直观的教学方法应用到C语言教学中

(一) 采用启发式教学, 激发学生学习的自主性

针对C语言概念多, 语法规则较繁的现状, 采用启发式教学可以将难理解、难记忆的概念和规则变成一系列具体直观的问题呈现在课堂教学中, 这样就能把学生的注意力集中起来, 把学生的学习积极性调动起来, 达到师生互动的效果。这种启发式、讨论式、交流式的教法, 不仅改变原来的灌输式教学, 而且增强了学生自主学习的能力。

(二) 采用任务驱动教学法

传统C语言教学总是从基本数据类型讲起, 再接着讲C语言的各种数据类型及概念, 基本上是这样一个过程:设计算法—书写程序—调试程序, 显得即抽象又复杂, 这种方式对学生来说比较枯燥, 也较难理解和掌握。在教学中, 可先给出一个任务, 然后再给出源程序和运行结果, 学生对此任务有了初步认识并对其产生了强烈的好奇心, 学生的求知欲被充分调动起来, 然后教师再具体讲解程序中用到的语句和概念, 从而让学生明白如何分析并解决问题, 逐步培养学生进行程序设计的正确思维模式, 以后再大量的做这样的练习题, 强化训练, 使学生对类似知识点达到举一反三, 融会贯通。

(三) “框架法”和“求异法”相结合

“框架法”可培养学生的全局思维和算法的整体设计能力。具体体现在两方面:一是在学生有了一点编程基础后要利用伪代码或流程图, 从算法设计的角度讲解编程思路, 而不应拘泥于语法细节, 不分主次、逐条语句的讲解代码。通过此框架, 可使初学者把着眼点放在函数的设计框架上, 体现参数设计、返回值设计等关键问题, 而无需细讲函数体的实现细节。

(四) 采用现代化教学手段—多媒体

现在大多数学校的教师都在多媒体教室上课, 但是仅仅是使用PPT教学, 没有做到真正意义上的多媒体教学。

笔者建议采用多媒体教学技术, 把枯燥的内容形象化, 使声、形、图、文融为一体。例如在讲冒泡排序时可以采用flash动画技术把排序的过程动态的演示一遍, 也可以在平时的上机训练时让学生编写简单的小游戏程序, 这样在娱乐中让学生觉得学习C语言更有兴趣了。在实训室实训时教师可以采用广播教学的方式互动教学, 逐个学生、逐一问题、逐步突破。

3. 结束语

C语言程序设计的教学要讲究方法, 通过灵活采用多种教学方式和教学手段, 提高学生的学习兴趣和学习积极性。通过这门课的学习, 不仅要使学生掌握语言的基本规则, 而且要切实培养学生分析问题, 解决问题的能力, 培养学生的创新精神, 团队意识, 为学生提供更好的展示才华的舞台。

参考文献

8.C语言程序设计教学方法探讨 篇八

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

中图分类号:G648.2文献标识码:A文章编号:1002-7661(2011)09-0028-02

C语言是计算机专业和相关专业一门很重要的专业基础课,学好C语言为数据结构等后继课程有很大帮助。但是对于高职学生,数学、英语等基础知识较差,而C语言又作为他们面临的第一门语言类课程,因而学习C语言具有很大的难度。本文结合本人几年来的教学经验,对怎样提高C语言教学质量,如何让学生掌握好C语言基础知识点提出几点看法。

一、创设情境,激发学生学习兴趣

大多数学生对新课程都很感兴趣,都很想学好这门课,所以上好第一节C语言课是一个很好的开始。C语言有很多语法和知识点需要掌握,但是如果第一节课就开始介绍C语言的知识点,不但得不到好的收效,还会让学生因为知识枯燥,不易理解而失去学习本课程的兴趣。上第一节课,先讲授C语言这门课程的重要性以及在计算机课程中的地位,然后给学生演示几个简单的游戏,比如:小型运算器,俄罗斯方块,贪吃蛇等,告诉他们这些都可以用C语言来编写。通过这些实例的引入,可以让学生了解到C语言的实用性,激起学生学习的兴趣。

二、注重教学过程,采用多种教学手段

在教学过程中,把知识点融合在实例中,加强学生对知识点的理解,本人在教学过程中采用以下相应方法:

1.深入浅出

C语言主要包括C语言语法、结构化程序设计、数组、函数、指针、文件等。教材一般都会归纳,但是如果把每一块放在一起讲,难点就比较多。比如,C语言的数据类型很丰富,如果全部放一起讲,学生肯定很难记住,所以可以先讲3种基本数据类型、运算符及相关表达式,再通过一个简单程序,输入输出数据。这样子,学生就逐渐掌握了基本数据类型、定义变量,以及输入输出函数的基本使用。对于一些比较难以理解的概念,可以借用比喻来解释,比如在讲到变量的时候,包括变量的地址、变量名、变量值,在课堂上借用教室打个比方:10网构班(变量名)在实验楼302(变量地址)有45个学生(变量值)。这样学生在定义变量的时候就不会那么抽象了。

2.画出流程图

做任何事情都有一定的步骤,这些步骤是按一定的顺序进行的,缺一不可,如果你对一个问题没有任何思路的话,那肯定编不出程序。在解题的时候,可以先画出流程图,再编程序。如:将50名学生中成绩高于80分的成绩打印出来,可画出流程图如下:

3.先复习旧知识,再导入新课

新内容的导入方法很重要,新课前先回顾复习学过的知识点,从旧知识的某一个点出发,提出和新内容相关的问题,让学生思考,并可适当提问,这样可激发学生思考的积极性。在课堂气氛活跃的情况下,教师适当引导,导入新的知识,这样的讲法可以激发学生的兴趣,使学生更容易接受和理解新知识。

4.任务驱动

每节课开始的时候,可以根据需要布置一些问题,让学生带着相关的问题听课,也可让学生自己思考、归纳,或者互相讨论,这样学生会更有目的性和方向性地听讲。

如:在循环结构for语句中,可以设置三个驱动任务:(1)for语句的一般形式;(2)for语句的执行过程;(3)for语句三个表达式代表的含义,三个表达式能否省略?

5.讲解实例,举一反三

对于C语言程序设计这门课来说,精心设计一些实例,用实例来使概念形象化,深化理解 ,通过教师的分析讲解,使学生更容易入手。然后我们可以对这个简单实例提出新的问题、新的改善方案,引导学生参与对现有程序的修改中来。对于学生的改进方案,教师可引导全体学生来评价优劣,找出其优点,修改其错误,逐步完善,不断优化。这样可以调动学生自主学习积极性,用实例教学加强师生互动。

比如可以在平常写的实例中设置一些待解决的错误,如:故意将赋值符号“=”和等号“= =”互换,漏写分号“;”和大括号“{ }”,引导学生在编程和调试过程中逐一发现并解决这些问题,不仅能够巩固理论知识、养成编程的好习惯,更能调动学生思考问题和解决问题的积极性。同时在解决问题的过程中使学生有一种成就感,这对学习能力的提高和积极性的培养有很好的作用。

6.总结知识点

在课堂讲解过程中,知识点是比较零散的,学生对每个知识点理解了,但对各个知识点之间的联系并不一定理解,缺少一种知识的连贯性,不利于理解和记忆。所以,在每次课结束之前,用几分钟的时间把本次课内容所涉及的知识点回顾一遍,这种回顾既以复习知识点为主,又要讲解其间的联系。当课堂教学内容以一个整体的形式被串联起来后,学生的理解就会加深。如:在讲运算符的时候,每类运算符都有自己的优先级和结合方向,一个一个比较零散,所以在讲完运算符后,可以归纳所有运算符间的优先级和结合方向。

三、引导学生自主学习,培养学生实践能力

程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。对于学生来说,一定要重视实践环节,包括编程和上机。对于教师来说,一定要引导学生自主学习,做好课程设计。

1.上机准备

教师要事先设计好实验内容,内容要尽量引用之前所讲的知识点,避免涉及后续章节的知识,难易适中,由浅入深。课前可先给学生演示一下实验的最终效果,概括本实验包括的知识点,提醒学生对每一个操作的结果仔细观察和详细记录。学生在操作中遇到问题,教师应启发学生独立思考,引导学生去发现问题、分析问题和解决问题,培养学生的动手能力,让学生亲自观察和体验程序设计的成功感受,加深对知识的理解。最后,学生要书写实验报告。上机结束后,教师要督促学生及时总结实践经验,将实验中碰到的问题及解决的方法记录在实验报告上。教师根据每一次上机的整体情况,对学生中出现的共性问题进行讲解。

2.课程设计

可以让学生分组实现一个具体课程设计,在本课程结束的前几周完成课程设计,加深学生对本课程的总体理解。本人认为,在学校中学习程序设计的目的是进行程序设计及基本训练,而不是要求学生立即编写大型程序,或今后一辈子只用这门语言。所以,布置课程设计时,要把精力放在本课程最基本、最常用的内容上,开始时,不要在每个细节上死背死抠,在有一定基础后,再通过实践熟练掌握。

教好C语言是一项艰巨的任务,在教学过程中,要深入浅出,以学生为主体,以教促学,学以致用,引导学生在学习过程中掌握编程技巧,调动学生学习的主动性和积极性。

参考文献:

[1]唐淑玲.高职C语言程序设计教学效果探析[J].中国校园导刊,2011,(1).

[2]由杨.高校计算机C语言实验教学方法初探[J].中国期刊,2009,(1).

9.c语言程序设计试题集 篇九

1). 已知int k;float m=-3;执行语句k=m%2;后,变量k的值是

A.-1

B.0

C.1

D.语句有错误

正确答案:D

2). 下列关于C语言数据文件的叙述中正确的是

A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

正确答案:D

3). 在C语言中,int,char和short三种类型数据在内存中所占用的字节数

A.由用户自己定义

B.均为2个字节

C.是任意的

D.由所用机器的机器字长决定

正确答案:D

4). fseek函数的正确调用形式是

A.fseek(文件指针,起始点,位移量)

B.fseek(文件指针,位移量,起始点)

C.fseek(位移量,起始点,文件指针)

D.fseek(起始点,位移量,文件指针)

正确答案:B

5). 结构化程序设计主要强调的是

A.程序的规模

B.程序的效率

C.程序设计语言的先进性

D.程序易读性

正确答案:D

6). 设x,y,t均为int型变量,执行语句:x=y=3;t=++x||++y;完成后,y的值为

A.不确定

B.4

C.3

D.1

正确答案:

1.2017年9月计算机二级考试C语言满分练习

2.2017年9月计算机二级考试C语言精选练习题

3.计算机二级C语言预测试题

4.计算机二级c语言试题

5.2017年9月计算机二级C语言练习题与和答案

6.2017年9月计算机二级C语言考前指导练习

7.2017年9月计算机二级C语言练习题及答案

8.2017年9月计算机二级C语言练习题与答案

9.2017年9月计算机二级考试C语言强化训练题

10.C 语言程序设计 篇十

本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。

2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。

2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!

11.c语言程序设计试题集 篇十一

关键词:教学模式;任务驱动;c语言程序设计;教学实践

0引言

《C语言程序设计》作为计算机程序设计的基础,是理工类本科学生的一门必修课,尤其是C语言对计算机硬件具有很好的编程能力,使其在工科教学中的生命力越来越强。我们学院在C语言的教学上基本上还是采取传统的教学模式:按照C语言教材自身的内容上课、上机,采取笔试形式考试。这样的教学模式使得学生过分注重C的语法、语句等规则,而忽视了对编程思路的培养,学生独立分析问题和解决问题的能力没有很大的提高,给学生参加全国等级考试以至后续课程的学习留下了隐患。下面就作者在C语言教学过程中的经验谈谈想法。

1传统教学模式

传统教学模式是以教师作为课堂的中心,以广大学生为讲授对象,以课本作为讲授的主线。虽然现在教学环境大都采用多媒体大屏幕,操作方便,易于控制教学内容和节奏,能在规定课时内呈现较多信息量;但是学生往往处于被动学习状态,教学内容难以适应学生的个体差异,所有学生被迫按照老师的讲授速度进行学习,不利于培养思维能力与创造能力。

上机实践课上通常老师会事先布置几道编程题,但是学生上机目标不是很明确,问的问题多数是属于同一类问题。老师不停地在机房各处一一解答,既浪费时间,也没取到很好的效果。学生在机房没有紧迫感,甚至有些学生觉得无事可做,就会打游戏等。这种上机方式不利于培养学生的动手能力和自我解决问题的能力。

学生学不好C语言主要是因为C语言教学的重点不是放在如何解决问题上,而是把大部分的时间放在讲解语法规则和语句格式上,其后果就是学生一拿到任务后首先琢磨如何定义变量,用什么语句,而不是对问题进行合理的分析,考虑最佳算法,这样当然觉得很难而且也设计不出好的程序。学生参加全国等级考试的通过率很低也就不足为怪了。

2“任务驱动式”教学模式

采用“任务驱动式”的教学方法,知识及技能的传授以完成典型“任务”为主,有利于提高学生利用计算机进行自主学习与解决问题的能力。

2.1教学内容的改革

我们把通过全国计算机二级考试作为学习c语言的目标,针对等级考试大纲来确定教学计划以及教学内容。为此,我们从第一堂课起就强调并要求学生通过全国二级考试,既让学生明确短期学习目标,又放眼长远的努力方向,以激发学生进行自主学习的主动性。我们将教学内容分离为几个相对独立的模块,即结构模块、数组模块、指针模块、函数模块和文件模块。模块的内容要循序渐进,把握好由易到难,由简单到复杂的教学过程,否则容易使学生一开始就产生一种畏惧情绪,失去学习兴趣。然后,力求概念准确,分散难点。各模块的教学目标要十分明确,教学量适中,让学生很容易把握住教学要点,理解和掌握教学内容。

2.2设计好实验任务

实验任务的设计包括任务的提出与分解、最终达到的目标、解决问题的方法等。目的性要强,任务要明确,这样才能很好地缓解计算机基础课程实验教学中学生无事可做,玩游戏、上网聊天等现象。要培养学生限时编程的良好习惯,要求学生在规定的时间内编写和调试好给定的程序。通过这些基本功的训练,学生在具备了扎实的计算机程序设计能力后,就较容易通过全国计算机二级考试。

在程序设计语言教学中,算法是程序设计的灵魂,学生编写不出程序的首要原因是设计不出—个合适的算法。因此,在教学中应对常用的算法结合典型实例进行详细地讲解,强调算法的步骤,让学生对算法有比较深刻地了解,并鼓励学生从不同角度去思考问题,对于同一个问题的解决用多种方法来实现。这样有助于拓展学生的思维,增加学生对学习C语言的兴趣。

例如:计算n!

我们可以采用递归法:

2.3学习成绩评价方式的改革

采用“笔试+上机考试”的评价方法可以提前让学生体验全国等级考试的过程。同时,两种形式考试都通过才算这门课程通过,也能促使学生在学习c语言的基本知识之外加强编程实践,让学生学到c语言的语法规则的同时也掌握了程序设计的方法。

3结束语

12.“C语言程序设计”教学的探讨 篇十二

《C语言程序设计》这门课程是在各高校“计算机”专业及其他相关专业广泛开设的一门专业计算机语言课。许多计算机证书也要求C语言。C语言这门课程可以使学生掌握各种常用算法和程序基本设计思想, 是计算机专业后续课程的重要基础课程, 也是非计算机专业的重要基础课程。但由于C语言课程有较多的新概念和思想, 较为抽象和复杂, 对初学者来说有一定的难度, 实际教学效果也不理想。针对这种情况, 总结笔者和其他教师的教学经验, 对存在的问题、解决的办法和教学方法做了几点探讨。

1 存在的问题

学习《C语言程序设计》课程中存在的主要问题有: (1) 不少同学对C语言这门课认识不足, 认为C语言没用、过时了, 应该学其他面向对象的程序设计语言如C++、Java等; (2) 有部分学生基础较差, 高中阶段未学过计算机语言, 还有些学生上大学以前连计算机也未碰到过, 直到上计算机基础课才碰到计算机。这些学生觉得C语言很难学, 有畏惧心理; (3) 在学习过程中, 大部分同学数据类型、运算符、表达式、顺序结构和分支结构学得较好。但一学到循环结构就不行了。作业、实验都不太会做。这样导致以后的数组、函数、指针、文件等都学得不好。考试的时候, 循环以后的知识失分较多; (4) 有不少学生对实验课不重视, 抱着应付的态度。上机前不预习, 不编好程序。上机看别人的, 甚至玩游戏和上网, 回去抄一下实验报告。

以上几个问题影响了教学效果。

2 解决的方法

上第一节课的时候, 可以先讲讲C语言的历史, 激发起学生学习的热情。比如:C语言是在B语言的基础上发展起来的。1970年Ken Thompson以BCPL语言为基础, 又做了进一步简化, 设计出了很简单的而且很接近硬件的B语言, 并用B语言编写了UNIX操作系统。但B语言过于简单, 功能有限。后来, D.M.Ritchie在B语言的基础上设计出了C语言。C语言既保持了BCPL和B语言的优点 (精练, 接近硬件) , 又克服了它们的缺点。

再讲讲C语言的用处。例如:首先C语言应用十分广泛, 从底层的操作系统、编译器、硬件驱动, 到高层的行业软件后台服务、中间件等等。同时C语言在工业控制、智能仪表等应用也很广泛。其次, C语言虽然是面向过程的, 但要想学好如:C++、Java等面向对象的程序设计语言必须以面向过程语言为基础的, 特别是对于计算机专业人员。同时, C语言也是数据结构、操作系统等后续专业课程的基础。

对于某些基础较差的学生, 在学C语言之前只学过计算机基础这门课, 对计算机了解还不很深入, 学习C语言的难度较大。因此在授课中要提高学生学习这门课程的自信心, 并结合C语言的特点及其结构化程序设计方法逐步消除学生的畏惧心理。日常教学工作中具体做法有:在批改作业的时候不要一味地追求准确, 若学生积极地思考了, 就要给予肯定, 提高学生分析问题的能力;在上实验课的时候, 让学生在程序调试中寻找乐趣, 不断培养学生耐心细致的工作作风。

用循环来编写程序的时候, 也会用到以前的知识。这里有综合能力的考验, 也有设计算法的问题, 对初学者的确有难度。在教学过程中应做到课堂教学的内容少而精, 应该合理地选配和组织那些基本的、核心的及学生在预习中会碰到的难点, 作为讲课重点。对于延伸的内容, 让学生自己去自学。鼓励学生去多读、多练、多思考。编好的程序多上机调试, 来提高编程能力;对于经典的例子和算法, 要求学生去背、去理解, 学习解决问题的方法, 从而能解决相同类型的题目。

C语言课程是一门实践性很强的课程, 不通过上机实践要学好这门课是不太可能的。针对某些学生对实验课不重视的问题, 可通过两种方法:第一, 改革实践教学环节。上机课尽量多一些, 而且让上机课和理论课时间近一些。这样使得学生对理论课的知识有印象, 在上机的时候可以消化它、吃透它。另外, 实验教学必须做到循序渐进, 对所学的内容都要有相应的习题。既要有简单的、经典的, 也要有挑战性的、新颖的题目。上机实验前, 学生必须根据题目编好程序。上机时输入程序, 再通过调试程序来修订语法错误, 排除逻辑错误, 得到正确结果, 从而提高编程能力。学生看到程序结果, 会引起上机的兴趣, 从而提高学生的创新能力, 最后能学好这门课程。第二, 加大实验考核。首先要对上机过程和结果对学生进行考核, 既要看结果, 也要看过程。鼓励学生在程序方面进行精简优化, 并做好记录。另外, 还要对实验报告进行考核, 实验报告应包括以下几个内容:实验题目、实验目的、程序清单、运行结果和实验小结。看看程序对不对, 结果对不对, 有什么体会否。综合上机的记录, 给学生一次实验的成绩。实验成绩可占总成绩的15%左右。

3 课程设计在本课程中的作用

任何一门程序设计语言都离不开课程设计, 通过课程设计使学生对所学知识综合运用、前后联系和融会贯通。通过设计培养了学生分析、解决实际问题的能力, 巩固了所学知识。在指导课程设计的时候, 要给出7~8道不同的题目, 每个题目分为基本功能、拓展功能和创新功能。基本功能是每个学生在掌握大纲的基础上, 根据所学的内容, 自己查些资料所能完成的功能。教师只是给一些提示, 并严格把关, 严禁抄袭。培养学生独立工作能力。拓展功能是给学有余力的、想得优的学生准备的 (只完成基本功能的学生最多得良) 。教师不应提供解题方法和思路, 最多讲一下思考方向。让学生自己去思考、查资料来解决问题, 这样学生肯定有很大的收获。创新功能是老师自己也没有想到的功能, 如果学生想到并做出来, 可以加分。这样, 可以拓宽学生的视野, 培养学生的创新能力。经过课程设计以后, 学生对所学内容的理解, 运用和编程的能力有很大的提高。同时, 建议课程设计可以放在期末考试以前。这样, 期末考试成绩会有一定程度上的提高。

参考文献

[1]谭浩强.C程序设计 (第3版) [M].北京:清华大学出版社, 2005.

[2]陶静.C语言教学方法探讨[J].东南大学学报 (哲学社会科学版) , 2006 (8) .

13.C语言程序设计2 篇十三

1、C语言语句的分类:

表达式语句、控制语句、函数调用语句、空语句和复合语句。

表达式语句:如a=3;c=a+b;等

控制语句:如:if(a>b)c=a;for语句和while语句和switch语句等

函数调用语句:函数名(实参表);

空语句: ;这条语句的含义是什么也不做。

复合语句:{语句1;语句2;„„},其功能上相当于一条语句。

2、数据的输入和输出

(1)输入函数

scanf()函数,格式为scanf(格式控制,输入项表),如scanf(”%d,%f”,&a,&b);

该函数的运行过程是人首先根据双引号内的格式输入数据,然后电脑把这些数据存放到输入项表中的地址中去。Getchar()函数,该函数为无参函数,即括号内没有参数,其作用是要求人在键盘上输入一个字符。

(2)输出函数

Printf()函数,格式为printf(格式控制,输入项表),如printf(“%d,%f”,a,b);

该函数的运行过程是计算机从输入项表中去获取要输出的数据,然后根据双引号中的格式控制来输出。

Putchar()函数,如putchar(a);其作用就是输入变量a的字符数据。

3、格式控制说明

(1)格式控制包含两部分:一是普通字符,这部分内容被简单的复制到显示;二是%后跟着的字符为格式字符。如:printf(“a=%d,b=%f”,a,b);这条语句中“a=”、“,”和“b=”都是普通字符。

(2)格式字符

%c:输出一个字符;

%d:输出一个整型数;

%ld:输出一个长整型数;

%f:输出一个实数;

%lf:输出一个双精度的实数;

(3)附加说明

%后有+或-号:加号表示右对齐,减号表示左对齐,默认为加号;

14.c语言课程设计设计报告 篇十四

C语言是一门通用计算机编程语言,应用广泛。下面是小编为大家整理的关于c语言课程设计的设计报告,欢迎大家的阅读。

高等职业教育的目标及侧重点不同于普通高等教育,其培养的学生在毕业后应能直接上岗,具有熟练的实践操作技能。教育部《关于以就业为导向深化高等职业教育改革的若干意见》中指出,高职教育应“坚持培养面向生产、建设、管理、服务第一线需要的‘下得去、留得住、用得上’,实践能力强、具有良好职业道德的高技能人才”。

因此,加强实践性课程教学,对保证人才培养质量显得尤为重要。我院为贯彻《关于全面提高高等职业教育教学质量的若干意见》精神,针对区域经济发展的要求,灵活调整和设置专业课程,以就业为导向,加快专业课程对应的课程设计改革。目前,我院按照由浅入深、不断深化的教学规律,构建了实践教学三层次四环节的实践课程体系。实践教学三层次包括基本技能、专业拓展、综合创新,四环节包括实验、实习实训、设计和课外实践。“C语言课程设计”是我院信息类专业的必修专业基础课程设计,在“C语言程序设计”课程教学结束后的下一学期进行,历时2周,40学时。课程开设的目的在于培养学生分析问题和解决问题的能力,为学生提供一个动手、动脑、独立实践的机会。

21项目教学法“项目教学法”是基于建构主义教学理论的一种教和学的模式。著名的瑞士心理学家皮亚杰认为,知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义建构的方式而获得的。美国项目管理专家约翰·宾认为:“项目是要在一定时间里,在预算规定范围内需达到预定质量水平的一项一次性任务。”

“项目教学法”是通过实施一个完整的项目而进行的教学活动,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习,自主地进行知识的建构,在课堂教学中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。因此,在教学活动中,教师将需要解决的问题或需要完成的任务以项目的形式交给学生,在教师的指导下,以小组工作方式,由学生自己按照实际工作的完整程序,共同制定计划,共同或分工完成整个项目。

在项目教学中,学习过程成为一个人人参与的创造实践活动,注重的不是最终的结果,而是完成项目的过程。在高等职业技术教育中,项目是指以生产或制作一样具体的、具有实际应用价值的产品的工作任务。在技术领域,很多小产品或一些复杂产品的模型都可以作为项目,如:在信息类专业,可以开展微机组装、网站建设、信息管理系统开发、局域网构建、单片机制作、多媒体课件制作等项目;在电子类专业,可以开展报警器、LED、门铃、家电组装等项目;在商业、财会和服务行业,所有具有整体特性并有可见成果的工作也都可以作为项目,如商品展示、产品广告设计、营销策划等。

22项目教学法的基本特征项目教学法与传统的教学法相比,有很大的区别,主要表现在改变了传统的3个中心:以教师为中心转变为以学生为中心;以课本为中心转变为以“项目”为中心;以课堂为中心转变为以实际经验为中心。项目教学法具有以下特点:

实践性。项目“源”于企业,项目的主题与真实世界密切联系,由浅入深,选择的项目具有典型性、实用性。

自主性。提供学生根据自己的兴趣选择内容和展示形式的决策机会,让学生能够自主地进行学习,从而有效地促进学生创造能力的发展。

发展性。长期项目与阶段项目相结合,构成了实现教学目标的认知过程。

评价特殊性。项目型教学的评价注重学生在项目活动中能力发展的过程,测评内容包括学生参与活动各环节的表现及作业质量,避免了传统的一张试卷定成绩的弊端。测评可以采用自评、小组评、教师综合评等方法。教师只有明确并抓住项目化教学特点,才能更好地完成教学目标。

31教学内容为了更好地开展课程设计教学,经过多次实践和摸索,总结出学生在具体实施项目中一般存在2个方面的知识不足:

第一,在教学内容上,由于前导课程在教学上受学时影响,很多教师对指针、结构体、共用体和文件基本操作的知识介绍不甚完善、系统,更难谈上辅以实例加以消化。对此,针对学生在这些知识点上的掌握程度,利用4~6个学时,实施区别式的、辅导性的、实例化教学。

第二,学生对项目管理知识知之甚少,针对此情况,采用2个阶段实施有别于常规教学的补课行动。第1阶段为项目准备阶段,利用2~4个学时,安排曾经做过项目且做得比较好的学生,现身介绍项目的准备工作、项目实施过程要完成的工作、项目验收及作业提交的工作等。在学生介绍中,教师穿插讲解,辅以点评。第2阶段为项目实施阶段,教师应针对学生发生的问题,及时给予指导,直到学生弄懂为止。

32教学要求切实保证教学质量和教学效果,本着“学以致用”的原则,要求学生做到以下3点:第一要做到“学有三备”,即:在项目实施前做好知识储备,在项目实施中做好安全防备,项目结束时做好被评准备。第二要写好“三书一报告”。“三书”即每个项目组要做需求规格说明书、概要设计说明书、详细设计说明书,“一报告”即人人都要做课程设计报告。第三要做“四自”参与者。“一自”即自律,要求学生自觉履行学生守则和项目实施有关规则,不迟到、不早退、不缺席,实施点名制度,若无特殊原因,有5次旷课者自愿以重修论处;“二自”即自尊,要求学生尊重知识、尊重学习规律、尊重项目组成员、尊重教师、尊重自己;“三自”即自信,要求学生相信自己能够按时、按量、按质完成工作内容,遇到困难时,沉着、冷静,理性地寻找问题解决的办法;“四自”即自强,要求学生不满足自己已有的成绩和以往与课题项目组共同取得的成绩,用创新和超越的思想,做出比以前哪怕是前进一小步的事情。同时也要求教师做好相应的工作,如做好项目整体规划、精心准备、努力激发学生参与行为、为人师表、表扬为主、批评为辅、多分析、精点评等。

33项目实施进程项目教学法是一种生动、灵活、多样化的教学方法。在项目实施过程中,既不能生搬硬套地利用一个时间标准,又不能影响项目实施的整体进程,因此对时间的灵活处理是非常关键的,也是值得商榷的。

34明确项目内容,帮助学生立项立项首先要审题。当学生拿到项目列表时,最不能忽略的问题,就是提醒学生审题。审题恰当对学生以后开展各项工作是关键。审题时,学生首先要考虑自己的长、缺处,做到扬长避短,也就是说审题就是学生自己审自己完成该项目有多大的能力,有没有信心。只有学生明白自己,才可以避免以后实施项目过程中走弯路。同时既要建议学生在组建项目组时,考虑所在组的其他学生的长处和短处,又要尽量避免使被学生认定的差等学生没人愿意与其组合,而成绩好的学生又抱团的现象发生。

根据近几年带课程设计的经验,关于如何合理选择项目,建议教师应从学生的角度考虑以下4个因素,协助学生做好选题:

规模。项目规模太大会影响项目的完整性,项目规模太小难以体现课程的实践性。

难度。项目难度一定要适中,既要激发学生学习的兴趣又不能影响学生的自信心。

实用性。项目的选择应该是现实世界真实的工作任务,具有一定的现实和实用性。

上一篇:五年级爱心活动下一篇:校园电子地图