单片机课设——频率计的设计——C语言编程

单片机课设——频率计的设计——C语言编程
单片机课设——频率计的设计——C语言编程

沈阳工程学院

┊┊

课程设计

设计题目:频率计程序设计

系别自控系班级测控本091

学生姓名学号

指导教师职称教授

起止日期: 2012 年1月2日起——至2012 年1月13日止

沈阳工程学院

课程设计任务书

课程设计题目:频率计程序设计

系别自控系班级

学生姓名学号 2009308119

指导教师职称教授

课程设计进行地点: F422

任务下达时间: 2012 年 1 月 2 日

起止日期:2012年1月2日起——至2012年1月13日止教研室主任 2012 年1月2日批准

频率计的设计

1.设计主要内容及要求;

编写频率计程序。

要求:1)能够测量频率并显示。

2)能够进行闸门时间选择。

2.对设计论文撰写内容、格式、字数的要求;

(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。

(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。

(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。

(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。

3.时间进度安排;

沈阳工程学院

C8051F020单片机原理及应用课程设计成绩评定表

中文摘要

在人们的日常生活中,频率的测量无处不在。随着科学技术的发展,尤其是单片机技术和半导体技术的高速发展,频率计的研究及应用越来越受到重视,这样对频率测量设备的要求也越来越高。单片机是一门发展极快应用方式极其灵活的使用技术。他以灵活的设计、微小的功耗、低廉的成本,在数据采集、过程控制、模糊控制、智能仪表等领域得到广泛的应用,极大的提高了这些领域的技术水平和自动化程度。

在电子技术测量中,频率是最基本的参数之一,设计一种快速准确的频率计显得尤为重要。该数字频率计的设计主要实现用数字显示被测信号的频率,该设计是以51单片机作为核心,与传统频率计相比该设计具有更高的测量精度和速度,具有各种中断处理能力,并且具有丰富的数字输入输出口和通信口等。该频率计的设计在软件上编写,并采用计数式测频方法,通过单片机外围电路中由振荡电路产生的闸门信号进行计时,并对整形后的被测信号进行脉冲计数以得到被测信号的频率值。由于低频信号照成了较大的量化误差,可在测量低频信号的时候延长闸门时间信号,以提高测量精度。

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号、方波信号及其他单位时间内变化的物理量。在设计中应用单片机的数学运算和控制功能,来实现测量量程的自动切换,既满足测量精度的要求,又满足系统反应时间的要求。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显式、测量迅速、精确度高、显示直观、所以经常用到频率计。

51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用。51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用时非常重要的。

总之,频率计的设计是进行更深层次频率测量的基石。

关键词单片机,频率测量,分频器,硬件,软件

目录

1 设计任务描述 (1)

1.1设计题目:频率计程序设计 (1)

1.2设计要求: (1)

1.2.1设计目的: (1)

1.2.2基本要求: (1)

2 设计思路 (2)

3主程序流程图 (3)

4 各部分程序的设计及参数计算 (4)

4.1定义程序变量 (4)

4.2初始化程序设计 (4)

4.3主程序设计 (6)

4.4T2数据采集程序设计 (8)

4.5液晶显示程序设计 (9)

4.6程序的参数计算 (11)

5 频率计的工作过程分析 (12)

6 设计过程未解决的问题 (13)

小结 (14)

致谢 (15)

参考文献 (16)

附录源程序代码 (17)

1 设计任务描述1.1设计题目:频率计程序设计

1.2设计要求:

1.2.1设计目的:

编写能实现频率测量的汇编语言程序,即设计频率计。

1.2.2基本要求:

编写频率计程序。

要求:1)能够测量频率并显示。

2)能够进行闸门时间选择。

2 设计思路

一.频率计计算方法的设计思路

我们有多种方法可以进行频率的测量:本次课设我使用了两种方法来测量频率 (1) 直接计数法

这种计算方法就是以基准时间nT 0 闸门时间来测量未知频率的f x 的周期T x 的个数,其计算公式如下:

00/x x x N T T T f ==

由上式可得所测频率为:

00

x

x x N f N f T ==

但是测量的时候T 0 和T x6不可避免的会有误差的存在最大的误差也就是被测 号的一个脉冲,其最大误差为00111

/x x x w N T T T f =±=±=±

从公式上面知道当被测频率越大则误差越小所以此部分用来测量高频信号最为合适, (2) 间接计数法

间接计数法是用被测信号的时间间隔nT x 作为闸门时间,通过计算时钟脉冲的个数来计算来测量被测信号的频率,计算公式如下:

00//x x x N nT T nf f ==(其中f x 是所测频率)

由上式可得所测频率为:

0/x x f nf N =

和直接测量的一样间接计数法也存在误差其形成原因在于基准频率的脉冲个数实际上不为整数,其最大误差是基准脉冲的一个脉冲,这个误差为: 0

11

/x

x

x f w N nT T nf =±

由此可知他可以用来测量频率较为低一些的信号这样就会产生更小的误差 二.频率计程序的设计思路

首先我使用T2定时器用来采集信号,我选择T2定时器就是因为它可以利用系统时钟定时同时又可以采集外面输入信号的信息,可谓是一举两得,接下来我设计了自动档位选择程序可以根据输入信号的频率来自动决定选择合适的档位,判断使用哪种方法来计算更为精确,频率计算完成之后就是将其输入到液晶显示程序将所测到的频率值显示出来

3主程序流程图

4 各部分程序的设计及参数计算

4.1 定义程序变量

在程序执行前,定义是非常有必要的。定义如下:

#include

#define SYSCLK 11059200.0 //定义系统时钟SYSCLK为11059200.0HZ double Timer0=0; //定义Timer0为双精度浮点型并赋初值为0 unsigned int PCL,PCH; //定义PCL,PCH为无符号整型数据unsigned int tang=0,tang1=0; //定义tang=tang1=0且为无符号整型数据unsigned int shao,shao1; //定义shao,shao1为无符号整型数据unsigned int T=0,T1=0; //定义T=0,T1=0且为无符号整型数据unsigned int count=0,count1=0;//定义count=0,count1=0为无符号整型数据double fre=0; //定义fre为双精度浮点型并赋初值为0

bit st3=0; bit st1=0; //定义st3,st1为位类型的变量

unsigned char xdata LCDdata[11]=

{48,49,50,51,52,53,54,55,56,57,46};//定义一个11列的数组

unsigned char xdata liangcheng[5][10]=

{{97,48,49,60,53,48,72,122,0x20,0x20},

{98,53,48,60,49,48,48,72,122,0x20},

{99,49,48,48,60,49,75,72,122,0x

{100,49,75,60,50,53,75,72,122,0x20},

{101,50,53,75,60,53,48,75,72,122}};//定义一个5行10列的数组

4.2 初始化程序设计

void T2_Init(void);//定时器T2的初始化

{

T2CON=0x09;//T2工作在定时方式允许定时器T2进行捕捉

TL2=0;

TH2=0; //定时器赋初值00;

RCAP2L=0;

RCAP2H=0; // RCAP2H ,RCAP2L寄存器赋初值00;

XBR1|=0x40; //T2EX0连接端口引脚

IE|=0xA0; //总中断使能,并且允许定时器T2中断

CKCON|=0x20;//定时器T2按系统时钟频率计数

}

void PORT_Init(void)//端口初始化

{

XBR2|=0x40;//交叉开关使能

P0=0;//端口寄存器赋初值为00;

}

void LCD_Init(void)//液晶初始化

{

unsigned int x;

P6=0x09; //写命令

for(x=0;x<5000;x++);//延时程序

P7=0x38;//两行显示,5X7点阵

P6=0x08;//结束写命令

P6=0x09;//写命令

for(x=0;x<1000;x++);//延时程序

P7=0x38;//两行显示,5X7点阵

P6=0x08;//结束写命令

P6=0x09;//写命令

for(x=0;x<1000;x++);//延时程序

P7=0x0e;//开显示,开光标,字符不闪烁

P6=0x08;//结束写命令

P6=0x09; //写命令

for(x=0;x<1000;x++);//延时程序

P7=0x06;//I/D=1,AC自动增加1;S=0,整体显示不移动P6=0x08;//结束写命令

P6=0x09; //写命令

for(x=0;x<5000;x++);//延时程序

P7=0x01;//清除DDRAM,置AC=0;

P6=0x08; //结束写命令

P6=0x09;//写命令

for(x=0;x<5000;x++);//延时程序

}

void SYSCLK_Init(void)//系统时钟初始化

{

int i; /*延时计数器*/

OSCXCN = 0x67; /*启动外部11.0592MHz晶振*/ for (i=0; i < 255; i++) ; /*等待外部晶体起振*/

while ((OSCXCN & 0x80)==0x00) ; /*查询标志位*/

OSCICN = 0x88; /*选择外部晶体作为系统时钟并使能时钟丢失检测*/ }

4.3 主程序设计

这部分是我设计的主程序,它涉及频率测量的档位选择以及频率运算等核心部分所以我会详细的做这部分的设计介绍:

main()

{

WDTCN=0xde;

WDTCN=0xad;//关看门狗

T2_Init();//定时器T2初始化

PORT_Init();//端口初始化

LCD_Init();//液晶初始化

SYSCLK_Init();//系统时钟初始化,11MHz

while(1)//死循环

{

switch(tang)

{

case 0:

shao=3;//a档,计算3个被测脉冲

break;

case 1:

shao=200;//b档,计算200个被测脉冲

break;

case 2:

shao=800;//c档,计算800个被测脉冲

break;

case 3:

shao1=400;//d档,计算400*65536个基准脉冲

break;

case 4:

shao1=10;//e档,计算10*65536个基准脉冲

break;

default:break;//跳出switch循环

}

if(tang1!=tang)//档位选择

{ EXEN2=0;//禁止T2捕捉

tang1=tang;//换档结束

count1=0;// 基准频率计时归零

count=0;// 基准频率计时归零

T=0; T1=0;// 被测脉冲计数归零

TL2=0; TH2=0;//定时器T2清零

EXEN2=1;//允许T2捕捉中断

}

if(st1==1) //低频档

{Timer0=(double)((PCH*256+PCL+65536*(count+count1*80000))/SYSCLK); fre=(double)((shao-1)/Timer0); //间接计数法算频率

T=0; T1=0; //被测脉冲计数归零

count=0; count1=0; //基准频率计时归零

TL2=0; TH2=0; //基准频率计时归零

RCAP2L=0; // RCAP2H寄存器归零

RCAP2H=0; // RCAP2L寄存器归零

PCL=0; // PCL归零

PCH=0; // PCH归零

st1=0;//清除低频标志位

EXEN2=1; //允许T2捕捉中断

}

if(st3==1) //高频档

{fre=(double)((T-1+T1*80000)*SYSCLK/(shao1*65535)); //直接计数法算频率TL2=0; TH2=0; //基准频率计时归零

T=0; T1=0; 被测脉冲计数归零

count=0;count1=0; //基准频率计时归零

st3=0; //清除高频标志位

EXEN2=1; //允许T2捕捉中断

}

if(fre<=50)

tang=0; //频率小于50Hz换a档

if((fre>50)&&(fre<=100))

tang=1; //频率50~100Hz换b档

if((fre>100)&&(fre<=1000))

tang=2; //频率100~1000Hz换c档

if((fre>1000)&&(fre<=25000))

tang=3; //频率1000~25000Hz换d档

if(fre>25000)

tang=4; //频率大于25000Hz换e档

LCD_show(fre);

}

}

4.4 T2数据采集程序设计

T2定时器具有边沿触发的捕捉方式,每来一个下降沿,进一次中断并计一个数,直接计数法和间接计数法都需要这个功能。T2功能的初始化由T2_Init()函数完成,该函数的作用是:

(1)选择系统时钟为T2计数器时钟源,时钟溢出使能;

(2)下降沿触发捕捉,捕捉中断使能;

(3)将T2EX0分配P0.0端口。

T2定时器的中断服务程序如下:

void Timer2_ISR(void) interrupt 5

{if(TF2==1)//定时器T2中断溢出标志位

{count++;TF2=0;}//如果发生中断则count加1同时清除该中断标志位

if(count==80000)//条件判断

{count1++;count=0;} //如果该count计满80000则count1加1并清除标志位

if(EXF2==1)//T2//外部中断标志位如果等于1

{T++;EXF2=0;}//T加1并清除该标志位

if(T==80000)// /如果该T计满80000

{T1++;T=0;}// T1加1并清除标志位

if(T==1)//如果T=1

{TL2=0;TH2=0;TR2=1;}//启动定时器T2

if(tang<3)//档位判断

{

if(T==shao&&T1==0)//当T==shao时

{

PCL=RCAP2L;

PCH=RCAP2H;//将捕捉到的TL2,TH2的数值赋给PCL,PCH st1=1;//低频标志位置一

TR2=0; //停止T2 继续定时计数

T2CON&=0xf7;//禁止捕捉中断

}

}

else

{if(count==shao1&&count1==0)//当count==shao1时

{st3=1;T2CON&=0xf7;TR2=0;}}// 高频标志位置一

}//禁止捕捉中断,停止T2 继续定时计数

4.5 液晶显示程序设计

由于LCD显示器只能识别ASCII码,所以在程序中我需要对所得结果进行处理,由于显示的内容较少,而查表的方式简单可靠,因此采用查表的方式,进行ASCII码的转换,我想要测量的精度高一些所以我设计千分之1左右,因此显示的数字需要精确到0.001位,在这里我保留了4位小数,

液晶显示程序主要通过调用两个子函数来实现的,一个是LCD_Init(void),它对液晶进行初始化,另一个是LCD_show(double)函数,它包含了ASCII码转化和显示两个功能。以下分别对这两个函数进行介绍:

void LCD_Init(void)

{ unsigned int x;

P6=0x09; //写命令

for(x=0;x<5000;x++); //延时程序

P7=0x38;//两行显示,5X7点阵

P6=0x08;//结束写命令

P6=0x09; //写命令

for(x=0;x<1000;x++);//延时程序

P7=0x0e;//开显示,开光标,字符不闪烁

P6=0x08; //结束写命令

P6=0x09; //写命令

for(x=0;x<1000;x++);//延时程序

P7=0x06;//I/D=1,AC自动增加1;S=0,整体显示不移动

P6=0x08; //结束写命令

P6=0x09; //写命令

for(x=0;x<5000;x++);//延时程序

P7=0x01;//清除DDRAM,置AC=0;

P6=0x08; //结束写命令

P6=0x09; //写命令

for(x=0;x<5000;x++);}//延时程序

void LCD_show(double shu)

{ unsigned int i1,shu1=0,i2,i3,x;

unsigned char LCD[8]={0},temp=0,www=0,*LCDpoint;

double shu2=0;

if(state>=3)shu/=1000;//如果是高频档,用KHz的单位

shu2=shu;//将频率数值另存

shu1=shu;//取频率的整数部分

LCDpoint=LCD;

{ LCD[i2]=shu1%10;

shu1/=10;

if(shu1==0)break;}

for(i3=0;i3

{ temp=LCD[i3];

LCD[i3]=LCD[i2-i3];

LCD[i2-i3]=temp;}

LCD[i2+1]=10;//保存小数点

shu1=shu;//取频率整数部分

shu2=shu-shu1;//将频率减去整数部分,得到小数部分

for(i1=i2+2;i1<=4+i2;i1++)//取出小数部分的每一位

{ LCD[i1]=(unsigned char)(shu2*10);

shu2=shu2*10-LCD[i1];}

P7=0x80;//第一行显示

P6=0x01;//写命令

P6=0x00;//结束写命令

for(x=0;x<1000;x++);//延时

for(i2=0;i2<=9;i2++)//显示量程

{ www=liangcheng[state][i2];//查相应的量程的ASCII码P7=www;//写数据

P6=0x05;//开始写数据

P6=0x04;//结束写数据

for(x=0;x<1000;x++);}//延时

P7=0xc1;//第二行显示

P6=0x01;//开始写命令

P6=0x00;//结束写命令

for(x=0;x<1000;x++);//延时

for(i2=0;i2<=i1;i2++)//显示数据

{ www=LCDdata[LCD[i2]];//查询数据相应得ASCII码P7=www;//写入数据

P6=0x05;//开始写数据

P6=0x04;//结束写数据

for(x=0;x<1000;x++);}延时

if(state>=3)www=75;//根据档数是否显示“K”

else www=0x20;//否则显示空格

P7=www; //写入数据

P6=0x05; //开始写数据

P6=0x04; //结束写数据

for(x=0;x<1000;x++);//延时

P7=72;//“H”

P6=0x05; //开始写数据

P6=0x04; //结束写数据

for(x=0;x<1000;x++);//延时

P7=122;//“z”

P6=0x05; //开始写数据

P6=0x04; //结束写数据

for(x=0;x<1000;x++);//延时

for(i2=0;i2<=16-i1-4;i2++)//余下的位用空隔显示

{ P7=0x20;

P6=0x05;

P6=0x04;

for(x=0;x<1000;x++);}}

4.6 程序的参数计算

我设计的程序使用两种方法来计算频率分别是直接法和间接法,通过档位的选择来自动的判断使用那一种算法来计算频率,频率小于1000HZ就使用间接法

Timer0=(double)((PCH*256+PCL+65536*(count+count1*80000))/SYSCLK);

fre=(double)((shao-1)/Timer0);

当频率大于1000HZ的时候就用直接法来测量频率其计算公式如下:

fre=(double)((T-1+T1*80000)*SYSCLK/(shao1*65535));

因为在前面我已经介绍了这两种算法对不同频率的误差比较,间接法适合测量高频而直接法适合测量低频所以我就以1000HZ为界限,前面的档位tang对应的shao,shao1的参数我分别是取各部分频率段得到的最合适的取值。

5 频率计的工作过程分析

如果频率小于1000Hz,则视作低频信号,使用间接计数法计算信号频率。

首先,当检测到第一个下降沿之后,启动T2定时器(对基准频率计时,结果保存在PCH、PCL、count和count1中),当系统对被测频率的计数达到Tcount之后,关闭T2捕捉中断和T2定时器,通过公式计算频率:

Timer0=(double)((PCH*256+PCL+65536*(count+count1*80000))/SYSCLK)

frequency=(double)((Tcount-1)/Timer0)

算出频率frequency之后,使用函数LCD_show(double)显示。

如果被测频率大于1000Hz,那么则视作高频信号,使用直接计数法对信号进行处理。同样,当第一个下降沿到来时,开启PCA0定时器,并计算在Tcount1*65536/SYSCLK(即Tcount1*5.93ms)时间内的脉冲个数(脉冲个数存在T和T1中)。通过公式计算频率:

fre=(double)((T-1+T1*80000)*SYSCLK/(Tcount1*65536))

6 设计过程未解决的问题

这次课设我使用C语言编的程序,在之前的C学的不好所以设计的有点慢,最近才编完程序,所以程序有点问题还没有多少时间解决了

我设计的程序最高测量的频率为50Khz,在在之前我想了一些办法,但是都没有效果就是测不上去我考虑可能是T2定时器的捕捉跟不上或者就是shao1数取的对于50Khz 不合适。

这次课程设计我们查阅了许多的相关文献和书籍。因为刚看到这个题目的时候,大家都不了解。前期都处于迷茫状态。第一天,老师对每个题目都做了解释及其基本要求,使各个模块的轮廓逐渐清晰起来。知道了从何处下手。

在设计程序之前,设计者必需对所用的知识内部有一个深刻的理解,知道具体应用的是哪一部分的知识。更要有一个清晰的思路和一个完整的结构框图。在编写程序时,不能妄想一次就将整个程序编好。很多时候,自己感觉很正确的东西,其实反而是错误的。所以我们必须反复修改、不断改进。其次,我们还得要养成正确进行文件管理的好习惯,因为每个模块是相互独立的,程序复杂的话,容易混淆。如果不整理好文件,最后可能一团糟。一个程序的完美与否关键在于能不能直观的看出你设计的结构。在设计过程中遇到问题是很正常的,但我们应该将每次遇到的问题分析清楚,并及时解决,以免下次再碰到同样的问题。

有时候,我们容易掉进死胡同,总认为自己是正确的,就算是很简单的一个问题,我们也会检查不出来,这时候多亏了老师的帮助。是老师的正确指导,才使我的课程设计更加完整。由于此次课程设计涉及的内容以前没有经常应用,遇到了很大的困难,设计能够顺利的完成,真的很感谢我们组的成员们。大家都知道,课程设计是用我们课程知识综合应用的实践训练;是我们迈向社会,从事职业工作前一个必不少的过程。所以我很珍惜这次机会,在老师讲完的时候,我们组就有了一个模块的思路。我组成员都很积极,想大显自己的才华。

我们今天认真的进行课程设计,学会脚踏实地迈开实践这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。在这次的课程设计中,不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。这两周内,我感触最深的当属查阅大量的设计资料了。无论是课本上的,还是网上的都浏览了不少相关的内容,从中也借鉴了别人的思路,开阔了自己的思维。

通过这次训练,我能够更好的综合运用所学知识、独立分析和解决实际问题。培养了自己的创新意识和创新能力,并获得了科学研究的基础训练和培养了团队协作精神。我组成员各有优点,他们融会贯通的能力很好,也使我这方面的能力得到了很大提高。课设很快就结束了,但是课设的精神会一直影响着我。时间虽然短暂,但收获却不少。将以前的知识运用到实践中,大大提升了自己的动手能力。课设虽然结束了,但是实践与求知的路并未结束。

国家开放大学C语言程序设计A第一次形考任务及答案

一、选择题(共40分,每小题2分) 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。 A. main B. MAIN C. name D. function 题目2 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目3 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为()。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号

D. 空格或回车 题目5 每个C语言程序文件的编译错误被分为()。 A. 1类 B. 2类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} D. {y=10} 题目7 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。 A. 表达式 B. 语句 C. 参数表

D. 函数体 题目9 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对()。 A. 尖括号 B. 双引号 C. 单引号 D. 花括号 题目10 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // B. /* C. */ D. ** 题目11 在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为()。 A. char B. int C. float D. double 题目12 在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为()。

C语言程序设计第三版谭浩强课后习题答案完整版

1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个C 程序,输出以下信息: ************************** Very Good! ************************** 解:mian() {int a,b,c,max; printf( “请输入三个数a,b,c:\n ” ); scanf( “%d,%d,%”d ,&a,&b,&c); C语言程序设计第三版谭浩强 解: mian() {printf( ”); “************************** printf( “”X “ n” ); printf( “Very Good!” \ n”); printf( “”X “ n” ); printf( “************************** ); max=a; if(max

{char #include c1='a',c2='b',c3= 'c',c4= ' \101 ',c5= ' 116'; printf( “a%cb%c n”,c1,c2,c 3); printf( “ b%c %c” ,c4,c5); } 解: aa 口bb 口口口cc 口口口口口口abc A 口N 3.7 要将"China" 译成密码,译码规律是:用原来字母后面的第 4 个字母代替原来的字母.例如,字母"A" 后面第 4 个字母是"E" . "E"代替"A"。因此,"China"应译为"Glmre" 。请编一程序,用赋初值的方法使cl 、c2、c3、c4、c5 五个变量的值分别为, ' C'、h'、i '、n'、a'经过运算,使cl、c2、c3、c4、c5分别变为'G'、' I '、' m >' r'、’ e',并输出。main() { char c1=' C' ,c2=' h' ,c3= ' i ' ,c4= ' n' ,c 5=' a' ; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf(" 密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是GImre 3.9 求下面算术表达式的值。 解: 1 )x+a%3*(int)(x+y)%2/4

C语言程序设计说课教案

页眉内容 C 语言程序设计》说课教案从以下方面说明: 一、二、课程性质、地位教学对象分析及要求 三、课程体系 四、 五、六、七、课程的重点、难点及突破教学方法与教学手段学生考核 教学计划 一、课程性质、地位 1.课程的性质 《C语言程序设计》课程是高职高专通信类和电子信息类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C 语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。 学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络 应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C 语言作为应用系统开发设计语言,C 语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 2.课程的地位 通信技术(计算机网络方向)专业和电子信息技术专业,C 语言室基础,是计算机应用设计的基础。是学习其他程序语言的前导及基础。 二、教学对象分析及要求 1.教学对象 本系学习C 语言课程的生源是高中生源和中专生源。高中生文化基础扎

实,但计算机专业知识薄弱,开始学习时较困难,但入门提高较快。中专生,文化基础薄弱,但计算专业已经学习一些,开始学习不会很困难,但是知识转换能力方面会有困难,学习进度会慢一点。针对不同生源学生在教学方法和重难点方面有所区别。 2.对同一生源不同程度学生采取如下策略 高职智力不差,但自控能力相比较差。所以要从非智力因素入手,培养学生的学习积极性,提高实际动手能力。 3.在教学中教与学 三、课程体系 《C 语言程序设计》教学学时为60,理论内容以“够用为度”的原则,按照程序设计能力,通过一个项目“学生成绩管理系统”为主线,介绍C 语言基本概念、三种基本程序结构设计、指针、函数体等重点内容。然后通过1 周的课程设计,完成项目“学生成绩管理系统” 综合设计题目。课程内容附表1。 1.课程内容选取依据 1)C 语言编程规范 根据C 语言编程规范等资料,选取的内容是C 语言教学中必须掌握的适应中。另外还根据C 语言程序设计和后继课程(数据库、网络编程语言等)之间的关系、C 语言知识与技能要求及高职学生人才培养目标要求来确定本课程的教学内容。 2)职业素质要求 具备基本的阅读程序和程序的编写能力。同时具备实际问题转换为计算机程序解决的能力。 3)实际工作中岗位能力需求 通过对通信和电子专业毕业生的调查、人才招聘信息和一线专业技术人员交流,确定本系通信技术专业和电子专业的学生主要有程序设计员、单片机开发员、网站设计员、计算机维护管理、企业应用软件实施员、通信工程施工等工作岗位,这些岗位中,程序设计思维和源代码编写能力是关键技能,而C 语言作为专业核心课程中的基础课程,必须掌握结构化程序设计思路,我们选取本课程内容是根据这些要求选取的。 2.课程体系模块

C语言程序设计入门经典例题

1、加法练习程序:由用户通过键盘输入加数和被加数,程序显示加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。要求:利用C的选择语句if条件语句或switch 开关语句,键盘输入数据前,程序会出被输入数据的信息提示。 #include void main(){ int a,b,c; printf("please put an addend:\n");scanf("%d",&a); printf("please put an augend:\n");scanf("%d",&b); printf("please answer the question:a+b=?");scanf("%d",&c); if(a+b==c) printf("very good!"); else printf("wrong! "); } 个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do…while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下: #include void main(){ int a,b,c; printf("请输入一个加数:\n");scanf("%d",&a); printf("请输入一个被加数:\n");scanf("%d",&b); do { printf("请回答:a+b=");scanf("%d",&c); if(a+b!=c) printf("请再想一想\n"); } while(a+b==c) printf("回答正确!"); } 2、判闰年程序:判断某一年是否闰年? 要求:程序首先提示用户从键盘输入4位数年份,程序能显示“XXXX年是闰年”或“XXXX年不闰年”的输出信息。 算法:year 是闰年,即year能被4整除但不能被100整除,或 year 能被 400 整除。其对应的C逻辑表达式为:(year % 4 = = 0 && year % 100 != 0) || (year % 400 = = 0) 或: (!(year % 4) && year % 100) || !(year % 400 ) 程序中可设置1个变量leap来代表是否闰年的信息,闰年:leap=1; 不闰年:leap=0。 #include void main() int year; printf("请输入4位数年份:");scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

《单片机C语言程序设计》课程标准

广州康大职业技术学院 《单片机C语言程序设计》课程标准 一、基本信息 适用对像:应用电子技术专业的学生 课程代码: 学分:2 学时:36 制定人:徐又又 制定时间:2010年9月 所属系部:自动化 批准人:陶甫廷 二、课程的目标 1.专业能力目标 了解单片机C语言的特点、与PC机C语言的异同之处、单片机C语言的开发环境; 熟悉单片机C语言的基本语法规范、Keil C软件的应用及其与硬件平台的连接、C语言程 序结构设计、与单片机相关的设置等方面知识。 2.方法能力目标 了解用单片机C语言进行应用产品软件开发的步骤,具备单片机C语言程序的识读、修改的基本能力;学会使用Keil C软件进行源程序编辑、编译和软、硬件模拟调试的操作方 法与技能。 3.社会能力目标 通过后续课程《单片机应用实训》的学习与强化训练,具有使用单片机C语言进行电子产品、自动检测与控制和高新视听设施等方面的软件开发的职业技能。 三、整体教学设计思路 1.课程定位 该课程是应用电子技术和自动化技术等专业获得专业技能的必修课程之一,该课程属于职业技术课程,以培养电子产品开发相关行业急需的机电类和电子类高级技能应用型人才 为目标。 本课程一般在学生学完模拟电子技术与数字电子技术、计算机技术等专业基础课后再讲授;《单片机应用》等课程可作为先修课程,也可在同一学期开设。 2.课程开发思路

本课程根据“工学结合”的原则,强调对单片机C语言程序设计的理论部分删繁就简,以“实用够用”为度,就是为了便于他们在后续的实训月(四周)以及即将下厂顶岗实习期 (十周),将所学的单片机C语言程序设计的常用原理与实用知识,能够与实训、实习的生 产工位和顶岗工作更紧密地联系起来。 四、教学内容 1.学时分配 学习情境名称子学习情境1 子学习情境2 子学习情境3 子学习情境4 学时 分配 学习情境(单元)1 单片机C语言概述单片机C语言与 PC机C语言的异 同之处 简单的C程序介绍 及上机操作(编译 三个简单C程序) 3 教学时数 1 2 学习情境(单元)2单片机C语言开发环境 建立 Keil软件的使 用(源文件、 工程的建立) 上机操作(用keil 软件进行工程的设 置) 3 教学时数 2 1 学习情境(单元)3数据的类型、运算符和 表达式 用整型和字符型 定义变量 数的溢出 C51中特有的数 据类型 上机操作(用 算术运算符和 算术表达式编 写程序) 6 教学时数 2 1 2 1 学习情境(单元)4C51流程与控制顺序结构程序选择结构程序循环结构程 序(上机操作 编译冒泡排 序法程序) 6 教学时数 2 2 2 学习情 境(单 元)5 C51构造数据类型数组指针结构共用体和枚举 6 教学时数 2 2 1 1 学习情境(单元)6单片机内部资源的组成中断编程上机操作用定时器 /计数器资源 编程并编译 串口编程 6 教学时数 2 2 2 学习情境(单元)7函数函数的定义函数的调用局部变量和全局 变量 变量的存储类 别 6 教学时数 2 2 1 1

《C语言程序设计》说课稿

《C语言程序设计》说课稿 《C语言程序设计》说课稿 一、课程教学大纲 课程教学大纲包括课程性质、课程地位、课程目标等几个方面。 (一)课程性质 《C语言程序设计》课程是高职高专计算机类、电子信息类、通信类和电子商务类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。 (二)课程地位 1、学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C语言作为应用系统开发设计语言 2、C语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 图1C语言程序设计在课程体系中的地位 (三)课程目标 根据对教材内容、教学大纲及学生自身认知水平的分析,教学目

标从知识目标、能力目标和素质目标三个方面来分析。1、知识目标 ①掌握程序的基本结构;②掌握数组和函数的运用;③掌握指针和位运算的基本操作。2、能力目标 ①掌握初步编程思想,熟悉基本算法,能根据问题正确选择、组合算法并绘制程序流程图; ②能独立编写代码,编写测试数据,并能独立调试程序,获得正确结果;③良好的编程思路和风格。3、素质目标 ①具备基本的阅读程序和程序的编写的素质;②培养严谨踏实的作风,训练自己的逻辑思维;③锻炼自己分析问题、解决问题的能力。 (四)教学总体规划 《C语言程序设计》的教学总学时为80学时,以“理论够用、注重实操”为原则,按照程序设计的能力模块,系统的讲解C语言基本概念、三种基本程序设计结构、数组和函数,并结合所学知识点进行相应实训,最终完成一个综合项目“学生成绩管理系统”。 旨在培养学生能够循序渐进地掌握C语言的语法规则、建立程序设计概念、确立程序设计的思维方式、掌握程序设计的方法、初步积累编程经验、培养学生良好的程序设计风格,能初步用C语言解决与专业相关的应用问题,并为学习其它的计算机课程奠定基础。 (五)教学的课时安排 (六)实践教学内容 实践教学环节充分体现“任务驱动、实践导向”的设计思想。 (六)课程重点和难点

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

《C语言程序设计》说课稿(超好)

《C语言程序设计》说课稿 广州松田职业学院机电与信息工程系--唐涛 一、课程教学大纲 课程教学大纲包括课程性质、课程地位、课程目标等几个方面。 (一)课程性质 《C语言程序设计》课程是高职高专计算机类、电子信息类、通信类和电子商务类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。 (二)课程地位 1、学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C语言作为应用系统开发设计语言 2、C语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 图1 C语言程序设计在课程体系中的地位 (三)课程目标 根据对教材内容、教学大纲及学生自身认知水平的分析,教学目标从知识目标、能力目标和素质目标三个方面来分析。 1、知识目标 ①掌握程序的基本结构; ②掌握数组和函数的运用; ③掌握指针和位运算的基本操作。 2、能力目标

①掌握初步编程思想,熟悉基本算法,能根据问题正确选择、组合算法并绘制程序流程图; ②能独立编写代码,编写测试数据,并能独立调试程序,获得正确结果; ③良好的编程思路和风格。 3、素质目标 ①具备基本的阅读程序和程序的编写的素质; ②培养严谨踏实的作风,训练自己的逻辑思维; ③锻炼自己分析问题、解决问题的能力。 (四)教学总体规划 《C语言程序设计》的教学总学时为80学时,以“理论够用、注重实操”为原则,按照程序设计的能力模块,系统的讲解C语言基本概念、三种基本程序设计结构、数组和函数,并结合所学知识点进行相应实训,最终完成一个综合项目“学生成绩管理系统”。 旨在培养学生能够循序渐进地掌握C语言的语法规则、建立程序设计概念、确立程序设计的思维方式、掌握程序设计的方法、初步积累编程经验、培养学生良好的程序设计风格,能初步用C语言解决与专业相关的应用问题,并为学习其它的计算机课程奠定基础。 (五)教学的课时安排

国家开放大学C语言程序设计A第一次形考任务与答案(20201127230652)

一、选择题(共40分,每小题2分) 1 题目1 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()* A.main B. MAIN C. name D. function 题目2 1 C语言源程序文件的缺省扩展名为()。 A. cpp B. exe C. obj * D.c 题目3 1 由C语言目标文件连接而成的可执行文件的缺省扩展名为()。 A. cpp B. exe C. obj D. c 题目4

程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为() A. 空格或逗号 B. 逗号或回车 C. 逗号或分号

* D.空格或回车 题目5 1 每个C语言程序文件的编译错误被分为()。 A. 1类 ” B.2 类 C. 3类 D. 4类 题目6 不符合C语言规定的复合语句是()。 A. {} B. {;} C. {x=0;} + D.{y=10} 题目7 1 C语言程序中的基本功能模块为()。 A. 表达式 B. 标识符 C. 语句 D. 函数 题目8 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()

B. 语句 C. 参数表 D. 函数体 题目9 1 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用 的起止定界符为一对()。 A. 尖括号 * B.双引号 C. 单引号 D. 花括号 题目10 L 在C语言程序中,多行注释语句使用的开始标记符为()。 A. // + B./* C.*/ D ** 题目11 1 在printf()函数调用的格式字符串中,若使用格式符为“%C',则对应输出的数据类型为()。

C语言程序设计教程第三版(李凤霞)习题答案

教材习题答案 第一章 习题 一、单项选择题 1. C 2. B 3. B 4. C 5. D 6. A 7. C 8. A 二、填空题 1. 判断条件 2. 面向过程编程 3. 结构化 4. 程序 5. 面向对象的程序设计语言 6. 基本功能操作、控制结构 7. 有穷性 8. 直到型循环结构 9. 算法 10.可读性 11.模块化 12.对问题的分解和模块的划分

习题 一、单项选择题 1. B 2. D 3. C 4. B 5. A 6. A 7. B 8.C 二、填空题 1. 主 2. C编译系统 3. 函数、函数 4. 输入输出 5. 头 6. .OBJ 7. 库函数 8. 文本 第三章 习题 一、单项选择题 1. D 2. B 3. A

5. C 6. D 7. D 8. B 9. B 10.C 11.A 12.D 13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D,A 25.D 26.A 27.B 二、填空题 1. 补码 2. 308 10 - ±

~)308 10 ,15 —6 2. 308 10 - ± (~)308 10 ,15

6 3. 逻辑 4. 单目,自右向左 5. 函数调用 6. a 或 b ( 题目有错 , 小括号后面的 c<=98 改成( c>=97&&c<=98 )就可以得到所给的答案了) 7.

8. 65 , 89 第四章 习题 一、单项选择题 1. D 2. C 3. D 4. A 5. D 6. B 7. A 8. C 9. B 10.B 二、填空题 1. 一

最新C语言程序设计说课稿

《C语言程序设计》说课稿 信息工程系 张林

《C语言程序设计》说课稿 (一)课程设置 1、课程定位(性质和作用) 《C语言程序设计》课程是计算机应用技术专业的专业基础课,旨在培养学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。学生毕业后工作岗位主要有计算机管理员、单片机应用设计员、网络应用等,在计算机控制、单片机应用、电子技术、通信技术等相关行业中都将使用C语言作为应用系统开发设计语言,C语言也是其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试(程序员、网络管理员等)考试中要求的主要程序设计语言。 2、课程设计(理念与思路) 设计原则: 坚持以岗位能力培养为本位的设计原则,教学内容、教学方法及考核方式均围绕能力培养来进行设计。 设计理念: 以后续课程对编程能力需求为导向,坚持理论够用,将相关知识点分解到实际项目中,让学生通过对项目的分析和实现来掌握相关理论知识和编程技能,选择技术实用性、知识拓展性强的教学用例和实训项目,同时将计算机等级考试和专升本相关内容融入到相关的教学单元中。 (二)教学内容(课程大纲) 一、课程基本情况 课程类型:理论课+实践课 计划学时:理论课40课时实践课56课时 开课学期:第一学年 后续课程:《基于C语言的数据结构算法设计》、《VC++》、《VB》、《软件工程》、《Java程序设计》 课程性质:专业必修课

二、课程目标 1、素质目标 (1)、具有独立思考、独立设计、独立调试的基本能力 (2)、具有良好的分析问题、解决问题和再学习的能力 (3)、具有良好的完成工作任务、团队合作和沟通能力 (4)、培养严谨的工作作风和勤奋努力的工作态度 (5)、培养较强的掌握新技术、新方法和新系统的能力 (6)、具有健全的人格和行为习惯、具有心理承受能力和社会责任感 2、能力目标 (1)、能够根据数据处理的需求,熟练使用数值、字符、数组、指针和文件等各种数据类型编写程序 (2)、能够根据数据处理的需求,熟练运用顺序、选择、循环等结构化语言进行程序设计树的逻辑结构,描述其物理结构并实现相应算法 (3)、能够灵活、有效地运用典型的排序、查找等算法 (4)、能够采用模块化的方法进行程序设计 (5)、能够读懂软件开发项目的部分编程逻辑与技巧、基本的业务流程控制与核心算法 3、知识目标 (1)数据类型与表达式 (2)顺序结构程序设计 (3)选择结构程序设计 (4)循环结构程序设计 (5)数组、指针、结构体和文件等数据类型的定义与应用 (6)应用函数程序设计。 三、教材分析 中国铁道出版社出版的《C语言程序设计》,由恰汗·合孜尔主编,属于普通高等教育“十一五”规划教材。 本教材注重实例的安排,基本上相关概念都有相应的实例进行讲解和阐述,这样学生更容易理解和掌握所学知识,并且配有习题集和上机指导手册作为辅助教学资料,学生通过习题的练习和上机实训,加深了对所学知识的理解和应用。 四、课程内容与学时安排: 理论教育课时安排表

C语言程序设计实习报告

手机通讯录管理系统一、设计题目的任务和内容 任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。 具体要求: ◆建立通讯录信息,信息包含、姓名、分类(1、办公类2、个人类3、商务类)、电话、 电子邮箱等; ◆将通讯录保存在文件中; ◆查看功能:可按1、办公类2、个人类3、商务类分类查询,当选中其中一类时,显示出 此类所有数据中的姓名和电话号码。 ◆增加功能:能录入新数据。当录入重复姓名和电话号码时,则提示数据录入重复并取消 录入;当通讯录中超过15条信息时,存储空间已满,不能录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 ◆修改功能:选中某个人的姓名是,可对此人的相应数据进行修改。 ◆删除功能:选中某个人的姓名是,可对此人的相应数据进行删除并自动调整后续条目编 号。 系统功能需求分析: 查询:查询通讯录记录 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 修改:修改通讯录记录

二、总体设计思路 本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。 系统功能模块图: 输入新信息:可输入新的数据。 添加:可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。 删除:输入姓名删除,输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可按1、办公类2、个人类3、商务类分类查询 修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。 下面就是总的程序流程图:

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

C语言程序设计第一次月考试题

C语言程序设计第一次月考试题(2011.9) 班级:姓名:总分: 一、选择题(每小题3分,共60分) 1.一个C语言程序是由() A)一个主程序和若干子程序组成B)函数 C)若干过程组成D)若干子程序组成 2.下面4个选项中,均是C语言关键字的选项是() A)auto enum include B)switch typedef continue C)singed union scanf D)if struct type 3. 下面4个选项中,均是不合法的用户标识符的选项是() A)A P_0 do B)float 1a0 -A C) b—a goto int D) _123 temp INT 4.下面4个选项中,均是不合法的整形常量的选项是() A)- - 0f1 - oxfff 0011 B)- oxcdf 017 12,456 C) – 018 999 5e2 D)-0x48eg -068 03f 5. 下面4个选项中,均是不合法的浮点数的选项是() A)160.0.12 e3 B)123 2e4.2 .e5 C)-.18 123e4 0.0 D)-e3 .234 1e3 6.下面4个选项中,均是不合法的转义字符的选项是() A)‘\‖‘?\\‘?\xf‘B)‘\1011‘?\‘?\a‘ C) ?\011‘?\f‘?\}‘D)‘\abc‘?\101‘?x1f‘ 7.下面不正确的字符串常量是() A)‘abc‘B)‖12‘12‖C) ‖0‖D)‖‖ 8.Int k=7, x=12; 则以下能使值为3的表达式是() A)x%=(k%=5) B)x%=(k- k%5) C) x%=k-k%5 D)(x%=k) – (k%=5) 9.若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值 是() A) 4 B)16 C)32 D)52 10.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A) 7 B) 8 C)6 D)2 11.已知各变量的类型说明如下: Int k, a, b; unsigned long w=5; double x=1.42; 则以下不正确的表达式是() A) x%(-3) B)w+=-2 C) k=(a=2,b=3, a+b) D)a+=a-=(b=4)*(a=3) 12.已知字母A的ASCII码为65,且定义c2为字符型变量,则执行语句c2=‘A‘+‘6‘-?3‘;后;c2中的值为() A) D B) 68 C)不确定的值D) C

