当前位置:文档之家› 郭天祥十天学会单片机C语言郭天祥---课后习题答案

郭天祥十天学会单片机C语言郭天祥---课后习题答案

郭天祥十天学会单片机C语言郭天祥---课后习题答案
郭天祥十天学会单片机C语言郭天祥---课后习题答案

郭天祥十天学通单片机TX-1C单片机实验板

所有课作业+答案,特别整理,供单片机爱好与学习者使用

本文亲测可用!

讲次内容细节

第一讲学单片机预备知识、

如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。点亮一个发光管,

第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。

第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用

第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深

用单片机的定时器及中断设计一个60秒定时器

第五讲独立键盘、矩阵键盘

的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用

第六讲AD、DA的工作原理

及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法

第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。

第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作

第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、

目前非常通用的一种通信机制

第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信)

第十一讲用DS12C887时钟芯片设计一个高精度时钟DS12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。(本节由学生自己设计电路)

第十二讲使用Protell99绘制电路图全过程Protell99软件使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工

第十三讲Altium designer 6.5绘制电路图全过程最顶级电路板设计软件Altium Designer使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工

lesson1

对照TX-1C单片机学习板原理图写程序

用位操作和总线操作两种方法完成以下题目

1.熟练建立KEIL工程

2.点亮第一个发光管.

3.点亮最后一个发光管

4.点亮1、3、5、7

5.点亮二、四、五、六

6.尝试让第一个发光管闪烁

7.尝试设计出流水灯程序

=========================================================== ===========================================================

lesson2

第一个发光管以间隔200ms闪烁

8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。

8个发光管来回流动,每个管亮100ms,流动时让蜂鸣器发出“滴滴”声。

用8个发光管演示出8位二进制数累加过程。

8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程。

间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次

到8个管亮,然后重复整个过程。

间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。

=========================================================== =========================================================== lesson3

1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。。

2、利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。

3、同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,

1k(hz)的方波。

4、用定时器以间隔500MS在6位数码管上依次显示0、1、2、3….C、

D、E、F,重复。

lesson4

1.利用动态扫描方法在六位数码管上显示出稳定的654321.

2.用动态扫描方法和定时器1在数码管的前三位显示出秒表,精确到1%秒,即后两位显示1%秒,一直循环下去。

3.利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。到此保持住。

lesson5

数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。

在上题的基础上,用另外三个独立键盘实现按下第一个时计时停止,按下第二个时计时开始,按下第三个是计数值清零从头开始。

按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,第二个显示4...

=========================================================== =========================================================== lesson7

1.由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以

200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。

1.以2400bps从计算机发送任一字节数据,当单片机收到该数据后,在此数据前加上一序号然后连同此数据一起发送至计算机,当序号超过255时归零。

2.以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态显示出来,波特率自定。

3. 用AD以1HZ的频率采集模拟信号,然后转换成数字量,再将其以1200bps发送到计算机,在计算机上显示。

4.按下矩阵键盘第一行时以1200bps发送,1,2,3,4,第二行时以2400bps发送5,6,7,8,第三行以4800bps发送,9,10,11,12,第四行以9600pbs 发送,13,14,15,16.

=========================================================== ===========================================================

Lesson1作业

1用位操作点亮第一个发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

sbit led1=P1^0; //单片机管脚位声明

void main() //主函数

{

led1=0; //将单片机P1.0口清零

while(1); //程序停止在这里,在后面会讲到为什么这样写。

}

2/ 用总线操作点亮第一个发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

void main() //主函数

{

P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。}

3 / / 用位操作点亮最后一个发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

sbit led8=P1^7; //单片机管脚位声明

void main() //主函数

