单片机c语言试题库

2024-10-18

单片机c语言试题库(精选11篇)

单片机c语言试题库 篇1

汇编语言(AssemblyLanguage)是面向机器的程序设计语言。汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

汇编语言的缺点:

(1)编写的代码非常难懂,不好维护

(2)很容易产生bug,难于调试

(3)只能针对特定的体系结构和处理器进行优化

(4)开发效率很低,时间长且单调

汇编语言的特点

1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的2.保持了机器语言的优点,具有直接和简捷的特点

3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等

4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言

5.经常与高级语言配合使用,应用十分广泛

对于不同型号的计算机,有着不同的结构的汇编语言,学习难度大。

C语言是一种结构化的高级语言。其优点是可读性好,移植容易,易学易用,是普遍使用的一种计算机语言。

c语言优点:

1、语言简洁,使用方便灵活,可大幅度提高开发速度,系统越复杂,开发效率越高。

2、无须深入了解单片机内部结构,和复杂的单片机汇编语言指令集

3、可进行模块化开发,软件逻辑结构清晰,有条理,易于分工合作

4、可移植性好,写好的一个c语言算法,可方便地移植到其他单片机上,而汇编语言相对要复杂的多。

5、可直接操作硬件

随着单片机的内部资源越来越多,存储空间越来越大,资源已经不是考虑的首要问题,c语言可以大大提高开发的效率,c 语言是初学者的首选语言。汇编语言在实时性,执行效率上有不可替代的优势。大部分情况下c语言就可以满足要求,在实时性要求高的某些场合中,可用c语言和汇编语言混合编程的方式,兼顾开发效率和实时性。了解汇编语言对于学习单片机的内部结构,执行过程非常有帮助,是成为单片机高手需要掌握的语言。c语言进行单片机程序设计是单片机开放与应用的必然趋势。

小企鹅diy科学探究学习网

更多文章:转到 文章分类-单片机

单片机c语言试题库 篇2

1 C语言简介

在信息社会, 电脑可以帮助人们完成各种各样的工作, 但是由于语言不通 (电脑只能识别二进制的机器语言) , 就必须有人在中间起到翻译的作用, 这个人可以会各种机器能理解的语言 (如VC、VF、JA-VA) 等, 本文中用C语言与机器交流。

2 系统分析

2.1 现象分析

第一个灯亮:延长一段时间;第二个灯亮:延长一段时间;第三个灯亮:延长一段时间;……………….第n个灯亮, 延长一段时间。

2.2 电路分析

由图2可以看出, 要让LED0灯亮, 只要p1.0端口置低电平0, 根据二极管的单向导电性, 有电流通过, LED0灯亮。其余的灯亮也是同样的道理。若一组是八个灯, 则初始状态是第一个灯亮, 其余灯灭, p1.7~p1.1端口置1, p1.0端口置0, 用十六进制表示为P1^0=0或P1=0xfe。P1端口电平变化8个状态:11111110~11111101~11111011~11110111~11101111~11011111~10111111~01111111~11111110……依次循环。实现这个功能要用到移位函数。

2.3 程序设计

逻辑过程:点亮第一个灯, 延长500ms:p1^0=0;delays (500) ;

点亮第二个灯, 延长500ms:p1^1=0;delays (500) ;

点亮第三个灯, 延长500ms:p1^2=0;delay (500) ;

用C语言实现的关键语句:

设初值:p1=0xfe

移位:aa=_crol_ (aa, 1) ;

延时:for (i=xms;i>0;i--)

依次点亮灯:while (1)

de laym s (500) ;

3 功能实现

1) 开发资源。硬件:TX-1C开发板、STC89C52RC。软件:C语言、Keil、STC。2) 步骤。a.C语言写源程序, 在VC环境下运行无误后, 以pao.c格式保存。b.Keil软件打开pao.c, 运行无误后生成aq.hex文件。如图3。c.用STC将aq.hex文件拷贝到开了板TX-1C的STC89C52RC芯片上。如图4。d.接上开发板电源, 会看到八个灯依次点亮, 现出流水灯的效果。3) 实验注意问题。源程序要包括reg51.h头文件, 因为开发板的信息包含在头文件中, 否则编译不能通过。Kei输出要选择.hex格式, 否则无法用STC写入芯片。STC将程序写进芯片时, 芯片电源开/断时间要把握好。

4 结语

随着电子产品应用广泛, 社会化需求越来越高, 将C语言编程应用于电子设备, 让其完成智能化控制, 以减轻人们的负担, 提高生产效益是社会发展的趋势。通过实验, 证明该方法简单易行, 实验效果明显, 具有通用性。

摘要:C语言是一种高级语言, 用其控制硬件编程, 逻辑性强, 语言简单, 不需要用户了解更多的硬件知识。本文用一个实例来说明如何用C语言实现硬件编程的过程与步骤。

高职单片机C语言教学三步曲 篇3

