c语言程序结构和语法规则2Word文件下载.docx

上传人:b****5 文档编号:19371174 上传时间:2023-01-05 格式:DOCX 页数:19 大小:25.38KB
下载 相关 举报
c语言程序结构和语法规则2Word文件下载.docx_第1页
第1页 / 共19页
c语言程序结构和语法规则2Word文件下载.docx_第2页
第2页 / 共19页
c语言程序结构和语法规则2Word文件下载.docx_第3页
第3页 / 共19页
c语言程序结构和语法规则2Word文件下载.docx_第4页
第4页 / 共19页
c语言程序结构和语法规则2Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c语言程序结构和语法规则2Word文件下载.docx

《c语言程序结构和语法规则2Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言程序结构和语法规则2Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

c语言程序结构和语法规则2Word文件下载.docx

其中,自定义函数由用户自己设计。

图1-1C语言程序构造示意图

结合以上例如,可以看出C语言程序构造有以下根本特点:

〔1〕C语言程序是由函数(如:

main函数和max函数)组成的,每一个函数完成相对独立的功能,函数是C语言程序的根本模块单元。

main是函数名,函数名后面的一对圆括号“()〞是用来写函数的参数的。

参数可以有,也可以没有〔本程序没有参数〕,但圆括号不能省略。

〔2〕一个C语言程序总是从main()函数开始执行。

主函数执行完毕,程序执行完毕。

〔3〕C语言编译系统区分字母大小写。

C语言把大小写字母视为两个不同的字符,并规定每条语句或数据说明均以分号(;

)完毕。

分号是语句不可缺少的组成部分。

〔4〕主函数main()既可以放在max()函数之前,也可以放在max()函数之后。

习惯上,将主函数main()放在最前面。

〔5〕C语言程序中所调用的函数,既可以是由系统提供的库函数,也可以是由设计人员自己根据需要而设计的函数。

例如,在【例】中,printf()函数是C语言编译系统库函数中的一个函数,它的作用是在屏幕上按指定格式输出指定的内容;

max()函数是由用户自己设计的函数,它的作用是计算两个数中的较大值。

二、C语言程序的书写规那么

〔1〕C源程序是由一个主函数和假设干个其它函数组成的。

〔2〕函数名后必须有小括号,函数体放在大括号内。

〔3〕C程序必须用小写字母书写。

〔4〕每句的末尾加分号。

〔5〕可以一行多句。

〔6〕可以一句多行。

〔7〕可以在程序的任何位置加注释。

一个完好的C语言程序,是由一个main()函数〔又称主函数〕和假设干个其它函数结合而成的,或仅由一个main()函数构成。

[例1.3]仅由main()函数构成的C语言程序。

main()