{

led8=0; //将单片机P1.7口清零

while(1); //程序停止在这里,在后面会讲到为什么这样写。}

4 // 用总线操作点亮最后一个发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

void main() //主函数

{

P1=0x7f; //将单片机P1口的8个口由高到低分别赋值为01111111 while(1); //程序停止在这里,在后面会讲到为什么这样写。}

5 // 用位操作点亮1,3,5,7发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

sbit led1=P1^0; //单片机管脚位声明

sbit led3=P1^2; //单片机管脚位声明

sbit led5=P1^4; //单片机管脚位声明

sbit led7=P1^6; //单片机管脚位声明

void main() //主函数

led1=0; //将单片机P1.0口清零

led3=0; //将单片机P1.2口清零

led5=0; //将单片机P1.4口清零

led7=0; //将单片机P1.6口清零

while(1); //程序停止在这里,在后面会讲到为什么这样写。}

6 // 用总线操作点亮1,3,5,7发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

void main() //主函数

{

P1=0xaa; //将单片机P1口的8个口由高到低分别赋值为10101010 while(1); //程序停止在这里,在后面会讲到为什么这样写。}

7

// 用位操作点亮2,4,5,6发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

sbit led2=P1^1; //单片机管脚位声明

sbit led4=P1^3; //单片机管脚位声明

sbit led5=P1^4; //单片机管脚位声明

sbit led6=P1^5; //单片机管脚位声明

void main() //主函数

{

led2=0; //将单片机P1.1口清零

led4=0; //将单片机P1.3口清零

led5=0; //将单片机P1.4口清零

led6=0; //将单片机P1.5口清零

while(1); //程序停止在这里,在后面会讲到为什么这样写。}

8 // 用总线操作点亮2,4,5,6发光管.

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

void main() //主函数

P1=0xc5; //将单片机P1口的8个口由高到低分别赋值为11000101

while(1); //程序停止在这里,在后面会讲到为什么这样写。

}

9 // 尝试让第一个发光管闪烁.(程序看不懂没关系,后面章节会有详细讲解) // 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

sbit led1=P1^0; //单片机管脚位声明

void main() //主函数

{

unsigned int i; //定义一个int型变量

while(1)

{

i=50000; //变量赋初值为50000

led1=0; //点亮灯

while(i--); //延时

i=50000;

led1=1; //熄灭灯

while(i--);

}

}

9 // 尝试写出流水灯程序(程序看不懂没关系,后面章节会有详细讲解)

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

void main() //主函数

{

unsigned int i; //定义一个int型变量

while(1)

{

i=50000; //变量赋初值为50000

P1=0xfe; //点亮第一个灯

while(i--); //延时

i=50000; //变量赋初值为50000

P1=0xfd; //点亮第二个灯

while(i--); //延时

i=50000; //变量赋初值为50000

P1=0xfb; //点亮第三个灯

while(i--); //延时

i=50000; //变量赋初值为50000

P1=0xf7; //点亮第四个灯

while(i--); //延时

i=50000; //变量赋初值为50000

P1=0xef; //点亮第五个灯

while(i--); //延时

i=50000; //变量赋初值为50000

P1=0xdf; //点亮第六个灯

while(i--); //延时

i=50000; //变量赋初值为50000

P1=0xbf; //点亮第七个灯

while(i--); //延时

i=50000; //变量赋初值为50000

P1=0x7f; //点亮第八个灯

while(i--); //延时

}

}

Lesson 2

1 // 第一个发光管以间隔200ms闪烁

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit led1=P1^0; //单片机管脚位声明

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

while(1) //大循环

{

led1=0; //点亮小灯

delay(200); //延时200毫秒

led1=1; //熄灭小灯

delay(200); //延时200毫秒

}

}

2 // 8个发光管由上至下间隔1s流动

//,其中每个管亮500ms,灭500ms,亮时蜂鸣器响

//,灭时关闭蜂鸣器,一直重复下去。

// 适用TX-1C单片机实验板

// 晶振为11.0592M

/*********************************************************/

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit beep=P2^3;

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

uchar a;

a=0xfe;

while(1) //大循环

{

P1=a; //点亮小灯

beep=0; //开启蜂鸣器

delay(500); //延时500毫秒

P1=0xff; //熄灭小灯

beep=1; //关闭蜂鸣器

delay(500); //延时500毫秒

a=_crol_(a,1); //将a变量循环左移一位

}

}

3 /*

8个发光管来回流动,

每个管亮100ms,流动时让蜂鸣器发出"滴滴"声。

*/

/*********************************************************/

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit beep=P2^3;

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

uchar a,i;

while(1) //大循环

{

a=0xfe; //赋初值

for(i=0;i<8;i++) //左移

{

P1=a; //点亮小灯

beep=0; //开启蜂鸣器

delay(50); //延时50毫秒

beep=1; //关闭蜂鸣器

delay(50); //再延时50毫秒

a=_crol_(a,1); //将a变量循环左移一位

}

a=0x7f;

for(i=0;i<8;i++) //右移

{

P1=a; //点亮小灯

beep=0; //开启蜂鸣器

delay(50); //延时50毫秒

beep=1; //关闭蜂鸣器

delay(50); //再延时50毫秒

a=_cror_(a,1); //将a变量循环右移一位

}

}

}

4 /*

用8个发光管演示出8位二进制数累加过程。

*/

/*********************************************************/

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

uchar a;

while(1) //大循环

{

a++;

P1=~a;

delay(200);

}

}