要想完成程序设计,需要稳固的C语言基础知识和灵活的逻辑思维。而稳固的C语言基础知识要依赖英语基础。灵活的逻辑思维要有数学基础。英语、数学恰恰是高职学生薄弱的地方。这给单片机的C语言教学带来了不小的阻碍。那么,怎样在薄弱英语和数学基础上,提高单片C语言教学效果便值得研究和探讨一番了。

一、学——软、硬穿插

传统的单片机C语言教学中,往往是先脱离单片机学习C语言程序设计。学生普遍反映该课程的语法知识较多,理解和记忆都不太容易,即使记住了语法知识也不能很好地利用C语言进行单片机小型系统的开发。因此,我们以具体项目为基础将C语言知识穿插在整个单片机硬件教学中。比如,讲解完最小系统后,给学生一个项目《点亮LED灯》。之所以选择这个项目是因为它简单,上手快。它能让学生带着轻松的心情走入单片机应用之门。利用此次设计主要是给学生灌输C语言的基本结构,从而让学生体会单片机的控制意义。之后可以在跑马灯中穿插for语句知识;在按键设计可以讲if、switch语句;在数码管显示中学会一维数组等。在软硬件穿插学习过程中,教师应选择什么项目,项目中应准备哪些C语言知识,教师应仔细考量。项目中包含的C语言知识不用面面俱到,应以实用、够用为度。

二、先读后改——被动变主动

在学之后,学生有了单片机的应用经历,也累积了的一些C语言知识。但是由于英语知识薄弱,C语言关键字、格式记不住。程序设计的逻辑思维累积不够。学生独立设计程序还没办法实施。总是以老师讲,学生做的模式上课,学生的积极性调动不起来。怎么将学生被动接受变成主动学习?

继学之后,采用先读后改的教学方式。读——读程序。发布设计项目后,由学生上网搜集参考程序,然后读懂参考程序。以这样的方式来完成项目,一来可以锻炼学生信息收集,和信息筛选的能力,这也是我们希望学生能有拥有的一种能力。二来在读程序的过程中可以强化在学的过程中建立起来的C语言知识的模糊记忆。三来在读的过程可以学习一些新颖设计思路。这些设计思路不再拘泥于任课教师,可以激发学生程序设计的创新思维。

读懂程序之后就可以进行程序改造了。网上搜集的程序往往不完全符合自己的设计要求。这样就要求学生在读懂程序的基础上,进行二次改造,变成自己的成果。

能进行程序二次改造也是一种程序设计技能。大多数学生今后从事单片机程序设计岗位,完成设计工作的方式也是搜集项目相关的程序,进行二次改造。因此,单片机C语言教学中,通过改造程序来提高学生的程序设计能力,进而提高学生单片机产品设计的职业能力。

单片机c语言试题库 篇4

Keil C源程序:

#include #define uchar unsigned char #define uint

unsigned

int sbit

RED_DONGXI

= P1^0;//南北方向红灯亮 sbit

YELLOW_DONGXI = P1^1;//南北方向黄灯亮 sbit

RED_NANBEI

= P1^3;//东西方向红灯亮 sbit

GREEN_DONGXI = P1^2;//南北方向绿灯亮 sbit

YELLOW_NANBEI = P1^4;//东西方向黄灯亮 sbit

GREEN_NANBEI = P1^5;//东西方向绿灯亮

sbit

DXweixuan1

= P1^6;//南北方向数码管位选1 sbit

DXweixuan2

= P1^7;//南北方向数码管位选2 sbit

NBweixuan1

= P3^0;//东西方向数码管位选1 sbit

NBweixuan2

= P3^1;//东西方向数码管位选2 sbit

L1=P3^5;sbit

L2=P3^6;sbit

L3=P3^7;uint aa, bai,shi,ge,bb;uint shi1,ge1,shi2,ge2;uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};void delay(uint z);void init(uint a);void display(uint shi1,uint ge1,uint shi2,uint ge2);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();

void main(){ P0=0xFF;P1=0xFF;P2=0x00;

P3=0xFF;EA=1;EX0=1;IT0=0;

init1();while(1)

{

init2();//第2个状态

init3();//第3个状态

init4();//第4个状态

init5();//第5个状态

} } void init1()//第一个状态:东西、南北方向均亮红灯5S { uint temp;temp=5;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=0;

//第一个状态东西、南北均亮红灯5S

RED_NANBEI=0;

GREEN_DONGXI=1;

GREEN_NANBEI=1;

YELLOW_DONGXI=1;

YELLOW_NANBEI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

}

shi1=shi2=temp/10;

ge1=ge2=temp%10;

if(temp==0)

{

temp=5;

break;

}

display(ge1,shi1,ge2,shi2);} } void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S;{ uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=1;

RED_NANBEI=0;

GREEN_DONGXI=0;

GREEN_NANBEI=1;

YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯

YELLOW_NANBEI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

shi1=(temp+5)/10;

}

}

} ge1=(temp+5)%10;shi2=temp/10;ge2=temp%10;if(temp==0){ temp=26;break;} display(ge1,shi1,ge2,shi2);void init3()//第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S { uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_NANBEI=0;

GREEN_DONGXI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

YELLOW_DONGXI=~YELLOW_DONGXI;

