C语言09

合集下载

《C语言程序设计教程(第二版)》 第09章-指针(1)

《C语言程序设计教程(第二版)》 第09章-指针(1)

访问p_int所 指向的变量
getch();
}
程序运行结果: num_int=12, *p_int=12 num_f=3.14, *p_f=3.14 num_ch=p, *p_ch=p
2019/2/22
11
1、指针变量的定义
指针变量的定义标识符
数据类型 *指针变量[,*指针变量2……];
例如, [案例9.1]中的语句:
int num_int=12, *p_int ;
特别说明:定义而未初始化的指针变量(例如 p_int)是悬空的。
使用悬空指针变量,很容易破坏系统,导致系统 瘫痪。
2019/2/22
12
2、取地址运算 : &变量名 例 如 , [ 案 例 9.1] 中 的 &num_int 、 &num_f 、 &num_ch 的结果,分别为对应变量的地址 (num_int 、 num_f、num_ch)。 注意:指针变量只能存放相同数据类型变量的 地址。 例如, [案例9.1]中的指针变量p_int、p_f、p_ch, 只能接收int型、float型、char型变量的地址,否则出 错。
使p_int指向变量num_int
2019/2/22
10
printf(“num_int=%d, *p_int=%d\n”, num_int, *p_int); printf(“num_f=%4.2f, *p_f=%4.2f\n”, num_f, *p_f); printf(“num_ch=%c, *p_ch=%c\n”, num_ch, *p_ch);
9.3* 1维数组的指针与列指针变量 9.4 字符串的指针和指向字符串的指针变量 9.5 指针数组与主函数main()的参数 9.6 返回指针值的函数

09电子设计大赛 书写LED程序(c语言)

09电子设计大赛 书写LED程序(c语言)