5 /*

8个发光管间隔200ms由上至下,

再由下至上,再重复一次,

然后全部熄灭再以300ms间隔

全部闪烁5次。重复此过程

*/

/*********************************************************/

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

uchar a,i,j;

while(1) //大循环

{

for(j=0;j<2;j++)

{

a=0xfe; //赋初值

for(i=0;i<8;i++) //左移

{

P1=a; //点亮小灯

delay(200); //延时200毫秒

a=_crol_(a,1); //将a变量循环左移一位

}

a=0x7f;

for(i=0;i<8;i++) //右移

{

P1=a; //点亮小灯

delay(200); //延时200毫秒

a=_cror_(a,1); //将a变量循环右移一位

}

}

P1=0xff; //全部熄灭

for(j=0;j<10;j++)

{

delay(300); //延时

P1=~P1; //全部取反10次,既闪烁5次

}

}

}

6 /*

间隔300ms第一次一个管亮流动一次,

第二次两个管亮流动,依次到8个管亮,

然后重复整个过程。

*/

/*********************************************************/

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

uchar a,i,j;

while(1) //大循环

{

a=0xfe; //赋初值

for(j=0;j<8;j++)

{

for(i=0;i<8-j;i++) //左移

{

P1=a; //点亮小灯

delay(200); //延时200毫秒

a=_crol_(a,1); //将a变量循环左移一位

}

a=_crol_(a,j); //补齐,方便下面的左移一位

P1=0xff; //全部关闭

a=a<<1; //左移一位让多一个灯点亮

}

}

}

7 /*

间隔300ms先奇数亮再偶数亮,

循环三次;一个灯上下循环三次;

两个分别从两边往中间流动三次;

再从中间往两边流动三次;8个全部闪烁3次;

关闭发光管,程序停止。

*/

/*********************************************************/

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

uchar a,i,j;

for(j=0;j<3;j++) //寄偶交替

{

P1=0x55; //点亮小灯

delay(300); //延时300毫秒

P1=0xaa;

delay(300); //延时300毫秒

}

for(j=0;j<3;j++) //流水灯

{

a=0xfe;

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

{

P1=a; //点亮小灯

delay(300); //延时300毫秒

a=_crol_(a,1);

}

}

P1=0xff;

for(j=0;j<3;j++) //从两边往中间流{

P1=0x7e; //点亮小灯

delay(300); //延时300毫秒

P1=0xbd;

delay(300); //延时300毫秒

P1=0xdb; //点亮小灯

delay(300); //延时300毫秒

P1=0xe7;

delay(300); //延时300毫秒

}

P1=0xff;

for(j=0;j<3;j++) //从中间往两边流{

P1=0xe7; //点亮小灯

delay(300); //延时300毫秒

P1=0xdb;

delay(300); //延时300毫秒

P1=0xbd; //点亮小灯

delay(300); //延时300毫秒

P1=0x7e;

delay(300); //延时300毫秒

}

P1=0xff;

for(j=0;j<6;j++) //全部闪烁

{

P1=~P1; //点亮小灯

delay(300); //延时300毫秒

}

P1=0xff;

while(1);

Lesson3

1 /*

利用定时/计数器T0从P1.0输出周期为1s的方波,

让发光二极管以1HZ闪烁,

设晶振频率为12MHz。?

*/

/*********************************************************/ #include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit P1_0=P1^0;

uchar tt;

void main() //主函数

{

TMOD=0x01;//设置定时器0为工作方式1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

while(1);//等待中断产生

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

if(tt==20)

{

tt=0;

P1_0=~P1_0;

}

}

2 /*

利用定时/计数器T1产生定时时钟,

由P1口控制8个发光二极管,

使8个指示灯依次一个一个闪动,

闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。

设晶振频率为12MHz。

/*********************************************************/ #include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit P1_0=P1^0;

uchar tt,a;

void main() //主函数

{

TMOD=0x01;//设置定时器0为工作方式1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

a=0xfe;

while(1);//等待中断产生

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

if(tt==2)

{

tt=0;

P1=a;

a=_crol_(a,1);

}

}

3 /*

同时用两个定时器控制蜂鸣器发声,

定时器0控制频率,定时器1控制同个

频率持续的时间,间隔2s依次输出

1,10,50,100,200,400,800,

1k(hz)的方波?

设晶振频率为12MHz。

*/

/*********************************************************/ #include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit beep=P2^3;

uchar tt;

uint fre,flag;

void main() //主函数

