武汉理工大学继续教育本科C语言程序设计
- 格式:doc
- 大小:2.01 MB
- 文档页数:22
《C语言程序设计》课程教学大纲课程编号:sk323课程名称:C语言程序设计英文名称:C Language Programming课程类型:学科基础课课程要求:必修学时/学分:56/3.5(讲课学时:36实验学时:0上机学时:20)适用专业:测控技术与仪器、电子信息工程、电子科学与技术、通信工程、智能科学与技术一、课程性质与任务本课程是大学理工科非计算机专业学生必修的一门公共基础课,通过本课程的学习和上机实验,使学生掌握C 语言这个最为流行的编程工具。
使学生了解C 语言的基本编程思想,初步掌握C 的基本程序设计技巧,重点培养学生阅读C 程序和使用C 语言进行简单实用程序设计的能力。
初步培养学生进行软件设计和系统开发的能力,为今后的学习及工作打下一个良好的基础。
二、课程与其他课程的联系先修课程:大学计算机基础。
后续课程:单片机原理及应用、单片机课程设计、毕业设计等。
C语言课程是本专业计算机软件工具类课程的基础,对学生后续工程实践教学过程有重要作用,是学生理解计算机工具特点,理解并掌握程序设计、软件开发等工程实践应用的重要基础课程,是学生未来工程能力的基础。
其次,C语言课程是本专业学生理解算法和算法表达的基础课程。
学生须理解常用计算机指令执行的宏观效果;学生在本课程中还需要建立起算法表达和计算机工具之间的逻辑联系,这是后续专业课程中把复杂算法转化为工程化指令的基础能力。
三、课程教学目标1.了解C语言的特点、用途以及上机运行C语言程序的基本步骤;掌握C语言各种数据类型的定义与使用方法;掌握C语言的三种基本结构,并能编制简单程序;掌握C语言函数的定义、调用及说明的方法;掌握C语言结构体、文件的概念及使用方法;了解C语言指针、位运算的概念及使用。
(支撑毕业能力要求1.1,10.1)2.具备熟练应用VC++集成环境进行C语言的编写、编译与调试的能力。
(支撑毕业能力要求5.1,1.2,3.1)3.具备初步的高级语言程序设计能力,能够掌握一定软件开发技术,具备一定的软件开发能力(支撑毕业能力要求5,7,12)四、教学内容、基本要求与学时分配五、其他教学环节(课外教学环节、要求、目标)课外教学环节:辅导学生自学下述内容:1.下载并安装VC++6.0软件包并练习调试、设置软件开发环境;2.简单程序的编译、连接和执行方法;3.计算机基本结构;4.计算机中数的表示和存储方法;5.C语言的历史沿革;6.C 语言特点;7.断点设置、单步执行调试程序方法;8.算法的流程图表达方法。
单选题1. C语言中,若缺省定义函数返回值类型,则该函数默认返回值类型是()。
(A) void (B) long (C) int (D) doubleC难度:较易??分值:1.0??2. 下面叙述错误的是()。
(A) C源程序可由一个或多个函数组成(B)(C)(D) 注释说明部分只能位于C源程序的最前面D难度:较易??分值:1.0??3. 下面叙述错误的是()。
(A)(B)(C) 预处理命令行必须以分号结束(D) C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率D难度:较易??分值:1.0??4. ()语句符合C语言语法。
(A)(B)(C)(D)B难度:较易??分值:1.0??5. C语言中,数组名作为函数调用的实参时,下面叙述正确的是()。
(A) 传递给形参的是数组元素的个数(B) 传递给形参的是数组第一个元素的值(C) 传递给形参的是数组中全部元素的值(D) 形参数组中各元素值的改变会使实参数组相应元素的值同时发生变化D难度:较易??分值:1.0??6.(A)(B)(C)(D)A难度:较易??分值:1.0??7. 下面关于字符数组的叙述中,错误的是()。
(A)(B)(C)(D)A难度:较易??分值:1.0??8. 下面叙述正确的是()(A) 每行最多只能写两条语句(B) 程序中必需含有自定义函数(C)(D)D 难度:较易??分值:1.0??9. 以下叙述中正确的是( )。
(A)(B)(C)(D)A 难度:较易??分值:1.0??10. ( )是关于C 语言数据类型的正确叙述。
(A)变量必须先定义后使用(B)不允许使用空类型(C)枚举类型不是基本类型(D)数组并不是构造类型A 难度:较易??分值:1.0?11. ( )为正确的用户标识符。
(A)(B)(C)(D)D 难度:较易??分值:2.0??12. C 语言的下列运算符中,优先级最高的运算符是( )。
(A)(B)(C)(D)A 难度:较易??分值:2.0??13.(A) 16, 8(B) 8, 8(C) 16, 16(D)8, 16 A 难度:较易??分值:2.0??14. 不能对二维数组a 进行正确初始化的语句是( )。
实验二 选择结构的程序设计1.编程计算下面的分段函数。
4x-8 -1≤x <0y= 3x 2+10x-1 0≤x <18x 3-3x 2+2x-1 1≤x <2 (1)事先编好程序和流程图。
要求用if 语句结构实现,注意数据类型和输入提示语句。
#include <stdio.h> main ( ) {float x,y;printf ("input x:\n"); scanf ("%f",&x); if (x>=-1&&x<2) {if (x>=-1&&x<0)y=4*x-8;else if (x>=0&&x<1)y=3*x*x+10*x-1;elsey=8*x*x*x-3*x*x+2*x-1;printf("y=%10.2f",y); } elseprintf ("DATA ERROR!"); }(2)将程序运行六遍,分别从键盘上输入-1,-0.5,0,0.5,1,1.5这六个数,记录下运行结果并核对结果的正确性。
(3)再将程序运行二遍,分别从键盘上输入-3.5和2二个数,记录下运行结果并核对结果的正确性。
键盘的输入 分析结果 运行结果 调试说明键盘输入-1 键盘输入-0.5 键盘输入0 键盘输入0.5 键盘输入1 键盘输入1.5键盘的输入观察到的运行结果程序的错误之处和调试④修改程序,使之能正确处理任何数据。
当输入数据大于等于2或小于-1时,通知用户“Data Error ”,程序结束。
4.水果店有苹果,一级5.50元/kg ,二级4.20元/kg ,三级3.00元 /kg ,四级2.50/kg ,输入苹果的等级、数量以及顾客的付款数,显示出苹果的等级、数量、应付款数以及找给顾客的钱数。
(1)事先编好程序,分别用if 语句和用switch 语句结构实现,要求程序能正确处理任何数据。
《C语言程序设计》实验报告
实验课程名称C语言程序设计
开课学院计算机科学与技术学院指导教师姓名
学生姓名X X
学生专业班级信息管理与信息系统1101班2012—2013学年第1学期
实验一顺序结构的程序设计
题目一:
程序代码:
题目二:
程序代码:
实验二:选择结构的程序设计题目一:
程序代码:
运行结果:
题目二
程序代码:
运行结果:
实验三循环结构的程序设计题目一
程序代码:
运行结果:
题目二:程序代码:
运行结果:
实验四数据和指针应用的程序设计题目一
程序代码:
运行结果:
运行结果:
程序代码:
运行结果:
实验五函数应用的程序设计程序代码:
运行结果:
程序代码:
运行结果:。
武汉理工大学《C语言程序设计》期末考试试卷(A卷)(2011级各专业)一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是。
A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是A、ABCB、abcC、a_bcD、ab.c3、一个C语言程序是由。
A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是。
A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是。
#include<stdio.h>main(){int x;float y;scanf("=%f",&x,&y);}A、12345B、123C、45D、3458、若有以下定义int a,b; float x,则正确的赋值语句是。
A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是。
#include<stdio.h>{ int i=10,j=10;printf("%d,%d\n",++i,j--); }A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是。
#include<stdio.h>main(){ char c1='A',c2='Y';printf("%d,%d\n",c1,c2);A、A,YB、65,65C、65,90D、65,8911、下列运算符中优先级最高的是。
课程设计任务书学生姓名:李文瑶专业班级:测控1103班指导教师:胡剑韩雪工作单位:机电学院测控系题目: 测控系统应用软件实训——产品质量监测系统设计初始条件:日光灯试验台是用来检测点亮日光灯的整流器或逆变器是否合格的装置,通过多次测量灯管两端的电压和电流,再通过分析,来验证整流器或逆变器工作是否正常。
单个整流器或逆变器有不同功率之分,也有可以同时点亮日光灯个数多少之分。
检测一个整流器或逆变器,下位机大概会产生30组左右的电压和电流数据。
本实训的目标是设计一个产品质量监测系统,保存日光灯试验台下位机产生的数据信息,并时行产品合格检查、产品质量查询、分类统计和报表打印操作,以期使产品的质量管理工作系统化、规范化、自动化,从而提高生产效率。
设计功能要求:1、仪器检测结果的输入,包括记录号、检修日期、仪器编号、仪器类型、仪器功率、仪器点亮日光灯个数、检测人员、检测记录。
除检测人员和检测记录由工作人员在计算机上直接输入外,其他项都通过串口读入。
2、仪器检测数据的输入,包括记录号、仪器编号、检测电压、检测电流。
一条仪器检测结果对应多条检测数据。
3、仪器检测数据以图形方式显示变化趋势。
4、仪器检测信息的查询、修改和删除。
5、仪器类型和功率代码管理。
6、仪器检测信息的报表和打印处理。
(选做)7、密码和权限管理,不同权限用户具有不同的操作权力。
(选做)系统功能模块设计:对上述各项功能进行集中分块,按结构化程序设计的要求,得到如图1所示的系统功能模块图。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.合理进行数据库设计,数据项和数据结构包括以下部分:1)仪器检测结果信息表,保存检测结果记录,包括:记录号、检测日期、仪器编号、仪器类型、仪器功率、仪器额定点亮日光灯个数、仪器温升、检测时间间隔、检测人员、检测记录。
2)仪器检测数据信息表,保存检测数据记录,包括:记录号、仪器编号、检测电压、检测电流。
注:在Visual C++ 6.0编译环境中亲自调试通过,但不保证在Turbo C 中通过。
实验二 选择结构的程序设计(题目当初没抄下来,这是根据程序整理的)1.编程实现分段函数⎪⎩⎪⎨⎧<≤-+-<≤-+<≤--=2112381011030184242x x x x x x x x x y#include<stdio.h> main() { float x,y; printf("Please input x:"); scanf("%f",&x); if (x<-1||x>=2) printf("Data Error\n"); else { if (x>=-1&&x<0) y=4*x-8; if (x>=0&&x<1) y=3*x*x+10*x-1; if (x>=1&&x<2) y=8*x*x*x*x-3*x*x+2*x-1; printf("\ny=%f\n",y); } } 2. 苹果有三个等级,一级5.50元/斤,二级3.00元/斤,三级2.50元/斤。
编写程序,输入苹果的等级,购买的数量和所付的钱数,输出等级,购买的数量、应付钱数和找零。
#include<stdio.h> main() { int level; double weight,pay,money,charge; printf("Please input the level:"); scanf("%d",&level); printf("Please input the weight you want:"); scanf("%lf",&weight); printf("Please input the money you pay:"); scanf("%lf",&pay); if (level<1||level>4||weight<0) printf("Data Error\n"); else{ if (level==1) money=weight*5.50; else if (level==2) money=weight*4.20; else if (level==3) money=weight*3.00; else if (level==4) money=weight*2.50; charge=pay-money; printf("\nLevel:%d\nweight:%g\n",level,weight); printf("money:%g\ncharge:%g\n\n",money,charge); } }实验三循环结构1.编程计算1!+2!+3!+4!+5!●分别用单层循环和双层循环实现●考虑∑∑==201101iiii!和!#include<stdio.h>main(){int i,x;double j,k,sum;printf("Please input a number:");scanf("%d",&x);//用单层循环for(sum=0,j=1,i=1;i<=x;i++){j*=i;sum+=j;}printf("The result is %lf\n",sum);//用双层循环for(sum=0,i=1;i<=x;i++){for(k=1,j=1;j<=i;j++) k*=j;sum+=k;}printf("The result is %lf\n",sum);}2.共20个评委给选手评分,去掉1个最高分,去掉1个最低分,其余18名评委的平均分即选手最终得分#include <stdio.h>main(){double score,min,max,avg=0;int i;//下面是为了输入第一个数printf("Please input 20 scores...\n");printf("Score 1: ");scanf("%lf",&score);min=score;max=score;avg+=score;// 下面为了输入剩余19个数for(i=2;i<=20;i++){do{printf("Score %d: ",i);scanf("%lf",&score);}while(score<0);if(score>max) max=score;avg+=score;}avg=avg-min-max;avg/=18;printf("\nThe average score is %lf:\n",avg);}实验四数组和指针的应用1.定义一个有10元素的一位数组count,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排序后的数组输出(1)数组方法#include<stdio.h>main(){int count[10],t,i,j;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&count[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (count[i]<count[j]){t=count[i];count[i]=count[j];count[j]=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d ",count[i]);}(2)指针方法#include<stdio.h>main(){int count[10],t,i,j,*p=count;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&p[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (*(p+i)<*(p+j)){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d ",count[i]);}2.输入2个字符串,将二者连接并输出,再将连接后的字符串反向排列并输出,并求连接后字符串的长度#include<stdio.h>#include<string.h>main(){int i,len;char a1[51],a2[26],t[51];printf("Please input 2 strings:\n");gets(a1);gets(a2);strcat(a1,a2);printf("The joint string is: %s",a1);len=strlen(a1);printf("\nThe length of the linked string is: %d\n",len);for(i=0;i<len;i++)t[i]=a1[len-i-1];t[len]=0;strcpy(a1,t);printf("The reversed string is: %s\n",a1);}实验五函数应用的程序设计1.要求是:编写一函数,统计字符串中字母、数字、空格和其他字符的个数在主函数中输入字符串并输出统计结果值传送:#include<stdio.h>void fun(char a,int *b){if(a>='A'&&a<='Z'||a>='a'&&a<='z')b[0]++;else if(a>='0'&&a<='9')b[1]++;else if(a==32)b[2]++;else b[3]++;}main(){char a[50];int b[4],i,j,k;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);k=0;while(a[k]!=0){fun(a[k],b);k++;}printf("The string have %d letters, %d numbers, %d spaces, %d other chars\n",b[0],b[1],b[2],b[3]);}}地址传递:#include<stdio.h>void fun(char *a,int *b){int i=0;while(a[i] != 0){if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')b[0]++;else if((a[i]>='0')&&(a[i]<='9'))b[1]++;elseif(a[i]==32)b[2]++;else b[3]++;i++;}}main(){char a[50];int b[4],i,j;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);fun(a,b);printf("\nThe string have %d letters, %d numbers, %d spaces, %d other chars",b[0],b[1],b[2],b[3]);}}。
单选题 1.(A)包含1个字符(B)包含2个字符 (C)包含3个字符 (D)是非法表示C 难度:较易 分值:1.02.(A)108 (B) 18 (C) 12 (D)2 A 难度:较易 分值:1.03.(A)5 18 7 16 9 12(B)15 18 17 16 19 12(C)15 8 17 6 19 2(D)5 8 76 9 2A难度:较易分值:1.04.(A) -1 (B) 2 (C) 1 (D) 0D难度:较易分值:1.05.(A) 2 (B) 3 (C) 6 (D) 7D难度:较易分值:1.06.(A) S是一个结构体类型名(B) p是一个结构体类型名(C) p是指向结构体类型S的指针类型名(D) no是结构体类型S的成员B难度:较易分值:1.0 7.(A)(B)(C)(D)B难度:较易分值:1.0 8.(A)(B)(C)(D)B难度:较易分值:1.09.(A)(B)(C)(D)D难度:较易分值:1.010.(A) 0 (B) 3 (C) 4 (D) 无限C难度:较易分值:1.0 11.(A)(B)(C)(D)C难度:较易分值:2.0 12.(A)(B)(C)(D)B难度:较易分值:2.0 13. 对二维数组的正确定义是()(A)(B)(C)(D)C难度:较易分值:2.0 14.(A)(B)(C)(D)C难度:较易分值:2.015.(A) 11 (B) 10 (C) 9 (D) 8B难度:较易分值:2.016. 以下叙述正确的是()(A) 宏名必须用大写的英文字母表示(B) 宏定义不仅是符号替换,也可以赋值(C) 宏替换是在程序编译时完成的,不占用程序运行时间(D) 引用带参数的宏时,实际参数与宏定义中的形式参数类型应一致B难度:较易分值:2.017. 以下属于C语言保留字的是()(A) fopen (B) include (C) get (D) unsignedD难度:较易分值:2.0 18. 在循环语句的循环体中,break语句的作用是()。
(A) 继续执行break语句之后的循环体各语句(B) 提前结束循环,接着执行该循环后续的语句(C) 结束本次循环(D) 暂停程序的运行C难度:较易分值:2.0 19. 下列关于C语言函数的描述中,错误的是()。
(A) 函数的定义可以嵌套,但函数的调用不可以嵌套(B) 凡不加类型说明的函数,其返回值默认为整型(C) 函数的返回值可以通过函数中的return语句获得(D) 可以定义有参函数,也可以定义无参函数A难度:较易分值:2.0 20.(A)(B)(C)(D)A难度:较易分值:2.0 21. 下列语句中,符合C语言语法的赋值语句是()。
(A)(B)(C)(D)C难度:较易分值:2.022. 字符数组s不能作为字符串使用的是()(A)(B)(C)(D)A难度:较易分值:2.023.(A)(B)(C)(D)A难度:较易分值:1.024.(A) 0 (B) 3 (C) 12 (D) 15D难度:较易分值:2.025.(A) 计算文件wj.txt的起始地址(B) 计算文件wj.txt的终止地址(C) 计算文件wj.txt的长度(D) 将文件指针定位到文件末尾C难度:较易分值:2.026. 下面关于数组的叙述中,正确的是()(A) 定义数组后,数组的大小是固定的,且数组元素的数据类型都相同(B) 定义数组时,可不加类型说明符(C) 定义数组后,可通过赋值运算符 = 对该数组名直接赋值(D) 在数据类型中,数组属基本类型A难度:较易分值:2.027.(A)(B)(C)(D)A难度:较易分值:2.028.(A)0和1 (B) 1和9 (C) 0和9 (D)1和10 B 难度:较易 分值:2.029.(A)(B)(C)(D)A 难度:较易 分值:2.030.(A)1 (B) 3 (C) 14 (D)28 A 难度:较易 分值:2.031. 下列中错误叙述的是( )。
(A)C 语言中的文件是一个字节流或二进制流(B)可以以只读方式、只写方式或读写方式打开一个文本文件(C)在程序中对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据(D)当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失C 难度:较易 分值:1.032.(A)7 (B) 8 (C) 9 (D)80 C 难度:较易 分值:2.033.(A)函数调用(B)int 型表达式 (C)double 型表达式 (D)非法表达式B 难度:较易 分值:2.034.(A)-3 (B) 3 (C) 65539 (D)数据不确定 C 难度:较易 分值:2.035.(A) 16,16 (B) 16,-16 (C) -7,17 (D) 17,-7D难度:较易分值:1.036.(A) int (B) void (C) float (D) 不确定A难度:较易分值:1.037.(A)(B)(C)(D)C难度:较易分值:2.038. 下面叙述错误的是()(A) 数组中每一个元素都属于同一个数据类型(B) C语言数组名称是数组在内存中的首地址(C) C语言数组长度在定义数组时可不作确定(D) C语言规定可逐个引用数组元素但不能一次引用整个数组C难度:较易分值:2.039.(A) 3 (B) 4 (C) 0 (D) 1B难度:较易分值:2.040.(A) 1 (B) 0 (C) -1 (D) trueB难度:较易分值:2.0(A) 0,0 (B) 10,3 (C) 13,7 (D) 7,13D难度:较易分值:1.042.(A) 6 (B) 0 (C) 1 (D) 5B难度:较易分值:1.043. 测试文件是否结束函数的函数名是()(A) feof (B) EOF (C) eof (D) FEOFA难度:较易分值:2.0(A)(B)(C)(D)D难度:较易分值:1.0 45. 以下叙述错误的是()(A) 存放地址的变量称为指针变量(B) NULL可以赋值给任何类型的指针变量(C) 一个指针变量只能指向类型相同的变量(D) 两个相同类型的指针变量可以作加减运算B难度:较易分值:2.0(A)(B)(C)(D)A难度:较易分值:2.0 47.(A)(B)(C)(D)C难度:较易分值:1.0(A)(B)(C)(D)C难度:较易分值:2.049.(A) 1 (B) 3 (C) 7 (D) 11C难度:较易分值:2.050.(A) 11 (B) 10 (C) 9 (D) 8B难度:较易分值:2.051. 在C语言中,确定函数返回值的类型由()(A) return语句中的表达式类型决定(B) 调用该函数的主函数类型决定(C) 调用函数时临时决定(D) 定义函数时所指定的函数类型决定D难度:较易分值:2.052.(A) abcd (B) ab (C) abcd0 (D) abcd0fA难度:较易分值:2.053.(A) n (B) u (C) e (D) mC难度:较易分值:2.054.(A).1 2 (B) 2 3 (C) 3 3 (D)3 4 D 难度:较易 分值:2.055.(A)0 (B) 1 (C) 9 (D)20 A 难度:较易 分值:2.056. 可以用作C 程序标识符的一组是( )(A)(B)(C)(D)A难度:较易分值:2.0 57.(A) 指向一维数组的指针变量(B) 指向二维数组的指针变量(C) 指向一个整型变量的指针变量(D) 指向整型函数的指针变量D难度:较易分值:2.0 58.(A) 4 (B) 5 (C) 8 (D) 9A难度:较易分值:2.059.(A) -1 (B) 0 (C) 1 (D) 5C难度:较易分值:1.060. 下面叙述正确的是()。
(A) .for循环只能用于循环次数已经确定的情况(B) for循环是先执行循环体语句,后判断表达式(C) 在for循环中,不能用break语句跳出循环体(D) for循环的循环体可包含多条语句,但必须用花括号{}括起来D难度:较易分值:1.0。