#include<REG52.h>#define uint unsigned int#define uchar unsigned charsbit key1=P1^4;sbit key2=P1^5;sbit key3=P1^6;sbit key4=P1^7;uchar code table_scan[25]={0x0c,0x0e,0x1c,0x1f,0x2c,0x2e,0x3c,0x3e,0x4c,0x4e,0x5c,0x5e,0x6c,0x6e,0x7c,0x7e,0x8c,0x8e,0x9c,0x9e,0xac,0xae,0xbc,0xbe,0xfc };uchar lie_dh[24],lie_dl[24];uchar num,func,lie;bit flag;bit flag1;void delay1ms(uint ms){uint i,j;for(j=ms;j>0;j--)for(i=0;i<150;i++);}void delay(uint t){for(i=t;i>5;i--);EX1=1;for(i=t;i>5;i--);}void IO_init(void){P0=0xff;P1=0xff;P2=0xff;P3=0xff;}void timer_int_init(void){IE=0x85;IT0=1;}void write_one_word(void){for(lie=0;lie<25;lie++){P3=table_scan[lie];P0=0xff;P2=0xdf;delay(10);if(flag){flag=0;P0=0xff;P2=0x00;delay(10);if(flag){flag=0;P0=0xf0;P2=0x00;delay(10);if(flag){flag=0;P0=0xc0;P2=0x00;delay(10);if(flag){flag=0;P0=0x60;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x80;}elselie_dl[lie]=lie_dl[lie]|0x40;}else{P0=0x20;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x20;}}}else{P0=0x0c;P2=0x00;delay(10);if(flag){flag=0;P0=0x08;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x08;}elselie_dl[lie]=lie_dl[lie]|0x04;}else{P0=0x02;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]|0x02;}elselie_dl[lie]=lie_dl[lie]|0x01;}}}else{P0=0x00;P2=0xf0;delay(10);if(flag){flag=0;P0=0x00;P2=0xc0;delay(10);if(flag){flag=0;P0=0x00;P2=0x80;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x80;}elselie_dh[lie]=lie_dh[lie]|0x40;}else{P0=0x00;P2=0x20;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x20;}elselie_dh[lie]=lie_dh[lie]|0x10;}}else{P0=0x00;P2=0x0c;delay(10);if(flag){flag=0;P0=0x00;P2=0x08;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x08;}elselie_dh[lie]=lie_dh[lie]|0x04;}else{P0=0x00;P2=0x02;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]|0x02;}elselie_dh[lie]=lie_dh[lie]|0xf1;}}}}}}void clear_one_word(void){for(lie=0;lie<25;lie++){P3=table_scan[lie];P0=0xff;P2=0xff;delay(10);if(flag){flag=0;P0=0xff;P2=0x00;delay(10);if(flag){flag=0;P0=0xf0;P2=0x00;delay(10);if(flag){flag=0;P0=0xc0;P2=0x00;delay(10);if(flag){flag=0;P0=0x80;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0x7f;}elselie_dl[lie]=lie_dl[lie]&0xbf;}else{P0=0x20;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0xdf;}elselie_dl[lie]=lie_dl[lie]&0xef;}}else{P0=0x0c;P2=0x00;delay(10);if(flag){flag=0;P0=0x08;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0xf9;}elselie_dl[lie]=lie_dl[lie]&0xfb;}else{P0=0x02;P2=0x00;delay(10);if(flag){flag=0;lie_dl[lie]=lie_dl[lie]&0xfd;}elselie_dl[lie]=lie_dl[lie]&0xfe;}}}else{P0=0x00;P2=0xf0;delay(10);if(flag){flag=0;P0=0x00;P2=0xc0;delay(10);if(flag){flag=0;P0=0x00;P2=0x80;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0x7f;}elselie_dh[lie]=lie_dh[lie]&0xbf;}else{P0=0x00;P2=0x20;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0xdf;}elselie_dh[lie]=lie_dh[lie]&0xef;}}else{P0=0x00;P2=0x0c;delay(10);if(flag){flag=0;P0=0x00;P2=0x08;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0xf7;}elselie_dh[lie]=lie_dh[lie]&0xfb;}else{P0=0x00;P2=0x02;delay(10);if(flag){flag=0;lie_dh[lie]=lie_dh[lie]&0xfd;}elselie_dh[lie]=lie_dh[lie]&0xfe;}}}}}}void cls(void){uchar i;for(i=0;i<24;i++){lie_dl[i]=0x00;lie_dh[i]=0x00;}}void not(void){uchar i;for(i=0;i<24;i++){lie_dl[i]=~lie_dl[i];lie_dh[i]=~lie_dh[i];}}void display_light(void){uchar i,j;EX1=0;for(j=0;j<2;j++)for(i=0;i<25;i++){P3=table_scan[i];P2=lie_dh[i];P0=lie_dl[i];delay1ms(1);}}void display_SMG(uchar temp) {if(temp==9)P1=0xf9;else if(temp==8)P1=0xf1;else if(temp==7)P1=0xfe;else if(temp==6)P1=0xf6;else if(temp==5)P1=0xfa;else if(temp==4)P1=0xf2;else if(temp==3)P1=0xfc;else if(temp==2)P1=0xf4;else if(temp==1)P1=0xf8;elseP1=0xf0;}void main(){IO_init();timer_int_init();display_SMG(num);EX0=1;while(1){while(func==1){write_one_word();display_light();}while(func==2){cls();func=1;display_SMG(func);}while(func==3){clear_one_word();display_light();}while(func==4){not();func=1;display_SMG(func);}}}void int0(void) interrupt 0 {delay1ms(10);if((!key3)&&(num<5))num++;else if((!key4)&&(num>0))num--;else if(!key2)flag1=1;else if(!key1)func=num;elsenum=num;P2=0x00;P0=0x00;delay1ms(10);while((P1&0xf0)!=0xf0);display_SMG(num);}void int1(void) interrupt 2 {flag=1;EX1=0;}void timer0(void) interrupt 1 {}void timer1(void) interrupt 3 {}。

C语言基础知识详细版

C语言基础知识详细版