{

fre=50000;

beep=0;

TMOD=0x11;//设置定时器0,定时器1为工作方式1

TH0=(65536-fre)/256;

TL0=(65536-fre)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

ET1=1;

TR1=1;

TR0=1;//启动定时器0

while(1);//等待中断产生

}

void timer0() interrupt 1 //定时器0中断

{

TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失TH0=(65536-fre)/256;

TL0=(65536-fre)%256;

tt++;

if(flag<40) //以下几个if分别用来选取不同的频率

if(tt==10)

{

tt=0;

fre=50000;

beep=~beep;

}

if(flag>=40&&flag<80)

{

tt=0;

fre=50000;

beep=~beep;

}

if(flag>=80&&flag<120)

{

tt=0;

fre=10000;

beep=~beep;

}

if(flag>=120&&flag<160)

{

tt=0;

fre=5000;

beep=~beep;

}

if(flag>=160&&flag<200)

{

tt=0;

fre=2500;

beep=~beep;

}

if(flag>=200&&flag<240)

{

tt=0;

fre=1250;

beep=~beep;

}

if(flag>=240&&flag<280)

{

tt=0;

fre=625;

beep=~beep;

}

if(flag>=280&&flag<320)

{

tt=0;

fre=312;

beep=~beep;

}

if(flag>=320&&flag<360)

{

tt=0;

fre=156;

beep=~beep;

}

TR0=1;

}

void timer1() interrupt 3 //定时器1中断用来产生2秒时间定时

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

flag++;

if(flag==360)

{

flag=0;

fre=50000;

}

}

4 /*

用定时器以间隔500MS在6位数码管上依次显示

0、1、2、3....C、D、E、F,重复。

设时钟频率为12M

*/

/*********************************************************/ #include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit dula=P2^6; //数码管段选锁存端

sbit wela=P2^7; ////数码管位选锁存端

uchar num,tt;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void main()

{

num=0;

tt=0;

TMOD=0x01;//设置定时器0为工作方式1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

dula=1;

P0=0x3f; //给段开始送显示0。

dula=0;//关闭段选锁存端,防止开始时出现乱码。

wela=1;//11101010

P0=0xc0; // 打开六个数码管位选

wela=0;

C语言程序设计第四版第六章答案-谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

郭天祥老师51单片机中矩阵键盘显示程序

3.键盘的应用,第一排。 #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; void delay(uint); uchar code table[]= { //段选的数字决定显示的数字,这里的是数字0~15 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,}; uchar num,temp; void main() { dula=0; wela=1; P0=0xc0; //位选6数码管 wela=0; while(1) { P3=0xfe; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xee:num=1; break; case 0xde:num=2; break; case 0xbe:num=3; break;

case 0x7e:num=4; break; } } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } dula=1; P0=table[num-1]; dula=0; } } void delay(uint z) //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

《C语言程序设计》课后习题答案

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.1什么是算法16 2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法32 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67

郭天祥之十天学会单片机视频配套程序-实用!

Lesson1作业 1、用位操作点亮第一个发光管.适用 TX-1C单片机实验板 晶振为11.0592M /*********************************************************/ #include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数 { led1=0; //将单片机P1.0口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 2 、用总线操作点亮第一个发光管. /*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 3、用位操作点亮最后一个发光管. /*********************************************************/ #include //52单片机头文件 sbit led8=P1^7; //单片机管脚位声明 void main() //主函数 { led8=0; //将单片机P1.7口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 4、用总线操作点亮最后一个发光管. /*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0x7f; //将单片机P1口的8个口由高到低分别赋值为01111111 while(1); //程序停止在这里,在后面会讲到为什么这样写。}

C语言第六章习题带答案

练习6-1答案 一、选择题 1.已知函数abc的定义为: void abc() {……} 则函数定义中void的含义是( A )。 A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回C.执行函数abc后,可以返回任意类型 D.以上三个答案全是错误的 2.已知:int p();,p是( C )。 A.int型变量 B.函数p的调用 C.一个函数声明,该函数的返回值是int型的值 D.强制类型转换表达式中的变量 3.以下正确的函数形式是( D )。 A.double fun(int x, int y) B.fun(int x, y) { z=x+y; return z; } { int z; return z; } C.fun(x, y) D.double fun(int x, int y) { int x, y; double z; z=x+y; return z; } { double z; z=x+y; return z; } 4.以下说法正确的是( C )。 A.定义函数时,形参的类型说明可以放在函数体内 B.return后边的值不能为表达式 C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准 D.如果形参与实参的类型不一致,以实参类型为准 5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。 A.float 型B.int型C.long型D.double型6.下面函数调用语句含有实参的个数为( B )。 func((exp1, exp2), (exp3, exp4, exp5)); A.1 B.2 C.4 D.5 7.以下程序的功能是计算函数F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include #include float f(float, float); main() {float x, y, z, sum; scanf("%f%f%f", &x, &y, &z); sum=f( ①B )+f( ②C ); (注:或者选择sum=f( ①C )+f( ②B )) printf("sum=%f\n", sum); } float f(float a, float b) {float value; value=a/b;

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