{

printf(“ThisisaCprogram.\n〞);

ThisisaCprogram.

[例1.4]由main()函数和1个其它函数max()构成的C语言程序。

intmax(intx,inty)

return(x>

y?

x:

y);

intnum1,num2;

printf(“Inputthefirstintegernumber:

〞);

scanf(“%d〞,&

num1);

printf(“Inputthesecondintegernumber:

printf(“max=%d\n〞,max(num1,num2));

Inputthefirstintegernumber:

6←┘

Inputthesecondintegernumber:

9←┘

max=9

运算符与优先级、表达式

一、运算符

运算符包括下面这些类型:

1、算术运算符(+,—,*,/,%,++,——):

依次为加,减,乘,除,求余数。

除最后两种是单目运算符外,其它几种都是双目运算符。

前四种运算较简单,不再展开表达,最后三种运算的定义如下:

Op1%op2表示:

oPl—int(oP1/op2)*op2,其中ina(a)表示取a的整数部分(a的小数部分总非负)。

Op++表示op=op+1;

Op--表示op=op-1;

2.关系运算符(>,>=,==,<

=,<,!

=),

分别表示大于,大于等于,等于,小于等于,都是双目运算符,即运算结果是布尔型,即为true或false。

3.逻辑运算符(&&,||,!

分别表示与,或,非。

前两种是双日运算符,最后一种是单目运算符,参与运算的是布尔值,其结果也为布尔值。

4.位运算符(~,&,|,^>

>

.<<,>

)依次为取反,按位与,按位或,按位异或,右移位,左移位,无符号右移位

5.赋值运算符(=)赋值操作符,它将等号右边数据的值赋值给左边的变量。

6.条件运算柠(?

条件运算符为三目运算符,其—“般格式为:

a>

b?

a:

b

7.扩展运算符(十=’—=,*=,/=,%=,&=,|=,^=,>>=,<<=,>>>=)

扩展运算符都是由一个双目运算符和一个等号连在一起组成(注意它们之间不能用空格隔开),以“+=〞为例说明这类扩展运算符的用法:

A+=B;

表示A=A+B其它类似。

8其他运算符,如豆号运算符“,〞,分量运算符“·

〞。

再如实例运算符“instanceof〞,内存分配运算符“new〞,强迫类型转换运算符“(类型)〞,方法调用运算符“()〞,取数组元素运算符“{

}〞。

比方,设t是类Thread的一个实例。

分量运算符:

t.name表示类的实例的调用,又叫点问,〔意指通过点的操作符访问类的实例对象〕

二、运算符的优先级

优先顺序依次为(1级最优先,余下类推)

1

〔〕

5

+-

9

13

||

2

++--!

~instanceof

6

>

<

<

10

^

14

?

3

new

7

=<

=

11

!

15

=+=-=*=/=

4

*/%

8

==!

12

&&

16

&=!

=<

=>

记住这些优先次序是困难的,—个较好的方法是使用括号(),比方:

b&

&

b>

c&

c>

a可以用括号写为((a>

b)&

(b>

c))&

(c>

a)

这样即明晰易懂,也不易出错。

三、表达式

表达式是由操作数和运算符按一定的语法形式组成的符号序列。

—个常量或一个变量名字是最简单的表达式,其值即该常量或变量的值。

表达式的值还可以用作其他运算的操作数,

形成更复杂的表达式。

表达式的类型由运算以及参与运算的操作数的类型决定,可以是简单类型,也可以是复合类型,如下面的例子所示:

布尔型表达式:

x&

y||z;

整型表达式:

num1十num2;

顺序构造:

输入与输出

一、选择题

(1)有以下程序

{intm,n,p;

m=%dn=%dp=%d"

m,&

n,&

p);

%d%d%d\n"

m,n,p);

假设想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,那么正确的输入是

  A〕m=123n=456p=789

  B〕m=123n=456p=789

  C〕m=123,n=456,p=789

  D〕123456789

(2)有以下程序

{intm=0256,n=256;

%o%o\n"

mn,n);

程序运行后的输出结果是

  A)02560400

  B)0256256

  C)256400

  D)400400

(3)有以下程序

{inta=666,b=888;

%d\n"

a,b);

  A)错误信息

  B)666

  C)888

  D)666,888

(4)有以下程序

main()

intx=102,y=012;

printf(“%2d,%2d\n〞,x,y);

}

执行后输出结果是

  A)10,01

  B)02,12

  C)102,10

  D)02,10

(5)有以下程序

{inta;

charc=10;

floatf=100.0;

doublex;

a=f/=c*=(x=6.5);

%d%d%3.1f%3.1f\n"

a,c,f,x);

  A)16516.5

  C)1651.06.5

(6)有定义语句:

intx,y;

假设要通过scanf("

x,&

y);

语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的选项是

  A)1112<

回车>

  B)11,12<回车>

  C)11,12<回车>

  D)11,<回车>

    12<回车>

(7)设有如下程序段:

intx=2002,y=2003;

(x,y));

那么以下表达中正确的选项是

  A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出

  B)运行时产生出错信息

  C)输出值为2002

  D)输出值为2003

(8)假设有以下程序段〔n所赋的是八进制数〕