字符变量
01
02
03
```c
char str[] = "Hello, 例子中,str是一个 包含13个字符的字符数组 ,存储了字符串常量 "Hello, world。"。
```c
char str[] = "Hello, world。"。
字符变量
```
在这个例子中,str是一个 包含13个字符的字符数组 ,存储了字符串常量 "Hello, world。"。
总结
05
先编译源文件生成目标文件
• 编译是将源代码翻译成目标代码的过程:C语言源代码文件通 常以“.c”为扩展名。编译后生成的目标文件通常以“.obj”或 “.o”为扩展名。连接是将目标文件和其他必要的库文件合并 成一个可执行文件的过程。
再连接生成可执行文件
• 连接时可能需要指定链接库的路径和名称:预编译处理命 令是指在源代码中以“”开头的指令。
```c
char c = 'A'。// 定义一个字符型变 量c并赋值为'A'。
C语言程序结构简述
```
标识符命名需符合规则,如a=20, b=15, sum=35等。标识符只能由字母、数字、下划线 组成。
先编译源文件生成目标文件
当我们编写好C语言程序后,需要先将其保存为以“.c”为后缀的源文件,然后使用C语言 编译器对源文件进行编译,生成以“.obj”或“.o”为后缀的目标文件。这个过程是将源 代码转换成机器码的过程。
变量赋值
在C语言中,可以使用赋值运算符(=)将一个值赋给一个变量。例如,可以使用 a = 2将整数值20赋给变量a。 变量在定义时可以直接赋值,也可以在定义后使用赋值运算符进行赋值。例如,可以定义一个变量a并立即给它 赋值:int a = 20。也可以先定义一个变量a,然后再给它赋值。

C语言必考点分析

C语言必考点分析

C语言笔试部分必考点分析整理人:吴永芬C语言部分1.名称的命名规则。

每次必出一个选择题。

(简单题,知道标志符的命名规则即可)。

只能由字母、数字、下划线三种字符组成,且第一个字符不能为数字。

不得使用系统保留字。

典型例题:例1.(07年4月)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)A)大写字母B)连接符C)数字字符D)下划线例2.(07年9月)可在C程序中用做用户标识符的一组标识符是 (A)A)and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Bigl解析:B中的-是减号,C中的.号不合法,D中的case是关键字。

2.判别合法的C语言常量。

历年来多次重复考。

(1)合法的整型常量。

十进制、八进制(以0开头,如0123合法的八进制,0128不合法的八进制)、十六进制(以0x开头,如0x125,0xef) 注意:是数字0不是字母o 或O ,16进制大小写一样。

在整形常量末尾加L表示是长整型(long, 也是整型但比int型数值围大),是合法的。

如115L,就是长整型常量。

(2)浮点型常量。

可以为十进制小数形式,但必须有小数点。

如:0.1 0.0 12.0 12. .12 等。

还可以为指数形式,但注意字母e或E前必须有数字,e后必须为整数。

如:e3,2.e.5,e3都不合法。

合法如:.5e3 5.5e3 5e3C编译系统默认将浮点型常量作为double 型处理。

因此,如0.123实际上系统当成double型数据,而0.123f,0.123F才按照float处理。

这在实际运行中,不加f只是先按double型处理,然后转换成float型,降低了运行的速度,其他并无大碍。

(3) 字符型常量。

注意:字符型常量是用单引号括起来的单字符。

合法的:’3’ ’a’ ‘b’ ‘\n’ ‘\\’‘\b’ ‘\t’ ‘\r’‘\f’ ‘\’’‘\”’ ‘\ddd’ ‘\xhh’其中的ddd是1~3个八进制数所代表的字符,hh是1到2个十六进制数所代表的字符。

C语言教案(1-68课时)

C语言教案(1-68课时)

C语言程序设计授课教师:胡琪授课教师:09计1班教学计划一、学生基本情况09计1班,22人,是对口高考班,由于是刚进高一,还没有接触过任何的编程知识,甚至有些学生以前接触电脑的机会比较少,基础较差,但整体上还是很好学的,毕竟深知C语言是参加对口高考很重要的一门科目。

二、教学要求1.掌握C语言的主要特点、结构、程序编写的规则、开发的过程;2.掌握C语言的基本数据类型、运算符、表达式的应用,常用函数的使用;掌握顺序程序设计,会编写简单的程序;3.掌握三种if语句的使用形式、流程、功能;学会使用switch语句;4.掌握循环结构程序设计的方法,包含三种不同循环结构的应用方法以及这三种循环的异同点。

三、教学重点1.C语言基本数据类型、运算符、表达式的应用;2.常用函数的使用;3.顺序结构、选择结构、循环结构的程序设计方法。

四、教学难点1.C语言程序的编写规则、开发过程;2.顺序结构、选择结构、循环结构的程序设计方法及退出循环的方法。

五、主要教学方法、措施1.按照学生的认识规律,以程序设计为主线,采用循序渐进的方式,用通俗易懂的语言结合生活中的实例讲解C语言的基础知识、程序设计方法;2.结合实验法——精心安排实验,采用任务驱动式的方法即从学生实际水平出发布置难度适当的任务引导学生完成并驱动学生学习新的知识;3.加强课后辅导,要求学生按时完成作业,及时认真批改作业,发现问题及时纠正。

六、教学进度实训计划一、实训目标从应用和实践的角度出发,使学生通过上机操作掌握本课程的程序设计思想,达到能独立编写C语言应用程序的要求,为提高学生的实际编程能力,进一步学习其他程序设计语言打下基础。

二、教材内容分析本教材以TurboC 2.0为运行环境讲解C语言程序运行开发过程,要求学生掌握基本操作,通过上机检验程序运行结果,从而掌握程序设计的思想与方法。

三、具体专业技能要求1.学会编辑、运行简单的C语言程序;2.掌握定义数据类型的方法及赋值的方法,学会使用包含运算符的表达式,掌握输入输出函数的使用;3.掌握顺序结构、选择结构、循环结构的程序设计方法。

C语言设计模式

C语言设计模式

03 状态机模式
状态机模式1
有一个灯,按下开按钮,就会开灯,按下关按钮就会关灯。这就是一个很典型的简单的有限状态机。简单 的描述有2个状态,关灯[STATE_OFF],亮[STATE_LIGHT_ON] 。有两个事件,开和关按钮。这两个事件 促使状态机间的转换。
03 状态机模式
状态机模式2
有一个灯,按下开按钮,就会开灯,按下关按钮就会关灯。和一般等不同的是,两次开之间的灯的明暗不 一样。也就是说,第一次开的时候,是高亮,关灯后,再开是低亮,下次再开是高亮,循环往复。
命令模式的C语言实现也是非常显性的。命令发送方不通过直接调用的方式,而是通过发一个命令 消息给接收方,让接收方执行操作。C语言里采用命令模式的最常见的原因是核间通信,进程间交互。 如果是核间通信,通常是把命令按协定的格式封装在消息数据包里。如果是进程间通信,通常封装成一 个结构体,把参数带过去。命令的通道通常是队列。
07 适配及系列模式-----总结
非常常用的设计模式,使用中都是自然而然的,没有想到其实也是几种退化的面向对象设计模式。
08 建造者模式----介绍
08 建造者模式----总结
对于C语言开发者来说,通常是在构造复杂的数据结构时候会想到建造者模式。比如核间通信消息,进 程间通信消息。ISP里面的request消息,就隐性用了建造者模式。
。。。
.init
..rreeaadd
.writeLeabharlann .init.read
.write
09 外观模式----总结
引入外观模式,是客户对子系统的使用变得简单了,减少了与子系统的关联对象,实现了子系统与客户之间 的松耦合关系。但是,灵活性变差了,客户不能自由选择子系统内部的接口,只能使用封装好的一套接口。

09-10-C语言(填空)

09-10-C语言(填空)

一、表达式求值1.表达式:!(4<=6)&&(3<=7) 的值为_______ 02.表达式:x=!(2<5==5) 的值为【1】13.如果有变量定义:int i=1,j=8,a;则表达式:a=i+(j%4!=0) 的值为_【1】 14.表达式:x=(7+6)%4/2 的值为【1】05.如果有变量定义:int x,则表达式:x=-3*4%-6/50 的值为【1】 06.如果有变量定义:int x ,则表达式:x=3+7%5-6 的值为【1】-17.如果有变量定义:int x,则表达式:x=-3+4/5-6 的值为【1】 -98.如果有变量定义:int x=3,y=4,z=4则表达式:z>=y&&y>=x 的值为_____ 19.如果有变量定义:int x=3,y=4,z=4则表达式:(z>=y>=x)?1:0 的值为____ 010.如果有变量定义:int x=0,y=0,z=0则表达式:k=++x&&++y||++z 的值为_____ 111. 如果有变量定义:int x=0,y=0,z=0则表达式:k=++x||++y&&++z 的值为______ 112. 如果有变量定义:int x=40,y=4,z=4则表达式:x=x==(y-z) 的值为____ 013.如果有变量定义:int a=15,则表达式:a=a<<1 的值为【1】3014.如果有变量定义:int y;char x='a';则表达式:y='a'+1 的值为【1】9815.如果有变量定义float x=5.0,y=4.0则表达式:x<y?1.0:1.5的值为【1】1.516.如果有变量定义:int a=1,b=2,c=3,d=5则表达式:a>b ? a : c>d ? c : d 的值为【1】5 17.如果有变量定义:int a=1,b=3,m 则表达式:m=a>b? a : b+1 的值为【1】 418.如果有变量定义:int a=1,b=2则表达式:(!a)||(a>b) 的值为_______ 019. 如果有变量定义:int a=1,b=2,c=1,x=4,y=5则表达式:!a&&b||x>y&&c 的值为______ 020如果有变量定义:int a=12,n=5则表达式:a%=(n%=2) 的值为_______ 021如果有变量定义:int a=2, b=3;float x=3.5, y=2.5则表达式:(float)(a+b)/2+(int)x%(int)y 的值为【1】 3.522如果有变量定义:int x=3.6, y=2.5则表达式:z=(int)x%(int)y 的值为【1】123如果有变量定义:int x=3.5,a=7,y=4.7则表达式:k=a%3*(x+y)/2 的值为【1】 324如果有变量定义:int a=5则表达式:a*=1+3 的值为【1】2025如果有变量定义:int a,b则表达式:b=(a=3*4,a*4),a+5 的值为【1】1726如果有变量定义:int a,b 则表达式:x=a=3,5*a 的值为【1】 1527如果有变量定义:int a=120 则表达式:a%=(5%2) 的值为【1】 028如果有变量定义:int a=10则表达式:a+=a-=a*=a 的值为【1】 029 如果有变量定义:int a=10则表达式:a+=a-=a*a 的值为【1】 -18030 如果有变量定义:int i=3则表达式:j=i++ 的值为【1】 331如果有变量定义:int i=3则表达式:j=++i 的值为【1】 432表达式5&7的值为【1】 ,5│7的值为【2】 .5 7二、填空1."字符常量'a'在内存中应占【1】字节,字符串""a""应占【2】字节." 1 22."在16位PC机环境下,int类型数据应占【1】字节,double类型数据应占【2】字节." 2 83"在16位PC机环境下,int类型数据的取值范围是–32768到【1】 ,unsigned int类型数据的取值范围是0到【2】 ." 32767 655354"若采用十进制数的表示方法,则076是【1】 ,0110是【2】 ." 62 72 3 "若有说明chars1='\x77';,则s1中包含【1】字符" 1 中5"设x为float型变量,y为float型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果为【1】类型." double6 "定义如下变量:int x=2.5,y=4.7; int a=7;表达式 x+a%3*(int)(x+y)%2/4的值为【1】 ." 27 "设a,c,x,y,z均为int型变量,请在下面对应的位置上写出各表达式的结果.① a=(c=5,c+6,c/2) 【1】② x=(y=(z=6)+2)/5 【2】" 2 18"下列程序的输出结果为【1】.main(){ char a='a', b='b', c='c';a=a-32; b+='c'-'a'; c=c-32+1;printf("a=%c#b=%c#c=%c",a,b,c);}a=A#b=d#c=D10"下列程序的输出结果为__________.main(){ int unsigned x1; int b=-1;x1=b; printf("%u",x1);}" 6553511"下列程序的输出结果为【1】.main(){ char c1='b', c2='o', c3='x';c1+=2; c2+=1; c3+=2;printf("%c%c%c",c1,c2,c3);} dpz11 "下列程序的输出结果为【1】.main(){ int a=5;printf("%d,", (3+5,6+9));a=(3*5,a+4); printf("a=%d\n",a);}15,a=912 下列程序的输出结果为【1】.main(){ int x, y, z;x=24; y=025; z=0x24;printf("%d,%d,%d", x, y, z);} 24,21,3613"若有说明int x=10,y=20;,请在下面对应的位置上写出各printf语句的输出结果.① printf("%2x\n",x+y); 【1】② printf("%2o\n",x*y); 【2】" 1e 31014 "下列程序的运行结果为【1】.main(){ char c1='a',c2='b',c3='c';printf("a%cb%cc%c"",c1,c2,c3);} aabbcc15 "设有变量定义:int j; float y;,输入字符流行:12345a72当执行C语句scanf("%2d%f",&j,&y);和printf("%d,%.1f",j,y);后,输出是【1】." 12,345.016 "以下程序的输出结果是【1】.void main(){ unsigned int a=65535;int b;printf("%d\n",b=a);} -117"若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量c的值是【1】_.c=(a-=(b-5));c=(a%11)+(b=2);818 "以下程序执行后的输出结果是【1】.main(){ int a=5,b,c;a*=3+2;printf("%d",a);a*=b=c=5;printf("%d",a);} 2512519 "完善程序:判断输入的一个整数是否能被3或7整除,若能输出YES,若不能输出NO. main(){ int k;printf(""Enter a int number:""); scanf(""%d"",&k);if(【1】) printf(""YES\n"");else printf(""NO\n"");} k%3==0 || k%7==019"下面的程序,若输入字母d输出结果是【1】.#include ""stdio.h""main(){ char c1,c2;c1=getchar();while(c1<97 || c1>122) c1=getchar();c2=c1-32;printf(""%c,%c\n"",c1,c2);} d,D20"若程序运行时,输入以下数据:righ?〈CR〉,则程序的执行结果为【1】.#include ""stdio.h""main(){ char c;while((c=getchar())!='?') putchar(++c);} sjhi21"设i为int型变量,则下面程序段的输出结果是【1】.for(i=1; i<=2; i++) printf("OK");OKOK22"设i,j,k均为int型变量,则执行完以下for语句后,k的值是【1】 .for(i=0,j=10;i<=j;i++,j--) k=i+j+1;1123"下面是求n的阶层的程序.main(){ int i,n; long np;scanf("%d",&n);np=【1】;for(i=2; i<=n; i++)【2】;printf("%d!=%ld\n",n,np);} 1 np=np*i24 下面的程序求1到100的整数累加和.main(){ int i, sum= 【1】 ;i=1;while( 【2】 ) { sum+=i; i++; }printf(""sum=%d\n"", sum );} 0 i<=10025 下面程序的作用是:求出二维数组中最大元素的值和它所在的行和列.main(){ int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};int i,j,row,colum,max;max=a[0][0]; row=0; colum=0;for(i=0; i<3 ; i++)for(j=0; j<4; j++)if( 【1】<a[i][j]) { max=a[i][j]; row =i; 【2】=j ; }printf("max=%d,row=%d,colum=%d\n",max,row,colum);}max colum26 "求出二维数组中的最大元素值.main( ){ int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,12,14}};printf(""max value is %d\n"", 【1】 );}max_value( int m,int n,int array[][4]){ int i,j,max;max=array[0][0];for(i=0;i<m;i++)for(j=0;j<n;j++)if(max<array[i][j]) max=array[i][j];return max;}max_value(3,4,a)27 "下面程序的输出结果是【1】.#define CIR(r) r*rmain(){ int a=1,b=2,t;t=CIR(a+b); printf(""t=%d\n"",t);}t=528 "在C语言的文件系统中,最重要的概念是"文件指针",文件指针的类型只能是_______ 类型. FILE29 "C语言调用【1】函数打开文件,调用【2】函数关闭文件.fopen fclose。

安庆职业技术学院2009-2010学年第二学期计算机中心实训机房课...

安庆职业技术学院2009-2010学年第二学期计算机中心实训机房课...
403(2)《C#程序设计》08软件王奇志
《网络工程》08网络陈富汉
403(3)《3DMAX》08动漫陶健林
403(4)《3DMAX》08动漫陶健林
406
407《计算机基础》09旅游(1)吴兴燕
408《计算机基础》09广告 熊祖涛(三节)
503《园林规划》08园林
508《会计电算化》09会电(2)查金莲
403(4)
406《计算机基础》09旅游(3)姜晓斌(三节)
407《计算机基础》09服装(2)高锐
408
503《PKPM》08建工
508《会计电算化》09会电(4)查金莲
509
402
403(1)《会计电算化》09会电(5)查金莲
403(2)《会计电算化》09会电(5)查金莲
403(3)
403(4)
406
509《PHOTOSHOP教程》08广告 汪俊
402《编排设计》08电艺江文琦(三节)
403(1)《电子商务》08投资理财徐奕胜
403(2)
403(3)《AutoCAD》08模具江建刚
403(4)《AutoCAD》08模具江建刚
406
407《CI的策划与设计》08广告 陈谊
408
503《pro/E》08数控(3)詹兴龙
403(4)《AutoCAD》08机电(4)(5)江建刚
406《日文文字处理》07商务日语
407《VFP》09会电(1)郑琳娜
408《计算机基础》09电艺(1)熊祖涛
503《pro/E》08数控(4)詹兴龙
508《物流技术》08物流(2)任媛媛
509《coreldraw教程》08服装(2) 储可可
402《网页设计与制作》08电艺 朱弘
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.二维数组的初始化 注意以下几点:
二维数组的初始化
1)在分行给二维数组赋初值时,对于每一行都可以只对 前几个元素赋初值,后面未赋初值的元素系统将自动赋初值0, 并且,还可以只对前几行元素赋初值。 2)在给全部元素赋初值时,说明语句中可以省略第一维 的长度说明(但一对方括号不能省略) 3)在分行赋初值时,也可以省略第一维的长度说明。 int a[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4] ={{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; int a[3][4] ={{1,2}, {5}, {9,10,11}}; int a[ ][4] ={1,2,3,4,5,6,7,8,9,10,11,12,13}; int a[ ][4] ={{1,2}, {5}, {9,10,11}}; /* int a[4][4],最后3个为0 */
9.1 数组的基本概念
● 数组是相同数据类型元素的集合,用统一的数组名来表示,
数组中的每一个元素用下标来区分。 数组元素又称为下标变量,而以前的变量称为简单变量。 【例9-1】 改用数组来解决4.3节的例4-1, 确定谁是小偷 。
a[0]、a[1]、a[2]、a[3] 分别表示A、B、C、D这4个人。 通过分析每一个人的回答,得到确定谁是小偷的条件为: a[1]+a[3]==1 && a[1]+a[2]==1 && a[0]+a[1]==1 && a[0]+a[1]+a[2]+a[3]==1 逻辑表达式可以简化为 : a[1]+a[3]==1 && a[1]+a[2]==1 && a[0]+a[1]==1
● ●
数组名的命名规则与变量名相同。 说明数组大小的常量表达式必须为整型,并且用 方括号括起来(不能用圆括号)。 说明数组大小的常量表达式中可以包含符号常量, 但不能是变量。

int n; scanf("%d", &n); int a[n]; 是错误的!因为n是变量,不能用 来定义数组。
一维数组
在C语言中,数组元素的下标总是从0开始的。 若定义数组长度为N,数组元素的下标只能到N-1。 在C语言中,只能逐个引用数组元素,不能一次引用数组中的全部元素。 #include <stdio.h> 【例9-2】 下面的程序说明 了如何对数组定义和引用数 组元素: #define N 5 main( ) { int i, a[N]; for (i=0; i<N; i++) a[i]=i; 只能逐个给数组元素赋值,也 只能逐个打印数组元素,而不 能整体一起赋值、输入输出。 } for (i=0; i<N; i++) printf("%5d",a[i]); printf("\n");
#include <stdio.h> main( ) { int k,x[5]; static int y[5]; int z[5]={0}; for (k=0; k<5; k++)
局部数组 用static说明的 局部静态数组 在定义时是局部数 组,但在该说明语句 中有为数组赋初值的 部分
printf("%5d%5d%5d\n",x[k],y[k],z[k]); } 这个程序的输出结果为 -858993460 0 0 -858993460 0 0 -858993460 0 0 -858993460 0 0 -858993460 0 0
例如: #include <stdio.h> void main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10},i; for (i=0; i<10; i++) printf("%d, ", a[i]); } 运行结果: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Press any key to continue 改为: #include <stdio.h> void main( ) { int a[10]={1,2,3,4,5}, i; for (i=0; i<10; i++) printf("%d, ", a[i]); } 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, Press any key to continue /* 后5个元素自动赋初值为0 */
计算机程序设计基础(1) --- C语言程序设计(9)
孙甲松
sun@ 电子工程系 网络与人机语音通信研究所 东主楼9区314 电话: 62796193 / 13901216180 2010. 11.
第9章 数组
9.1 数组的基本概念 9.2 数组的定义与引用 9.2.1 一维数组 9.2.2 二维数组 9.2.3 数组的初始化 9.3 字符数组与字符串 9.3.1 字符数组的定义与初始化 9.3.2 字符串 9.3.3 字符数组与字符串的 输入与输出 9.3.4 字符串处理函数 9.4 数组作为函数参数 9.4.1 形参数组与实参数组的结合 9.4.2 二维数组作为函数参数 9.5 算法举例 1. 有序表的二分查找 2. 冒泡排序 3. 选择排序 4. 插入排序 5. 数值与数组元素下标的映射 6. 有序表中数组元素的插入 7. 有序表中数组元素的删除 8. 一般表的顺序查找 9. 用递归方式在数组中找最大值 10. 用递归方式进行数组元素的排序 11. 用数组存超长整数并计算
● 举例
#include <stdio.h> main( ) { int year,month,day,k,sum; int t[ ]={31,0,31,30,31,30,31,31,30,31,30,31}; printf("input year,month,day:"); scanf("%d%d%d",&year,&month,&day); if ((year%4==0 && year%100!=0)||year%400==0) t[1]=29; else t[1]=28; sum=day; for (k=0;k<month-1;k++) sum=sum+t[k]; printf("Days=%d\n",sum); }
9.2.2 二维数组
● 一般形式
类型说明符 数组名[常量表达式1][常量表达式2];
例如,说明语句 double a[3][4],b[5][10]; 定义了两个二维数组:3行4列的双精度实型数组a,共有12 个元素; 5行10列的双精度实型数组b,共有50个元素。 在C语言中,二维数组在计算机中的存储顺序是以行为主的, 即第一维的下标变化慢,第二维的下标变化快。 定义的数组,在计算机中存储的顺序如下: a[0][0]a[0][1]a[0][2]a[0][3] a[1][0]a[1][1]a[1][2]a[1][3] a[2][0]a[2][1]a[2][2]a[2][3]
● 举例
【例9-5】 求下列两个矩阵的乘积矩阵C=AB。
#include <stdio.h> main( ) { int i,j,k,c[2][3]; int a[2][4]={1,2,3,4,5,6,7,8}; int b[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; for (i=0; i<2; i++) /*矩阵相乘*/ for (j=0; j<3; j++) { c[i][j]=0; for (k=0; k<4; k++) c[i][j] = c[i][j] + a[i][k]*b[k][j]; } for (i=0; i<2; i++) /*输出乘积矩阵*/ { for (j=0; j<3; j++) printf("%6d", c[i][j]); printf("\n"); } }
if (a[1]+a[3]==1 && a[1]+a[2]==1 && a[0]+a[1]==1) printf(“ The thief is %c.\n” , k+'A'); } }
9.2 数组的定义与引用
9.2.1 一维数组
● 一般形式类型说明符 数 Nhomakorabea名[常量表达式];
其中类型说明符是定义数组中各元素的数据类型, 常量表达式是说明数组的大小(即数组中元素的个数)。 问题
如果程序改为: #include <stdio.h> int k, x[5]; /* 外部数组变量 会自动初始化为0 */ main( ) { static int y[5]; /*用static说明的局部静态数组会自动初始化为0 */ int z[ ]={0,0,0,0,0}; for (k=0; k<5; k++) printf("%5d%5d%5d\n", x[k], y[k], z[k]); } 这个程序的输出结果为 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 /* 不写长度,由初值个数确定数组长度 */
【例9-4】 从键 盘输入年、月、 日,计算并输出 该日是该年的第 几天。
#include <stdio.h> 【例9-4B】修改后为: main( ) { int year,month,day,k,sum; int t[ ]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("input year,month,day:"); scanf("%d%d%d",&year,&month,&day); if ((year%4==0 && year%100!=0)||year%400==0) t[1]++; /* 如果闰年,二月加1天 */ sum=day; for (k=0;k<month-1;k++) sum=sum+t[k]; printf("Days=%d\n",sum); } 思考:此题能否修改为:输入任何的年月日,告知是星期几???
相关文档
最新文档