郭天祥51单片机笔记

1)二极管 导通电流I:3mA-10mA;导通压降v:1.7V。 (排阻计算公式:R = VCC(5V)-v(1.7V)/I(3mA) )。 2)电源指示灯 开关电源:内部有开关控制电流大小,不稳定。 去耦电容:稳压,去波。 3)锁存器(74HC573) OE:OutEnable,低电平有效(必须为低电平)。 输入端:OE(1),LE(11锁存端diola),D(D0(2)-D7(9),一般接P1^0-P1^7)。 输出端:Q(1Q-8Q)。 Z:高阻状态,非高非低电瓶。 LE:为高时,Q端与D同变换;为低电平时,Q端保持上次状态。 sbit LED00 = 0x80; //位指针;指针大小占一个字节;指针控制一个位的值; sfr LED0 = 0x80; //字节指针;指针大小占一个字节;指针控制一个字节的值;4)51库函数 头文件:#include 函数:unsigned char _crol_(unsigned char c, unsigned char b); 描述:The _crol_ routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrinsic function. The _crol_ routine returns the rotated value of c. 5) 蜂鸣器 名称:b:基极;C:集电极;e:发射集; 原理:e极发射电子;当b极接低电平时, ce导通,并且放大电流;当b接高电平时, ce截止。JPFMQ接P3.6管脚。 分类:有源蜂鸣器;无缘蜂鸣器。(源: 震荡源) Proteus:buzzer-有源;sounder、speaker-

(完整版)郭天祥_十天学通单片机_所有课后作业+答案

lesson1 对照TX-1C单片机学习板原理图写程序 用位操作和总线操作两种方法完成以下题目 1.熟练建立KEIL工程 2.点亮第一个发光管. 3.点亮最后一个发光管 4.点亮1、3、5、7 5.点亮二、四、五、六 6.尝试让第一个发光管闪烁 7.尝试设计出流水灯程序 =========================================================== =========================================================== lesson2 第一个发光管以间隔200ms闪烁 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。 用8个发光管演示出8位二进制数累加过程。 8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全

部熄灭再以300ms间隔全部闪烁5次。重复此过程。 间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。 间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。 =========================================================== =========================================================== lesson3 1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。。 2、利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 3、同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800, 1k(hz)的方波。 4、用定时器以间隔500MS在6位数码管上依次显示0、1、2、3….C、 D、E、F,重复。 lesson4

最新c语言课后习题答案汇总

c语言课后习题答案

第二章习题 2.什么叫做结构化算法?为什么要提倡结构化算法? 答:结构化算法是由一些基本结构顺序组成的。在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本的结构范围内。一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变。 跟结构化算法比较起来,非结构化算法有以下缺点: 流程不受限制的随意转来转去,使流程图豪无规律使人在阅读的时候难以理解算法的逻辑.难以阅读,也难以修改,从而使算法的可靠性和可维护性难以保证。 4. 第三章习题 1.#include #include void main() { unsigned int n;

float p,p1,r=0.09; scanf("%u",&n); p=pow(1+r,n); p1=(p-1)*100; printf("%5.2f%%\n",p1); } 运行结果:输入,回车,见结果: 2.#include #include int main() { int bj=1000; float r1,r2,r3,r5,r0,lx1,lx2,lx3,lx4,lx5; r1=0.0414; r2=0.0468; r3=0.0540; r5=0.0585; r0=0.0072; lx1=bj*r5; lx2=bj*(1+r2)*r3; lx3=bj*(1+r3)*r2; lx4=bj*pow(1+r1,5); lx5=bj*r0*5; printf("lx1=%f lx2=%f lx3=%f lx4=%f lx=5%f\n",lx1,lx2,lx3,lx4,lx5); return 0; } 运行结果: 3.#include #include int main() { long d,p; d=300000; p=6000; double m,r=0.01; m=log(p/(p-d*r))/log(1+r); printf("%4.2f",m); return 0;

郭天祥资料大全