单片机C语言程序设计师试题及答案

单片机C语言程序设计师试题 一、填空题 1、设X=5AH,Y=36H,则X与Y“或”运算为_________,X与Y的“异或”运算为________。 2、若机器的字长为8位,X=17,Y=35,则X+Y=_______,X-Y=_______(要求结果写出二进制形式)。 3、单片机的复位操作是__________(高电平/低电平),单片机复位后,堆栈指针SP的值是________。 4、单片机中,常用作地址锁存器的芯片是______________,常用作地址译码器芯片是_________________。 5、若选择内部程序存储器,应该设置为____________(高电平/低电平),那么,PSEN信号的处理方式为__________________。 6、单片机程序的入口地址是______________,外部中断1的入口地址是_______________。 7、若采用6MHz的晶体振荡器,则MCS-51单片机的振荡周期为_________,机器周期为_______________。 8、外围扩展芯片的选择方法有两种,它们分别是__________________和_______________。 9、单片机的内部RAM区中,可以位寻址的地址范围是__________________,特殊功能寄存器中,可位寻址的地址是____________________。 10、子程序返回指令是________,中断子程序返回指令是_______。 11、8051单片机的存储器的最大特点是____________________与____________________分开编址。 12、8051最多可以有_______个并行输入输出口,最少也可以有_______个并行口。 13、_______是C语言的基本单位。 14、串行口方式2接收到的第9位数据送_______寄存器的_______位中保存。 15、MCS-51内部提供_______个可编程的_______位定时/计数器,定时器有_______种工作方式。 16、一个函数由两部分组成,即______________和______________。 17、串行口方式3发送的第9位数据要事先写入___________寄存器的___________位。 18、利用8155H可以扩展___________个并行口,___________个RAM单元。 19、C语言中输入和输出操作是由库函数___________和___________等函数来完成。 二、选择题 1、C语言中最简单的数据类型包括(b )。 A、整型、实型、逻辑型 B、整型、实型、字符型 C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 2、当MCS-51单片机接有外部存储器,P2口可作为( c )。 A、数据输入口 B、数据的输出口 C、准双向输入/输出口 D、输出高8位地址 3、下列描述中正确的是( d )。 A、程序就是软件 B、软件开发不受计算机系统的限制 C、软件既是逻辑实体,又是物理实体 D、软件是程序、数据与相关文档的集合 4、下列计算机语言中,CPU能直接识别的是( d )。 A、自然语言 B、高级语言 C、汇编语言 D、机器语言 5、MCS-5l单片机的堆栈区是设置在( c )中。