shi1=temp/10;

shi2=shi1;

ge1=temp%10;

ge2=ge1;

}

if(temp==0)

{

temp=6;

break;

}

display(ge1,shi1,ge2,shi2);} } void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S; { uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=0;

RED_NANBEI=1;

YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5S

GREEN_NANBEI=0;

if(aa==20)

{

aa=0;

temp--;

shi1=temp/10;

shi2=(temp+5)/10;

ge1=temp%10;

ge2=(temp+5)%10;

if(temp==0)

{

temp=26;

break;

}

}

display(ge1,shi1,ge2,shi2);} } void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S { uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_NANBEI=1;

RED_DONGXI=0;

GREEN_DONGXI=1;

GREEN_NANBEI=1;

if(aa==20)

{

aa=0;

temp--;

YELLOW_NANBEI=~YELLOW_NANBEI;

shi1=temp/10;

shi2=shi2;

ge1=temp%10;

ge2=ge1;

if(temp==0)

{

temp=6;

break;

}

}

display(ge1,shi1,ge2,shi2);} }

void display(uint shi1,uint ge1,uint shi2,uint ge2){ DXweixuan1=0;DXweixuan2=1;NBweixuan1=1;NBweixuan2=1;P0=table[ge1];delay(5);DXweixuan1=1;DXweixuan2=0;NBweixuan1=1;NBweixuan2=1;P0=table[shi1];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=0;NBweixuan2=1;P0=table[ge2];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=1;NBweixuan2=0;P0=table[shi2];delay(5);} void xint0()interrupt 0 { RED_NANBEI=0;RED_DONGXI=0;GREEN_NANBEI=1;GREEN_DONGXI=1;

YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return;} void xint1()interrupt 2 { RED_NANBEI=1;RED_DONGXI=1;GREEN_NANBEI=0;GREEN_DONGXI=0;

YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return;} void xtimer0()interrupt 1 { TH0=(65535-50000)/256;TL0=(65535-50000)%256;aa++;} void delay(uint z){uint x,y;for(x=0;x

C语言指针笔试题 篇5

那么要是想让程序跳转到绝对地址是0×100000去执行,应该怎么做?

答案:*((void (*)( ))0×100000 ) ( );

首先要将0×100000强制转换成函数指针,即:

(void (*))0×100000

然后再调用它:

*((void (*))0×100000);

用typedef可以看得更直观些:

typedef void(*) voidFuncPtr;

*((voidFuncPtr)0×100000);

12. 分析下面的程序:

void GetMemory(char p,int num)

{ //p,指向指针的指针,*p,p指向的指针(即str),p,最终的对象,str指向的单元

*p=(char *)malloc(num); //申请空间首地址付给传入的被p指向的指针,即str

}

int main

{

char *str=NULL;

GetMemory(&str,100); //传入指针变量本身的地址

strcpy(str,”hello”);

free(str);

if(str!=NULL)

{

strcpy(str,”world”);

}

printf(“n str is %s”,str); 软件开发网

getchar;

}

问输出结果是什么?

答案:输出str is world。

free 只是释放的str指向的内存空间,它本身的值还是存在的.所以free之后,有一个好的习惯就是将str=NULL.

此时str指向空间的内存已被回收,如果输出语句之前还存在分配空间的操作的话,这段存储空间是可能被重新分配给其他变量的,

尽管这段程序确实是存在大大的问题(上面各位已经说得很清楚了),但是通常会打印出world来。

这是因为,进程中的内存管理一般不是由操作系统完成的,而是由库函数自己完成的。

当你malloc一块内存的时候,管理库向操作系统申请一块空间(可能会比你申请的大一些),然后在这块空间中记录一些管理信息(一般是在你申请的内存 前面一点),并将可用内存的地址返回。但是释放内存的时候,管理库通常都不会将内存还给操作系统,因此你是可以继续访问这块地址的。

13.char a[10];

strlen(a)为什么等于15?

#include “stdio.h”

#include “string.h”

void main

{

char aa[10];

printf(“%d”,strlen(aa));

}

答案:sizeof和初不初始化,没有关系;

strlen和初始化有关。

14.char (*str)[20];/*str是一个数组指针,即指向数组的指针.*/

char *str[20];/*str是一个指针数组,其元素为指针型数据.*/

15.

#include

#include

#include

#include

#include

#include

typedef struct AA

{

int b1:5;

int b2:2;

}AA;

void main

{

AA aa;

char cc[100];

strcpy(cc,”0123456789abcdefghijklmnopqrstuvwxyz”);

memcpy(&aa,cc,sizeof(AA));

cout << aa.b1 <

cout << aa.b2 <

}

输出结果是多少?

答案:-16和1

单片机c语言试题库 篇6

在2010年第2期《PIC单片机C语言程序 (5) 》一文中, 我们介绍了可预置起始时刻的时钟的硬件电路并给出了C语言程序。下面要介绍的可预置起始时刻的倒计时程序, 是作为日常生活中对某事件的定时之用:只要某事件由人工设置的计时时间到, 倒计时电路便会发出报警声。倒计时的特点是, 计时一旦达到预定值, 其值就归零。利用归零条件, 即可实现任意倒计时达到时的报警功能, 提示人们定时已到。

本倒计时器可在0~99分钟内任意设置计时值。例如在厨房中, 蒸大米饭 (8两米) , 定时33分钟, 烧开水 (一壶) 为20分钟, 煮胡罗卜 (红色) 为30分钟等, 只要设定时间一到, 倒计时器即报警, 使用十分方便。当然, 上述倒计时值, 均是事先用普通时钟确定每个事件所要花费的时间, 列出相应定时标准, 才能用倒记时器进行定时。

(1) 硬件电路

图6是0~99分钟可预置的倒计时电路。PIC16F84A单片机 (4) 脚为手动复位端, 外接R1、D0、C6、K0 (微动开关) 组成复位电路; (3) 脚RA4外接上电阻R2和倒计时人工预置开关K1;⒄脚RAO外接R0、V3和蜂鸣器, 组成倒计时值达到 (归零) 时的自动报警信号。电路中的两位LED数码管和V1、V2组成0~99分钟可预置LED数码显示电路, 其电路原理与2009年第12期《PIC单片机C语言程序 (3) 》一文中图3的起始两位计数电路相似。

(2) 程序流程图

图7、图8、图9分别为0~99分钟可预置的倒计时程序的主程序、显示函数和键值扫描程序流程图。通过流程图, 读者可以加深对于倒计时程序设计原理和对2010年第2期《PIC单片机C语言程序 (5) 》一文中可预置时钟电路程序的理解。

(3) 倒计时的C程序

根据图7~图9编写的的倒计时C程序 (命名为pic06.c) 清单如下:

单片机c语言试题库 篇7

【关键词】BOPPPS 教学模型 参与学习

一、引言

单片机C语言程序设计是电子信息工程技术专业的一门专业课程,目前该课程的授课地点主要在标准的机房中,主要以理实一体化的教学方法,以项目驱动的教学模式,课程主要以提升学生的单片机C语言程序的编程能力和单片机项目的编程环节的实践能力为目的。该门课程的教学模式相对于其他基础学科的教学模式有了一定的改善,但仍然存在一些比較明显的问题,如学生主动学习的积极性不高,存在部分学生不能够完成课上任务,学生课后学习效率低,无法透彻的理解课程的内容等问题。

如何提高学生的学习主动性和积极性,提升该门课程的教学效果,提升学生的学习效率,这是目前所面临的问题。想达到有效的教学就需要兼顾教学的每一个环节,即教学目标、教学行为、教学评价、教学目标这一循环的过程[1]。

二、BOPPPS模式

BOPPPS该模型的构建主要是将教学的过程划分为引入、目标、预评价、参与学习、后评价及小结6个部分[2]。其中引入则是课程的开始,一堂课程有效而优秀的引入则可以吸引学生的注意力,能够帮助学生对即将要学习的内容产生学习的兴趣;目标为该门课程的教学目标描述阶段,在该部分教师则是要准确清楚地描述该课程的学习目标,确定学习的方向,并专注于该目标。教学目标则是由认知、情意及技能三个部分构成,教学的过程中,教师要清楚准确地传达教学目标。预评价是在完成学习目标介绍之后对学生进行摸底测试,通过学习之前的摸底测试可以了解学生目前的能力,主要用于调整教学内容的深度和进度。参与学习则是教学过程的主要阶段了,教学的过程中通过教师与学生之间、学生与学生之间的互动,要求学生都要参与其中,成为课堂的参与者。在该部分完成之后,则是课程的课后评价,该部分可以帮助教师了解学生的学习效果是否与预期的教学目标相符;小结则是该教学模式的最后一个环节,在该环节教师整合课堂内容,再次强调学习目的,总结学习效果。

三、BOPPPS的单片机C语言教学模式设计与探讨

BOPPS教学模型描述了课堂教学的整个流程,有利于学生明确学习目标,主动参与学习。将单片机C语言程序设计的课程引入该教学模型,对目前该门课程存在的问题进行改善,使该门课程从以教师为中心转变为以学生为中心,并根据单片机C语言程序设计的实际情况,将BOPPPS教学模型延长至课程前后;课程开始前要求学生进行已学知识的复习和新内容的复习,并完成课前的测试,使学生能够巩固已学知识和新课堂的基础知识;在课堂上完成课堂引入、参与学习、课堂小结和课后测试的教学过程,课堂进行作业和测试的反馈。其具体的流程如下图1所示。

(一)课前预习的引导

在学生的课前预习阶段,将课前预习的具体目标、相关的要求及相关资料提供给学生,而学习资料则包含文档、视频、论坛、相关的子项目和将要应用到的相关技术等,让学生通过观看视频、阅读文档或者通过论坛和实际的项目的实践等形式完成预习,并通过提交简单的预习作业或者完成简单的项目中的子程序的编写等形式对课前预习的效果进行检查,完成该环节课前预评价。通过课前的预评价,教师了解到学生的预习情况和存在的问题,对教学内容做出适当的调整。为了促进学生预习的主动性和积极性,可以将学生的预习情况纳入学生平时成绩的考核,促使学生能够主动的完成课程的预习,了解到课程学习的基础知识,为更好的课堂教学做好准备。教师可以通过课前的预测了解学生的自身知识掌握程度并据此调整授课的内容深度和进度。

(二)课程引入的加强

BOPPPS教学模型注重课程的引入,好的引入将可以快速地提升学生的学习兴趣,使学生更快地进入学习的状态,从而高学习效率,提高学生的学习主动性和积极性。教师可以根据课程的特点采取多种引入方式,如问题导入,案例分析、项目介绍、视频图片等方式的导入。单片机C语言课程的引入有案例、知识的前后关系及现实生活所涉及的控制等为引入方式,如案例引入,就是通过实际的或有趣的案例引入课堂知识。

(三)学习目标的明确

课堂学习目标在课堂的教学过程中发挥到方向性的作用,它引导着教学过程,又是后期课程评价的基线。学习目标确定了要求学习者在一定条件下通过课程学习获得的可观察或可量化的新的知识、技能及情感。

而依据Bloom提出的层次理论,可以将每次课设计成具体可检测的学习目标[3],如在对于单片机C语言中断应用介绍部分,可以将其细化如下表1所示。

(四)学习的多样化

该环节中学生是学习的主体,学生在课堂的活动中积极地参与课程活动,而不是被动地听教师讲授。学生主动地参与到讨论中,发表见解,可以提升学生的学习兴趣。参与式的学习加强了教师与学生之间的互动,也加强了学生与学生之间的互动。

在单片机C语言程序设计的该门课程当中,可以根据教学内容的差异采取多种方式让学生参与的学习模式,让学生在课堂上提出自己的问题,由传统的教师提问转变为学生提问的方式,将问题的提问的主动权转给学生,有助于提高学生的学习积极性和思考问题的主动性。可以通过多种方式,引导学生主动参与学习,成为学习的主体,而教师扮演着引导者,激发学生的学习积极性、团队协作能力、提升学生的竞争意识。

(五)课堂的反馈

课堂后测是在教学活动环节的后期开展的,该环节主要为了了解学生的学习成效是否达到了预期的教学目标而进行的;后测根据课堂的教学目标,从而采取不同的形式。单片机C语言程序设计在完成教学后,根据课堂的教学目标,可以进行简单的测试,对需要掌握和记忆的知识点,可采用做题的方式;而对于要求应用的、实践编程,则根据教学目标要求,要求学生完成一个简单的相关程序设计。课堂小结占用的时间不多,在该阶段,除了总结教学内容外,更需要对前后所学的知识进行关联,建立知识的体系结构,可以采用目前比较流行的思维导图来完成该部分的设计。伴随着课程的不断开展,学生可以通过该思维导图,对整个课程的知识体系有更为直观的认识。

(六)课后的反馈

课后的反馈主要就是以课后作业布置的形式开展,根据课程的开展情况,分层次地进行作业的布置,在完成章节部分的知识点学习后,作业围绕某个知识点的练习,而完成了整个章节或课程单元的学习后,则要求学生能够综合使用所学的知识系统的完成作业,并根据实际的情况要求学生单独或分组完成一个项目程序的设计。

由于在课堂开展的前期已经将教学目标进行详细的量化,因此也方便在后期的师生对教学目标进行评价,评价的形式可以多种多样,有课后交流、作业、测试等方式。

四、结语

将BOPPPS教学模式引入,对原有的单片机C语言程序设计的教学模式进行探讨,将课堂的教学延伸至课前课后,引导学生通过课前的预习、课内的参与学习、课后评测的完整学习过程,充分地掌握学习内容。在该环节当中,还有很多部分仍需完善如课前引导的资料方式的完善,参与式学习的方式方法需要进一步的探索,这是后续需要完善的具体目标。

【参考文献】

[1]吴为团, 郑海燕,高晓明,等.计算机课程任职教育教学模式改革研究与实践[J].当代职业教育, 2010(5):29-31.

[2]Allan J. Learning outcomes in higher education[J]. Studies in Higher Education, 1996,21(1):93-108.

C语言编程期末试题答案 篇8

一、单选题(每小题2分,共30分)

1.、A2、.B3、.D4、.A5、A6、A7、C8、.C9、.A.10、A11、.A12、C13、D14、A15、D

二、填空题(每小题1分,共20分)

1、把10赋值给变量S2、基本型、短整型、长整型、无符号型,int、short、long、unsigned3、字母、数字、下划线4、3.55、36、a=a*b7、a=a/b8、19、3.510、字母、下划线

三.判断题(每小题2分,共10分)

1、正确

2、错误

3、错误

4、错误

5、正确

四、简答题;(每小题5分,共20分)

1、字符常量是由单引号引起的单个字符、字符串常量是由双引号引字节起的字符序列,字符常量的存储单元是一个字节而字符串常量所占的存储单元比它实际的字符个数多一个

2、基本的输入输出一般分为三种:一是单字符的输入与输出,即getchar()和putchar()函数;二是格式化的输入与输出,即scanf()和printf();三是字符串的输入与输出,即gets()和puts()函数3、1)C语言具有中级语言的特性2)C语言结构性能强3)功能齐全4)适用范围广泛