研究生郭天祥放弃15万年薪回校自主创业 编者按: 国家统计局哈尔滨调查队最新调查数据显示,目前哈市大学生毕业去向中,自主创业者仅占调查人数的8.7%,这个比率在五个去向中是非常低的。今年高校毕业生就业形势严峻,国家有关部门大力提倡大学生自主创业,并出台了很多优惠、扶持政策。为了鼓励和支持大学生自主创业,从今天开始,本报推出“创业难贵在坚持”系列新闻故事,在为那些正在创业路上艰难行走的青年学子提供鼓励和支持的同时,也期盼有关部门能对创业学子所遇到的困难给与必要的重视和尽可能的帮助。 在读大学本科和研究生的6年中,郭天祥在学校的创新实验室足足待了4年。 今年,即将从哈尔滨工程大学硕士研究生毕业的郭天祥和该校的7名本科生、研究生共同组建了一家公司。虽然公司刚刚起步,但是他们在行业中已小有名气,首年销售额预计会达到一个令人惊喜的数额。 实验室成了家 “2002年刚入校时,我就给自己设定了一个目标,将来一定要自己去创业。大二下学期,我突然感觉到:如果想在自己的专业领域进行创业,必须要先学会动手。所以,我就找到同学商量一起参加学校的电子设计竞赛。”郭天祥说。 在首次尝试中,他失败了。当时学校教电路基础课的付永庆教授被两个年轻人的求知热情感动了,将他们吸纳入创新实验室工作。这之后,实验室便成了郭天祥的另一个家。 “单片机相当于电子产品的大脑,如果这个核心控制器件失灵的话,那么家里的电冰箱、微波炉、电视、空调等电子产品恐怕都要变成废品了。”得悉这个信息之后,郭天祥将自己的研究方向定在了单片机上。 当时苦于没有硬件实验环境,身边又没有会的人可以请教,郭天祥只好上网查找资料自学。看见网上有卖单片机学习板的,他省下生活费狠心买了一块300多元的单片机学习板做练习用。“那时我每天就摆弄单片机,自己一个人摸索非常难懂的汇编语言。快放暑假时,终于做出来第一个单片机作品——一个电子钟。” 为寻找锻炼的机会,郭天祥每天早上起床后就拿着书去实验室,白天在实验室写程序、调电路,做各种硬件练习,晚上回来补充理论知识,模电、数电、高频一遍遍地重复看,几乎每天都要熬到第二天凌晨两点。这一年中,郭天祥陆续参加了国家及省级竞赛,也获得了不少奖项。 放弃15万年薪回校创业 2007年9月,郭天祥以实习生的身份到一家太阳能公司做硕士课题。实习期间,他经常与技术人员热烈讨论并交流,在一次次研发思路碰撞中,他们的产品创新思路也在一步步地改进完善。

C语言课后习题答案(完整版)-第四版-_谭浩强

C语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

郭天祥的学ARM和学单片机一样简单视频教程1.08G