intm=32767,n=032767

%d,%o/n"

m,n);

  A)32767,32767B)32767,032767

  C)32767,77777D)32767,077777

(9)假设有以下程序段

intm=0xabc,n=0xabc;

m-=n;

%X\n"

m);

  A)0X0

  B)0x0

  C)0

  D)0XABC

(10)

i、j、k为int型变量,假设从键盘输入:

1,2,3<

回车>

,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是

  A)scanf(“%2d%2d%2d〞,&

i,&

j,&

k);

  B)scanf(“%d%d%d〞,&

  C)scanf(“%d,%d,%d〞,&

  D)scanf(“i=%d,j=%d,k=%d〞,&

(11)设有定义:

longx=-123456L;

,那么以下可以正确输出变量x值的语句是

  A〕printf(“x=%d\n〞,x);

  B)printf(“x=%1d\n〞,x);

  C〕printf(“x=%8dL\n〞,x);

  D〕printf(“x=%LD\n〞,x);

(12)以下程序段的输出结果是

inta=1234;

%2d\n"

a);

  A)12

  B)34

  C)1234

  D)提示出错、无结果

(13)x、y、z被定义为int型变量,假设从键盘给x、y、z输入数据,正确的输入语句是

  A)INPUTx、y、z;

  B)scanf(“%d%d%d〞,&

y,&

z);

  C)scanf(“%d%d%d〞,x,y,z);

  D)read(“%d%d%d〞,&

(14)假设变量已正确说明为float类型,要通过语句scanf(“%f%f%f

〞,&

a,&

b,&

c);

给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:

  A)10<

  B)10.0,22.0,33.0<

   22<

   33<

  C)10.0<

 D)1022<

   22.033.0<

33<

(15)有如下程序

main0

{inty=3,x=3,z=1;

printf(“%d%d\n〞,(++x,y++),z+2);

运行该程序的输出结果是

  A)34

  B)42

  C)43

  D)33

(16)以下程序执行后的输出结果是(小数点后只写一位)

 

{doubled;

floatf;

lingl;

inti;

i=f=1=d=20/3;

%d%ld%f%f\n"

i,l,f,d);

(17)以下说法中正确的选项是

  A)#define和printf都是C语句

  B)#define是C语句,而printf不是

  C)printf是C语句,但#define不是

  D)#define和printf都不是C语句

(18)以下程序的输出结果是

  A)17,021,0x11B)17,17,17

  B)17,0x11,021D)17,21,11

{intk=17;

%d,%o,%x\n"

,k,k,k);

(19)以下表达中正确的选项是

  A)输入项可以是一个实型常量,如:

   scakf("

%f"

3.5);

  B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:

a=%d,b=%d"

);

  C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:

%4.2f"

f);

  D)当输入数据时,必须指明变量地址,例如:

(20)假设有以下定义和语句:

intu=010,v=0x10,w=10;

%d,%d,%d\n,u,v,w);

那么输出结果是:

  A)8,16,10B)10,10,10C)8,8,10D)8,10,10

(21)请读程序片段:

inti=65536;

printf("

i);

上面程序片段的输出结果是

  A)65536

  B)0

  C)有语法错误,无输出结果

  D)-1

(22)假设x和y都是int型变量,x=100,y=200,且有下面的程序片段:

%d"

  A)200

  B)100

  C)100200

  D)输出格式符不够,输出不确定的值

(23)请读程序:

#include<

stdio.h>

floatb,c;

%2d%3f%4f"

\na=%d,b=%f,c=%f\n"

a,b,c);

假设运行时从键盘上输入9876543210<

CR>

(<

表示回车),那么上面程序的输出结果是

  A)a=98,b=765,c=4321

  B)a=10,b=432,c=8765

  C)a=98,b=765.000000,c=4321.000000

(24)以下程序的输出结果是 【24】。

#include<

math..h>