4、编辑、编译、连接、执行

五、程序改错题(每小题4分、共8分)

1、错误:scanf(“%d ”,i);正确:scanf(“%d ”,&i);

2、错误:main正确;main()

六、编程题(第6分,共12分)、main()

{printf(“**********n”);

printf(“Very Good!n”);

printf(“**********n”);

}

2、main()

{inta=15, b=5,sum;

sum=a+b;

printf(“%d”,sum);

C语言开发工程师笔试题 篇9

2、综合考察:

银行有个存有n个用户编号的文件,每个数都小于n,其中n=10的7次方。每个编号都不重复。

 输出:n个数升序排列。

 约束条件:内存最多有2兆的空间,运行时间复杂度为O(n)。

c++数据结构算法面试笔试题篇

1请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?

2请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢? UDP,TCP 在传输层,IP在网络层, TCP/IP是英文Transmission Control Protocol/Internet Protocol的缩写,意思是”传输控制协议/网际协议“。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如 T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7 层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路 层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?

一 般意义上说交换机是工作在数据链路层。但随着科技的发展,现在有了三层交换机,三层交换机已经扩展到了网络层。也就是说:它等于“数据链路层 + 部分网络层”。交换机中传的是帧。通过存储转发来实现的。路由器是工作在网络层。路由器中传的是IP数据报。主要是选址和路由。

Q4:请问C++的类和C里面的struct有什么区别?

结构是一种将数据集合成组的方法,类是一种同时将函数和数据都集合成组的方法。结构和类在表面上的唯一区别是:类中的成员在默认情况下是私有的,而结构中的成员在默认情况下是公用的。

class foo

{

private:

int data1;

public:

void func;

};

可以写成:

class foo

{

int data1;

public:

void func;

};

因为在类中默认的是私有的,所以关键字private就可以不写了。

如果想用结构完成这个类所作的相同的事,就可以免去关键字public,并将公有成员放置在私有成员之前:

struct foo

{

void func;

private:

int data1;

};

Q5:请讲一讲析构函数和虚函数的用法和作用?

在 JAVA里没有象C++中的,所谓的析构函数 ,因为当一个对象不在使用的时候,它会自动被垃圾回收器回收,所以也就用不着析构函数了, 那个finalize 也只有在被垃圾回收器回收,才会被执行,而且很多时候,垃圾回收器并不一定执行,所以它不能当做C++中的,所谓的析构函数使用, 虚函数在JAVA里也是没有的,比较象近的应该算是abstract。

Q6:全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?

1)、全局变量的作用用这个程序块,而局部变量作用于当前函数