《C语言程序设计》教案设计(清华谭浩强)

第一章C语言及程序设计概述 本章要求: 了解C语言的特点、C语言与其它高级语言相比有什么异同; 了解C程序在PC机上的建立、编译和运行过程; 了解C语言程序设计思想的基本篇; 重点:①C语言的主要特点; ②C语言在PC机上的运行过程及上机操作过程; ③常用算法的应用 难点:无 一、C语言概述 C语言是目前国际上在各种计算机运行较为广泛流行的一种高级语言。 主要表现为: C语言:适合于作为系统描述语言——可用来写系统软件。 具有高级语言的特点,又有低级语言(汇编语言)的特点。 C语言:是AT&T贝尔实验室的Dennis Ritchie在1972年发明的。 C语言:是在B语言的基础上发展起来的。(ALGOL 60) C语言:最早开始是用于UNIX操作系统。(C语言和UNIX是相辅相成的) DBASE 、Microsoft Exel 、 Microsoft Word、PC-DOS等,则是用C语言加上若干汇编子程序编写的。 1983年:——制定的新标准,称为(美国国家标准化协会)ANSI C 1987年:——Turbo C1.0 (Borland) 1988年:TC 1.5(图形和文本窗口) 1989年:——Turbo C2.0 (DOS操作系统、查错、Tiny模式生成com文件) 1991年:——Turbo C++(3.0) 支持windows 3.X 说明:Turbo C语言可以在程序的任何地方嵌入汇编代码,提高速度,可以直接使用存储器和寄存器。 二.C语言的特点 1.语言简洁、紧凑、使用方便、灵活 C语言:——共有32个关键字,9种控制语句; 程序书写自由,主要用小写字母表示; 2.运算符丰富

相关文档
最新文档