{inta=1,b=4,c=2;

floatx=10..5,y=4.0,z;

z=(a+b)/c+sqrt((double)y)*1.2/c+x;

pritnf("

%f\n"

z);

}

  A)14.000000

  B)015.400000

  C)13.700000

(25)以下程序的输出结果是 【25】。

{inta=2,c=5;

a=%%d,b=%%d\n"

a,c);

  A)a=%2,b=%5

  B)a=2,b=5

  C)a=%%d,b=%%d

  D)a=%d,b=%d

(26)执行下面程序中的输出语句,a的值是

  A)65

  B)20

  C)15

  D)10

(a=3*5,a*4,a+5));

二、填空题:

〔1〕以下程序运行后的输出结果是【1】。

{intx=0210;

x);

〔2〕以下程序运行后的输出结果是【2】。

{charc;

intn=100;

floatf=10;

x=f*=n/=(c=50);

%d%f\n"

n,x);

〔3〕以下程序运行时假设从键盘输入:

102030<

输出结果是.

#include<

{inti=0,j=0,k=0;

%d%*d%d"

i,j,k);

(4)以下程序段的输出结果是【4】。

inti=9;

%o\n"

(5)以下程序运行后的输出结果是【5】。

{inta,b,c;

a=25;

b=025;

c=0x25;

%d%d%d\n"

a,b,c);

(6)有以下语句段

intn1=10,n2=20;

printf(“【6】〞,n1.n2);

要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。

n1=10

n2=20

(7)假设有语句

inti=-19,j=i%4;

j);

那么输出结果是 【7】 。

(8)假设有程序

{inti,j;

i=%d,j=%d"

;

j);

i=%d,j=%d\n"

i,j);

要求给i赋10,给j赋20,那么应该从键盘输入 【8】 。

(9)以下程序的输出结果是【9】。

main()

{inta=177;

(10)以下程序的输出结果是【10】。

{inta=0

a+=(a=8);

(11)以下程序的输出结果是【11】

{inta=1,b=2;

a=a+b;

b=a-b;

a=a-b;

printf(“%d,%d\n〞,a,b);

(12)以下程序的输出结果是16.00,请填空。

{inta=9,b=2;

floatx=【12】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf(“%5.2f\n〞,z);

(13)以下程序的输出结果是[13]。

{unsignedshorta=65536;

intb;

printf(“%d\n〞,b=a);

(14)假设想通过以下输入语句使a=5.0,b=4,c=3,那么输入数据的形式应该是【14】。

intb,c;

floata;

%f,%d,c=%d"

,&

a,&

b,&

c);

(15)假设想通过以下输入语句给a赋于1,给b赋于2,那么输入数据的形式应该是【15】。

inta,b;

a=%b,b=%d,&

b);

答案:

01)A  02)C  03)B  04)C  05)B06)A  07)D  08)A  09)C  10)C11)B  12)C  13)B  14)B  15)D16)A  17)D  18)D 19)D  20)A21)B  22)A  23)C  24)C  25)D26)C 

二、填空题

(1)88(3)10300(4)11(5)252137

(6)n1=%d\nn2=%d(7)-3(8)i=10,j=20(9)261(10)16

(11)2,1(13)0(14)5.0,4,c=3(15)a=1,b=2

水滴石穿C语言之指针、数组和函数

根本解释

  1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置〔地址〕;

数组的本质那么是一系列的变量。

  2、数组名对应着〔而不是指向〕一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。

指针可以随时指向任意类型的内存块,它的特征是“可变〞,所以我们常用指针来操作动态内存。

  3、当数组作为函数的参数进展传递时,该数组自动退化为同类型的指针。

  问题:

指针与数组

  听说chara[]与char*a是一致的,是不是这样呢?

  答案与分析:

  指针和数组存在着一些本质的区别。

当然,在某种情况下,比方数组作为函数的参数进展传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。

请看以下的例子:

chara[]="

Hi,pig!

"

char*p="

  上述两个变量的内存布

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1