2)、前者在内存中分配在全局数据区,后者分配在栈区

3)、生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在

4)、使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用

Q7:一些寄存器的题目,主要是寻址和内存管理等一些知识。

Q8:8086是多少位的系统?在数据总线上是怎么实现的?

8086微处理器初次发布时,这块16位芯片仅包含29000个晶体管,运行速度为5MHz。而当今基于x86架构的奔腾4处理器,已经包含5500万个晶体管,运行速度提高了600倍以上,高达3.06GHz。

8086是高性能的第三代微处理器,是Intel系列的16位微处理器,它是采用HMOS工艺制造的,内部包含约29,000个晶体管。

8086 有16根数据线和20根地址线,因为可用20位地址,所以可寻址的地址空间达220即1M字节。8086工作时,只要一个5V电源和一相时钟,时钟频率为 5MHz。后来,Intel公司推出的8086-1型微处理器时钟频率高达10MHz,8086-2型微处理器时钟频率达8MHz。

1、局部变量能否和全局变量重名

答:能,局部会屏蔽全局。要用全局变量,需要使用”::“

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2、如何引用一个已经定义过的全局变量

答:extern

可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3、全局变量可不可以定义在可被多个.C文件包含的头文件中 为什么

答:可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

c++数据结构算法面试笔试题篇