郭天祥的学ARM和学单片机一样简单视频教程1.08G 第一章嵌入式开发系统概况(70分钟)(第一讲) 一、开发平台硬件资源 二、开发平台软件资源及文档 三、开发平台硬件安装 四、开发平台软件安装 1、VMARE虚拟机的安装 2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章测试程序讲解 一、整板测试(33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot下用网口下载测试程序 二、ADS1.2 开发环境使用及启动代码分析(第二讲) 1、ADS1.2 开发环境使用(22分钟) (1)、工程的建立 (2)、工程的编译分析 (3)、硬件的仿真调试 2、启动代码分析(80分钟) (1)、代码启动流程分析 (2)、相关寄存器配置分析 (3)、44binit.s讲解 (4)、option.s讲解 (5)、memcfg.s讲解 (6)、main.c讲解 (7)、相应头文件讲解 三、S3C444B0X I/O口与中断的分析(第三讲) 1、S3C444B0X I/O口(37分钟) (1)、I/O口寄存器配置 (2)、I/O口控制LED代码分析 (3)、UART寄存器配置及代码简要分析 2、中断(46分钟) (1)、中断模式 (2)、中断寄存器配置 (3)、仿真调试按键外部中断的程序流程 四、AD温度采集显示、音频接口、NAND flash 读写(第四讲) 1、AD温度采集显示(30分钟) (1)、AD工作原理 (2)、AD寄存器配置 (3)、LM35温度传感器介绍 (4)、代码分析

(5)、仿真演示实验 2、音频(32分钟) (1)、WAV格式及结构分析 (2)、IIS相关寄存器配置及代码分析 (3)、硬件结构分析 (4)、仿真演示实验 3、 NAND Flash (41分钟) (1)、NAND Flash与NOR Flash区别 (2)、芯片参数分析 (3)、硬件结构分系 (4)、对应芯片手册的读写时序分析代码 (5)、仿真演示实验 五、USB D12从设备(108分钟)(第五讲) 1、USB协议介绍 2、下位机代码简要分析 3、DRIVER STUDIO软件的安装 4、上位机驱动sys、inf文件生成概述 5、上位机应用程序的实现 (1)、工程的建立 (2)、代码编写及分析 (3)、对应应用程序编写下位机程序实现USB通信 第三章 ucos讲解(145分钟)(第六讲) 一、uC/OS-II的简单应用 1、uC/OS-II简介 (1)、MAIN函数的结构 (2)、任务的结构 (3)、重要uC/OS-II API函数介绍 (4)、多任务的机制 2、代码分析 (1)、启动代码分析 (2)、相关函数和结构体的介绍 (3)、任务的创建 (4)、S3C44B0X定时器介绍 3、邮箱的实现 (1)、邮箱的建立 (2)、程序流程分析 (3)、仿真演示实验 4、事件的实现 (1)、事件的建立 (2)、程序流程分析 (3)、仿真演示实验 5、uC/OS-II实现AD对LM35温度采集 (1)、uC/OS-II文件目录介绍

C语言课后作业答案

3-5-1正确 大写字母转化成小写或者小写变大写 #include void main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') { if(ch>='A'&&ch<='Z')ch=ch+32; else ch=ch-32; } else ch=ch; printf("%c\n",ch); } 3-5-2大写转化成小写或者小写变大写 #include void main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); ch=ch; { if(ch>='A'&&ch<='Z')ch=ch+32; else ch=ch-32; } printf("%c\n",ch); } 3-5-3大写转化成小写或者小写变大写 #include void main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); if(ch>='a'&&ch<='z') ch=ch-32; else if(ch>='A'&&ch<='Z') ch=ch+32; else ch=ch; printf("%c\n",ch); } 3-6-1正确分段函数

#include void main() { int x,y; printf("请输入x:"); scanf("%d",&x); if(x<=1) y=x; else { if(1 void main() { int x,y; printf("请输入x:"); scanf("%d",&x); if(x>=10) y=3*x-8; else if(x>1) y=2*x+1; else y=x; printf("x=%d,y=%d\n",x,y); } 3 -6 -3正确 #include void main() { int x,y; printf("请输入x:"); scanf("%d",&x); if(x<=1) y=x; else if(1=10) y=3*x-8; printf("x=%d,y=%d\n",x,y); } 计算器正确 #include void main() {

C语言课后答案

习题一 一、简答题 1.顺序结构、选择(分支)结构和循环结构。 2. (1)

(2)

3.编辑、编译、连接和运行 二、填空题 1. Ctrl+F9;Alt+F5;F2。 2. main(主) 3. main(主) 4. 任意 5. /* */ 不 6. ; 7.。 程序: include studio.h main{} /* this program prints the number of weeks in a year. /* ( int s s:=52; print(There are s weeks in a year"); 正确的为: #include main() /* this program prints the number of weeks in a year. */ { int s; s=52; printf("There are s weeks in a year"); }

习题二 一、选择题 1、C 2、B,D,F,G 3、C 4、A 5、C 6、B 二、填空题 1、声明;使用。 2、整型、浮点型(实型)、字符型。 3、hat_1,cat1,all, Dollar, piece_f, SIN, _ , FALSE. 4、'A'(字符),005(整型),3e0(整型),'\\'(字符),'\05'(字符), 1.2e+5(整型),0xf12(整型)。 5、(1)6+(4+5)*(4+5)/(2+3) (2)sin(a+b)*ain(a+b)/ (4*2)/(3*2)+2 三、读程题 1.若x为float型,其原值为5,a=2,b=4.7。写出下列表达式运算后x的值。 (1)x=(int)(b-a)%3*a/4-a (2)x=(x=b+1)+(int)(b)%10/2.0 (3)x+=x (4)x-=x (5)x*=x+x (6)x/=x+x (7)x+=x-=x*=x (8)x%=x (9)x=3*4,5*6 答案:(1)-1,(2)7.7,(3)10,(4)0,(5)50,(6)0.5,(7)0,(8)非法,(9)12。 2.写出下面程序的运行结果。 #include void main() { int a=2; printf("abcdefghijk\n"); printf("lmnop/n"); printf("I am a /n beginner of C !"); printf("I am a \n beginner of C !"); printf("%d + %d = %d",a,a,a); } 答案: abcdefghijk

C语言第六章数组习题

C语言第六章数组习题 第六章数组 6.1 选择题 [题]在C语言中,引用数组元素时,其数组下标的数据类型允许是_____. A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 [题]以下对一维整型数组a的正确说明是_____。 A)int a(10);B)int n=10,a[n]; C)int n;D)#define SIZE 10 scanf(\%d,&n);int a[SIZE]; int a[n]; [题]若有说明:int a[l0];则对a数组元素的正确引用是_____。 A) a[10] B)a[3.5] C)a(5) D)a[10-10] [题]在C 语言中,一维数组的定义方式为:类型说明符数组名_____。 A)[常量表达式] B)[整型表达式] C)[整型常量]或[整型表达式] D)[整型常量] [题]以下能对一维数组a进行正确初始化的语句是_____。 A)int a[l0]=(0,0,0,0,0); B)int a[l0]={}; C)int a={0};D)int a[10]={10*1}; [题]以下对二维数组a的正确说明是_____。