1、语句for( ;1 ;)有什么问题 它是什么意思

答:和while(1)相同。

2、do……while和while……do有什么区别

答:前一个循环一遍再判断,后一个判断以后再循环

3、请写出下列代码的输出内容 以下是引用片段:

#include

main

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10星符号a++;

printf(”b,c,d:%d,%d,%d“,b,c,d);

return 0;

}

答:10,12,120

4、static全局变量与普通的全局变量有什么区别 static局部变量和普通局部变量有什么区别 static函数与普通函数有什么区别

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

5、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。

c++数据结构算法面试笔试题篇

1、队列和栈有什么区别

队列先进先出,栈后进先出

2、写出下列代码的输出内容 以下是引用片段:

#include

int inc(int a)

{

return(++a);

} int multi(int星符号a,int星符号b,int星符号c)

{

return(星符号c=星符号a星符号星符号b); } typedef int(FUNC1)(int in); typedef int(FUNC2) (int星符号,int星符号,int星符号); { INCp=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); void show(FUNC2 fun,int arg1, int星符号arg2)

printf(”%d ",星符号arg2);

}

main

{

int a;

show(multi,10,&a);

return 0;

}

单片机c语言试题库 篇10

随着微电子技术的不断发展和广泛应用, 计算机编程语言也越来越丰富, 因而学生也被要求具有应对各种语言的学习应用能力, 在掌握好C语言后, 对于其它语言的学习则游刃有余。基于单片机进行应用系统开发, C语言作为一种高级的编程语言, 无论是现在进行嵌入式系统开发的相关企业, 还是当前的全国电子设计大赛等学生竞赛中, 都越来越受到大家的关注, 并将其作为一个主要语言开发工具。故本文提出的基于单片机的C语言教学方法, 对结合单片机进行符合实际工程需求的硬件和软件开发的爱好者或学习者有很重要的意义。

二、教学对象

本学期本人所教授的主要课程之一是《C语言程序设计》, 所面向的教学对象是大一新生, 大多数同学由于在高中阶段很少接触电脑, 对于语言的学习更是陌生, 而且数学功底比较薄弱, 同时, 加上学习过程中大多数学生往往缺乏积极性和主动性, 遇到困难不能刻苦钻研, 往往选择放弃。因此, 针对学生的基础情况, 教学讲授的进度不能太快, 教学的内容不能讲的太过深奥, 而且教学方法要灵活多变, 结合实际事物进行简单比喻来讲解, 只有这样才能较为形象地教好C语言这门课。

三、C语言的应用地位

C语言是一门使用最广泛的程序开发工具编程语言, 是极具发展前景的计算机高级语言。其作为一种结构化的程序设计语言, 具有相当强的结构性、可移植性和功能性。通过采用C语言进行编程开发可以使众多开发者专心研究所设计程序要实现的功能及相关实现算法, 从而有效减少开发和软件调试的时间。C程序设计具有良好的程序结构, 对于模块化的程序设计非常适合, 故通常会采用从上至下, 追求逐步求精的结构化程序设计方法, 来将所要实现的功能模块化, 不同的功能通过不同的模块去完成。这样易于进行调试工作和方便快捷地管理好大型项目, 从而最大限度地减少重复劳动。

四、单片机的应用教学现状

单片机的学习是我院电子类专业需要掌握的一门实践性非常强的专业课程, 我院学生通过对其的实践性学习后, 能够独立参加全国电子设计大赛, 并能较好地完成比赛项目。为使我院的单片机教学效果更好, 学生对该门课程掌握的更加牢靠, 故需要对单片机的教学进行大胆改革, 通过在C语言的课程教学上, 结合单片机以及相关的硬件设计知识进行讲解。从我院电子专业开设C程序设计课程以来, 通过学生所反映的情况是该门课程比较难学习, 而且不知道他们在学完C语言后到底有什么用, 能够应用到哪些地方, 更不知道将自己的所学应用于单片机的开发中能不能实现目标。故根据以往教师的教学经验, 并结合学生反映的情况考虑, 本人觉得有必要作出这样的改进, 在C语言的课程上, 通过结合单片机及相关硬件设计知识来讲解C语言, 并从以下几方面引起重视。

五、《C语言程序设计》的课堂教学

1. 教学设计前的思考。

《C语言程序设计》不仅是电子类专业理工科学生的一门计算机公共必修课程, 而且C语言也是作为计算机等级考试 (二级) 的考试内容之一。C语言对于大部分刚进入大学的学生来说, 也是一门比较难的计算机语言课程。要做好这门课程的教学设计, 首先要对学生的具体情况有一定程度的了解。该课程通常的教学法是语法格式的讲解、语法要点的逐步讲解和通过例题对语法的应用讲解。这种机械的教学灌输思想枯燥无味, 会使学生失去对该门课程的学习兴趣, 所以, 本人认为应该先要求学生课前对本堂课所要讲解的知识进行预习, 并能识记有关知识点, 将不理解之处画上记号, 待课堂老师讲解时再认真听并理解所教授内容, 这样通过教师为主导、学生为主体的方式学习, 教师通过精讲相关的硬件设计实例, 通过硬件设计所要实现的功能引出相关软件设计, 进而将软件设计时所涉及到的相关C知识进行讲解, 然后通过另一简单例子让学生自己去通过分析来巩固知识点。

2. 结合多媒体的讲解, 强化实验及实践能力。

因为教师授课的主要对象是大学一年级新生, 所以需要教师采用通俗易懂, 并结合简单例子进行相关讲解, 这样能够使学生容易理解和消化。教学过程中, 采用多媒体, 通过编程演示加深学生对运用的语法理解和深刻记忆。并把理论知识和硬软件的设计内容进行整合讲解, 让每个学生独立完成实际应用实验题。

3. 减少和消除学生对程序设计语言的排斥和畏惧感。