1 A)int a[3]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); [题]若有说明:int a[3][4];则对a数组元素的正确引用是_____。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) [题]若有说明:int a[3][4];则对a数组元素的非法引用是_____。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] [题]以下不能对二维数组a进行正确初始化的语句是_____。 A)int a[2][3]={0}; B)int a[3]={{1,2},{0}}; C)int a[2][3]={{l,2},{3,4},{5,6}}; D)int a[3]={1,2,3,4,5,6}; [题]若有说明:int a[3][4]={0};则下面正确的叙述是_____。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 [题]若有说明:int a[3][4];则数组a中各元素_____。 2

C语言课后练习及答案

作业A: 一、单项选择题 1、如果要把常量327存入变量a中,a不能定义的类型是哪一个?() A)int B)char C)long D)float 2、若x 为unsigned int 型变量,则执行下列语句后x值为() x = 65535; printf(“%d\n”,x); A)65535 B)1 C)无定值D)-1 3、有以下程序 main() {int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a

郭天祥十天学会单片机C语言郭天祥---课后习题答案

郭天祥十天学通单片机TX-1C单片机实验板 所有课作业+答案,特别整理,供单片机爱好与学习者使用 本文亲测可用! 讲次内容细节 第一讲学单片机预备知识、 如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。点亮一个发光管, 第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。 第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用 第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深 用单片机的定时器及中断设计一个60秒定时器 第五讲独立键盘、矩阵键盘 的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用 第六讲AD、DA的工作原理 及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法 第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。 第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作 第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、 目前非常通用的一种通信机制 第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信) 第十一讲用DS12C887时钟芯片设计一个高精度时钟DS12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。(本节由学生自己设计电路) 第十二讲使用Protell99绘制电路图全过程Protell99软件使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工 第十三讲Altium designer 6.5绘制电路图全过程最顶级电路板设计软件Altium Designer使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工 lesson1

c语言 第6章作业

书面作业8 专业理科学号3120101717 姓名马凌浩 习题6 一、选择题 1.设float x=2.5, y=4.7; int a=7;,printf(“%.1f”, x+a%3*(int)(x+y)%2/4)的结果为 A 。 A.2.5 B.2.8 C.3.5 D.3.8 2.执行下列程序段的输出结果是 C 。 int a = 2; a += a *= a -= a *= 3; printf("%d", a); A.-6 B.12 C.0 D.2 3.设字符型变量x 的值是064,表达式“~ x ^ x << 2 & x”的值是 A 。 A.0333 B.333 C.0x333 D.020 4.设a 为整型变量,不能正确表达数学关系:1010 && a<15 D.!(a<=10) && !(a>=15) 5.设以下变量均为int 类型,表达式的值不为9 的是 C 。 A.(x=y=8,x+y,x+1) B.(x=y=8,x+y,y+1) C.(x=8,x+1,y=8,x+y) D.(y=8,y+1,x=y,x+1) 二.填空题 1 .-127 的原码为11111111 、反码为10000000 、补码为10000001 。 2.逻辑表达式x && 1 等价于关系表达式if(x==0) 表达式的值为0;else 表达式的值为1;。3.设int a=5, b=6; 则表达式(++a==b--)? ++a : --b 的值是7 。 4.设c = 'w', a = 1, b = 2, d = -5, 则表达式'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==(a=2)的值 分别为 1 、0 、 1 、 1 。 5.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为c1=2,c2=5 。 #include int main(void) { int c1 = 0, c2 = 0; char ch; while((ch = getchar()) !=?#?) switch(ch){ case …a?: case …h?: c1++; default: c2++; } printf(“c1=%d,c2=%d\n”, c1, c2); return 0; }

相关主题
文本预览
相关文档 最新文档