本人在教学中会引导学生多读程序, 在读的过程中领悟和提高。对于软件生存周期的设计、编码、调试、运行这几个阶段, 本人可以通过C语言设计实例来体现, 以培养学生编程中的工程思想。讲授课程时以提出问题、解决问题、深入拓展问题、再解决问题, 对问题进行评价和优化设计的螺旋式滚动教学的方法, 收到了不错的教学效果。

教学过程中, 对于数组、指针等重要的知识点, 则需要制作更生动的课件, 提高学生的学习兴趣和主动性。例如, 在讲解数组的冒泡法排序时, 本人让7位同学分别拿着一个数据牌站到讲台, 进行现场模拟气泡排序过程, 通过第一次排序找到了该组中的最大值, 经过第二次排序找到了次大值, 通过现场的模拟以及班上同学的参与, 使课堂更加丰富有趣, 并且所有同学都能掌握气泡排序的过程。由于在教学中引入的现场模拟, 使同学们更容易理解这些抽象的内容, 更重要的是碰到类似的问题他们会触类旁通, 从而慢慢培养出编程的兴趣。

六、实践培训操作

上机实验是学习程序设计语言的重要环节, 自己编写的程序上机调试运行中, 可能有很多想不到的错误, 通过改正这些错误, 可逐步提高自己对C语言语法的理解力。在课程的教学中, 会进行阶段性的实训项目, 将每一阶段的学习进行小结性的贯穿和提高。将相关的知识点融入到程序的编写中, 从而巩固知识点并将琐碎的知识点做一个整合。暑假期间, 对于电子爱好的学生进行集中培训, 然后按照全国电子设计大赛的要求给大家几个题目做, 这几个题目涵盖非常广的知识点, 大家如果想编出程序就必须要找到课本的相应知识点进行复习, 从而编出程序, 学生普遍反映通过集中培训课的锻炼, 他们的编程能力有了很大的提高, 很多以前不懂的内容通过自己钻研也懂了, 通过自己的努力以后也体会到了编出程序的喜悦感, 可以说收到不错的成效。

七、结束语

C语言的教学重点是培养学生分析与解决问题的能力, 这种能力的培养与学生的刻苦学习分不开, 因此, 在本人的课堂中会一再强调C语言不是看会的, 也不是听会的, 而是亲自动手实践练会的。基于单片机的C语言开发和设计, 极大地促进了单片机在生产、生活各个领域的应用, 提高了程序开发效率。因而, C语言学习效果的好坏, 对今后单片机课程的学习具有深远的影响。

摘要:《C语言程序设计》课程是电子类专业的一门基础必修课, 也是电子和电气类学生应该学习的第一门计算机语言。该课程的学习主要是为结合单片机的应用开发服务的。如何让一名《C语言程序设计》的初学者能够较好地理解并掌握设计中的基本思想和精髓, 并且在掌握程序设计方法的同时结合单片机进行硬件和软件设计的应用开发是讲授这门课的重点所在, 故本文结合单片机, 以单片机系统为开发平台, 探讨了《C语言程序设计》的教学方法, 为学生以后能基于单片机进行硬件和软件的学习开发打下坚实的基础。

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

参考文献

[1]向艳.C程序设计课程教学体系和模式探讨[J].计算机教育, 2010, (3) :112-114.

[2]谭浩强.C语言程序设计教程 (第三版) [M].北京:清华大学出版社, 2013.

[3]冯运仿.《C语言程序设计》课程教学模式的研究与实践.福建电脑, 2012, (1) .

[4]董蕴宝, 潘旭军.浅谈C语言在单片机中的程序设计[10].科技信息, 2009, (13) :59-67.

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

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

40. #include void fun(int n) { if(n==1) printf(”*n“); 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:n“); 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:n“); scanf(”%d“,&a); ________________________ return 0; } 3. 主函数调 f1 计算 n 阶乘. #include ”stdio.h“ ________________________ int main() { int n; long s; scanf(“%d”,&n); ________________________ printf(”ns=%ldn“,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!=%fn“,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(”ninput 5 scores:n“); 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(”ninput a inteager number:n“); 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(”ninput length,width and heightn“); scanf(”%d%d%d“,&l,&w,&h); ________________________ printf(”v=%d s1=%d s2=%d s3=%dn“,v,s1,s2,s3); return 0; } 8. 输入两个正整数 num1,num2,求其最大公约数. #include ”stdio.h“ ________________________ int main() { int d; int num1,num2; printf(”please input two numbers:n“); scanf(”%d,%d“,&num1,&num2); ________________________ printf(”gongyueshu:%dn“,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(”n“); return 0; } ________________________fun(________________________)

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

解答: 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(”输入错误!请重新输入!n“); 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:n“); scanf(”%d“,&n); if (sushu(n)) printf(”%d 是素数n“,n); else printf(”%d 不是素数n“,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(”%dn“,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:n“); scanf(”%d“,&n); if (wanshu(n)) printf(”%d 是完数n“,n); else printf(”%d 不是完数n“,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()

上一篇:勿忘国耻圆梦中华中学生作文700字下一篇:信访工作人员部分岗位职责要求