文档库 最新最全的文档下载
当前位置:文档库 › C语言复习资料

C语言复习资料

C语言复习资料
C语言复习资料

C语言复习

第1章数据、运算与基本输入输出

(教材第1-4章)

1.1 基础知识点与要点提示

本部分主要内容涉及c语言中最基本的语言要素,包括c源程序的基本构成、数据类型、运算表达式、基本的输入/输出函数。

1.1.1c语言程序的基本语法要素

1.c程序构成

c语言程序通常称为c源程序或简称c程序,其基本结构和基本概貌如下所述。

(1) c源程序的组成结构是以函数为基本单位,即是由函数构成的。一个完整的c源程序至少要有一个且仅有一个主函数(main函数),它是程序启动时的唯一入口。除主函数外,c源程序还可包含若干其他函数。

(2) 函数由两部分组成:(见教材第6页)。

一个c源程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序的最开头,也可以放在程序最后,或在一些函数之前,或在一些函数之后)。

(3) 函数体包括声明部分和执行部分,而执行部分由若干个语句组成,每个语句和数据声明的最后必须有一个分号,分号是c语句的必要组成部分。

(4) 语句是由一些基本字符和定义按照c语言的语法规则构成。这些基本字符和定义符是c语言最基本的语法要素。

2. c语言基本语法要素

(1) 基本字符集

数字:

字母:

(注意:字母的大小写是可区分的。如:abc与ABC不同;abc与Abc不同)

运算符:

特殊字符和不可显示字符:_(连字符或下划线) \ 空格换行制表符

(2) 一般标识符

在c语言中,一般标识符是用户对实体定义的一种定义符,用来标识用户定义的变量名、函数名、文件名、数组名、类型名等.

标识符的构成规则为:只能由字母、数字和下划线三种字符组成且第一个字符必须是下划线或字母。

要注意:标识符的大小写字母表示不同的含义,即表示不同的标识符。

(3) 关键字

关键字是c语言中具有特定含义的字符序列,它作为专用的定义符不允许用户作为自定义的标识符使用。c语言关键字是由小写字母构成的字符序列,ANSI标准定义的共32个。(见教材第365页附录B)

(4) 特定字

包括预处理中的define、include等。

(注意:一般标识符不能使用关键字和特定字)

1.1.2数据类型

数据是程序加工、处理的对象,也是处理的结果。因此,数据是程序设计所要涉及和描述的主要内容。c语言中,任何数据对用户呈现的形式有两种:常量和变量。而程序处理的数据要存入计算机的内存中,其存储的情况(即结构)则要由数据类型来决定。因此,程

序中无论常量还是变量,都要属于各种不同的数据类型。c语言规定的数据类型有:(见教材第37页)

1.1.3运算与表达式

掌握和灵活使用c语言的运算符,关键要注意以下几点:(见教材第365页附录C)

(1)运算符的运算含义和运算规则;

(2)运算符的优先级和结合性;(多个运算符先看优先级,同优先级再看结合性,单目

和三目运算符都是从右到左结合,双目运算符除赋值运算符外都是从左到右结合。)

(3)运算符对运算对象类型的要求和限制,这涉及到运算对象类型的自动转换和强制类

型转换的概念。

1.1.4基本输入/输出

C语言提供的基本输入/输出函数有:printf、scanf、getchar、putchar、gets、puts,特别要区分getchar、scanf和gets。

其中scanf和printf函数常用的转换字符参见第83页(表4-3、表4-4)和第81页(表4-1、表4-2)。

1.2 习题

1.2.1 选择题

【1】c语言中字符型(char)数据在内存中的存储形式是__

A) 原码B) 反码C) 补码D)ASCII码

D(见教材50页,ASCII表见教材第364页附录A)

【2】c语言中长整型(long)数据在内存中的存储形式是__

A) 原码B) 反码C) 补码D)ASCII码

C(见教材40页)

【3】c语言中的数据类型包括__

A) 整型、实型、逻辑型B)整型、实型、字符型

C)整型、字符型、逻辑型D)整型、字符型、逻辑型、实型

B

【4】以下选项属于c语言的数据类型是__

A) 复数型B) 逻辑型C) 双精度型D) 集合型

C

【5】在c语言中,int、char和short三种数据类型数据所占用的内存__

A) 均为两个字节B) 由用户自己根据字节的需要定义

C) 由所用机器的机器字长决定D) 是任意的

C

【6】设short int类型的数据长度为两个字节,则unsigned short int类型数据的取值范围是__

A) 0~255 B) 0~65535 C) -32768~32767 D) -256~255

B(见教材43页)

【7】下列不属于c语言关键字的是__

A)default B) case C) signed D)define

D(见教材365页附录B)

【8】下列可以正确定义数据类型的关键字是__

A)Long B)unsigned C) shorter D)integer

B

【9】在c语言中,数字029是个__

A)八进制数B)十六进制数C) 十进制数D) 非法数

D(见教材40页,9不是八进制数,所以是非法数)

【10】以下错误的转义字符是__

A)‘\\’B) ‘\000’C) ‘\080’D) ‘\”’

C(见教材48页,8不是八进制数,所以错误)

【11】已说明int a=256,执行语句ptintf(“%x”,a);的结果是__

A)100 B) 256 C) ffe D) 00ff

A

【12】下列常数不能作为c语言常量的是__

A)0xG1 B) 2.5e2 C) 3e2 D) 0567

A(见教材40页,G不是十六进制数,所以是非法数。另外还需要注意浮点型常量的表示方法,见教材45页)

【13】将字符g赋给字符变量c,正确的表达式是__

A)c=“g”B) c=101 C) c=‘\147’D)c=‘0147’

C(ASCII表见教材第364页附录A,大写字母A的值是65或‘\101’,小写字母a的值是97或‘\141’)

【14】已知int i;float f;正确的语句是__

A)(int f)%i B)int(f)%i C) int(f%i) D)(int)f%i

D(见教材365页附录C)

【15】以下运算符中优先级最低的运算符为__

A)&& B)|| C) ! D)==

B(见教材365页附录C)

【16】已知char a;int b;float c;double d;执行语句c=a+b+c+d;后,变量c的数据类型是__

A)int B)char C) float D)double

C(等号右边表达式经混合运算后为double型,再经系统强制转换为float型)

【17】已知int j,i=1;执行语句j=-i++;后,j的值是__

A)1 B)2 C) -1 D)-2

C

【18】已知int i,a;执行语句i=(a=2*3,a*5),a+6;后,变量i的值是__

A)6 B)12 C) 30 D)36

C

【19】已知int i=5;执行语句i+=++i;后,i的值是__

A)11 B)12 C) 10 D)A,B,C答案都不对

B

【20】已知char c=‘A’;int i=1,j;执行语句j=!c&&i++;后,i和j的值是__

A)1,1 B)1,0 C) 2,1 D)2,0

B

【21】已知int n,i=1,j=2;执行语句n=i

A)1,2 B)1,3 C) 2,2 D)2,3

C

【22】已知int a,b;用语句scanf(“%d%d”,&a,&b);输入a,b的值时,不能作为输入数据分隔符的是__

A), B)空格C) 回车D)[Tab]

A

【23】c语言中,下列运算符的操作数必须是int类型的运算符是__

A)% B)/ C) ++ D)&&

A

【24】为了从键盘上输入字符串“How are you?”,可以直接使用函数__

A)scanf B)getchar C) gets D)都不能直接使用

C

【25】已知int a=4,b=5;则执行表达式c=a=a>b后,变量a的值为__

A)0 B)1 C) 4 D)5

A

【26】若给定条件表达式(n)?(c++):(c--),则其中(n)的正确含义是

A)n==0 B)n==1 C) n!=0 D)n!=1

C

【27】要判断char类型变量m是否是数字,可以使用下列表达式__

A)0<=m&&m<=9 B) …0?<=m&&m<=…9?

C) “0”<=m&&m<= “9”D)前面三个答案均是错误的

B

【28】已知char c;则为使下述表达式的值为1,则变量c的值可以是__

(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)&&c==27

A)66 B)27 C) 85 D) 前面三个答案均是错误的

D

【29】当c的值不为0时,在下列选项中能够将c的值赋给变量a、b的是__

A)c=b=a B) (a=c)||(b=c)

C) (a=c)||(b=c) D)a=c=b

C

【30】已知int w=1,x=2,y=3,z=4,a=5,b=6,则执行以下语句:

(a=w>x)&&(b=y>z);

变量a的值为__,b的值为__

A)5 B)0 C) 1 D) 2

A)6 B)0 C)15 D) 4

B

A

【31】已知a=b=c=1且均为int类型变量,则执行以下语句:

++a||++b&&++c;

变量a的值为__,b的值为__.

A)不正确B)0 C) 1 D) 2

A) 不正确B)1 C)2 D) 0

D

B

简析:尽管按照c语言的运算符优先级规则,在表达式++a||++b&&++c中应该先进行++和&&运算,最后再进行||运算,但由于表达式++a||++b&&++c前面的++a的结果非0,所以根据逻辑或(||)运算的规则,整个逻辑关系运算一定成立,结果为1。按照c语言的规定,此时逻辑或(||)运算符之后的表达式++b&&++c就不再运算了。变量b和c均保持原值1。

这是c语言中进行逻辑运算的特殊规定。

【32】已知int a,b;则以下错误的函数调用为__

A)a=getchar(); B) putchar(…\108?);

C)scanf(“%d%d”,&a,&b); D)putchar(…\”?);

B

简析:\ddd格式的常量要求是八进制的数据,108显然是错误的八进制表示

【33】已知int x;float y;所用的scanf函数的格式为:

scanf(“x=%d,y=%f”,&x,&y);

则为了将数据10和66.6分别赋给x和y,正确的输入应当是__

A)x=10,y=66.6<回车> B)10,66.6<回车>

C) 10<回车> 66.6<回车> D) x=10<回车> y=66.6<回车>

A

【34】已知int x=15,y=5;则执行下列语句后的输出结果为__

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

A)0 B)1 C) 6 D) 12

A

【35】已知int x=6;则执行x+=x-=x*x;语句后,x的值为__

A)36 B)-60 C) 60 D) -24

B

简析:表达式x+=x-=x*xx等价于x=x-x*x和x=x+x

【36】若w=1,x=2,y=3,z=4;则条件表达式w>x?w:y

A)4 B)3 C) 2 D) 1

B

简析:这是典型的条件表达式嵌套。条件表达式是从右到左结合,所以w>x?w:yx?w:(y

【37】已知int x;则使用逗号表达式(x=4*5,x*5),x+25的结果为__,变量x的值为__

A)20 B)100 C) 表达式不合法D) 45

A)20 B)100 C)125 D) 45

D

A

【37】3%-2和-3%2的结果是__

A)-1,1 B)1,-1 C) 1,1 D) -1,-1

B

简析:取余运算结果的正负号与被除数相同

1.2.1 填空题

【1】字符串“\\\22a,0\n”,“\000”“\0oo”“\010”"\080"的长度(strlen)是______

6,0,0,1,0

【2】字符串“\\\22a,0\n”,“\000”“\0oo”“\010”"\080"的字节数(sizeof)是_____

7,2,4,2,4

简析:

字符串“\\\22a,0\n”实际上是由7个字符‘\\’‘\22’‘a’‘,’‘0’‘\n’‘\0’组成。

“\000”实际上是由2个字符‘\000’‘\0’组成

“\0oo”实际上是由4个字符‘\0’‘o’‘o’‘\0’组成

“\010”实际上是由2个字符‘\010’‘\0’组成

"\080"实际上是由4个字符‘\0’‘8’‘0’‘\0’组成

字符串函数strlen碰到‘\0’就结束计算。

1.2.1 读程序写结果

【1】下面程序的输出结果为______

#include

void main()

{

int w=3,x=10,z=7;

printf(“%d”,x>10?x+100:x-10);

printf(“%d”,w++||z++);

printf(“%d”,!w>z);

printf(“%d”,w&&z);

}

0101

【2】当执行下面程序时,如果输入ABC<回车>,则输出的结果是_______

#include

#include

void main()

{

char ss[10]="12345";

int i;

gets(ss);printf("%s\n",ss);

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

printf("%c\n",ss[i]);

strcat(ss,"6789");

printf("%s\n",ss);

}

ABC

A字符数组

B

C

5

ABC6789

简析:字符数组ss初始化后ss[0]=‘1’、ss[1]=‘2’、ss[2]=‘3’、ss[3]=‘4’、ss[4]=‘5’、ss[5]= ss[6]= ss[7]= ss[8]= ss[9]=‘\0’。

输入ABC<回车>,执行gets函数读入字符串“ABC”后,字符数组ss变为ss[0]=‘A’、ss[1]=‘B’、ss[2]=‘C’、ss[3]=‘\0’、ss[4]=‘5’、ss[5]= ss[6]= ss[7]= ss[8]= ss[9]=‘\0’。

函数strcat碰到字符数组ss第一个‘\0’,即开始连接,连接后的字符数组ss变为ss[0]=‘A’、ss[1]=‘B’、ss[2]=‘C’、ss[3]=‘6’、ss[4]=‘7’、ss[5]=‘8’、ss[6]=‘9’、ss[7]= ss[8]=

ss[9]=‘\0’。

还要注意的是printf("%s\n",ss);碰到‘\0’,不会再继续输出。执行gets(ss);printf("%s\n",ss);后输出的是ABC而不是ABC 5。

1.2.1 选择题

【38】多项选择题。选出所有合法的常量____

A)3e22.5 B)-e-3 C)-.1e-1 D) …BASIC?

E) …\045?F)0fd G)0xfdaL H)e8

I) …\\?J)“\”

CEGIJ

【39】多项选择题。选出所有合法的变量名____

A) auto B)_auto_ C)-auto- D) 2_and

E)Turbo_C F)register G)_123

BEG

简析:变量名是一般标识符(即用户标识符的一种)。

【40】多项选择题。已知int a=3;则下列表达式的值,那些等于0?

A)5%6 B)5/6 C)5/6.0 D) 5>6

E)!a

BDE

【41】多项选择题。选择出结果为整型的表达式___。

(其中各个变量定义为:int i;char c,*s;float f,g;)

A) i+f B)i*c C)*s-…A? +48

D) f*(int)g E)*s+(int)c F)*(s+i)+(int)f

BCEF

【42】多项选择题。下列标识符中,不合法的用户标识符为___.

A) Pad B)a_10 C)CHAR

D) a#b E)int F)signed

DEF

【43】多项选择题。设x,y,z为float类型变量,则不合法的赋值语句是___。

A) *x=10;B)y=float(3);C)y=(x%2)/10;

D) x*=y+8;E)x=y=z=0;

ABC

【44】下列程序的输出结果是__。

#include

void main()

{

float a;

a=1/100000000;

printf(“%g”,a);

}

A) 0.000000e+00 B)0.0 C)1.000000e-08 D)0

D

1.2.2 填空题

【3】数学表达式sin25。+xcos25。的c语言表达式是_________。

Sin(3.14159/180*25)+x*cos(3.14159/180*25)

简析:在c的库函数sin和cos所要求的参数是以弧度来表示的,原题中的度要转化为弧度。【4】已知int x=10,y,z;则执行y=z=x;x=y==z后,变量x的值为_____。

1简析

【5】字符串“ab\034\\\x79”的长度为__.

5

简析:字符串“ab\034\\\x79”实际上由…a?…b?…\034?…\\?…\x79?…\0?六个字符组成,长度为5,字节数为6。

【6】已知int a=10,c=9;则表达式(--a==c++)? --a:++c的值为___。执行语句后变量a的值为__。变量c的值为__。

8 8 10

第2章流程控制

(教材第5-6章)

1.1基础知识点与要点提示

1.2 习题

1.2.1 选择题

【1】以下4个关于c语言的结论中,只有一个是错误的,它是___。

A) 可以用for语句实现的循环一定可以用while语句实现

B) 可以用while语句实现的循环一定可以用for语句实现

C) 可以用do-while语句实现的循环一定可以用while语句实现

D)do-while语句与while语句的区别仅是关键字“while”出现的位置不同

D

【2】以下错误的描述是____。

A) break语句不能用于循环语句和switch语句外的任何其他语句

B) 在switch语句中使用break语句或continue语句的作用相同

C) 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环

D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

B

【3】下列关于switch语句和break语句的结论中,正确的是___。

A) break语句switch语句中的一部分

B) 在switch语句中可以根据需要使用或不使用break语句

C) 在switch语句中必须使用break语句

D)break语句switch语句的一部分

B

【4】已知int a,b;则对于下列if语句:

if(a=b)printf(“A is equal to B\n”);

在编译时,c编译程序___

A) 能指出该语句有语法错误B) 不能指出该语句有语法错误

B

简析:表达式a=b可以作为if语句的条件判断,其含义是:先将变量b的值赋给变量a,然后判断变量a的值是否是0,如果不为0,则输出。在编译过程中,对于这样书写的语句,c 编译程序不会指出该语句有语法错误,编译程序至多会给出警告信息。

【5】若要求在if后一对圆括号中表示条件“a不等于0成立”,则能正确表示这一关系的表达式为___。

A) a==0 B) !a C) a=0 D) a

D

【6】c语句中对嵌套if语句的规定是:else总是与___配对。

A) 其之前最近的if B) 第一个if

C) 缩进位置相同的if D) 其前面最近且尚未配对的if

D

简析:前面可能有花括号隔开。

【7】以下错误的if语句是____。

A) if(x>y);

B) if(x==y)x+=y;

C) if(x!=y)scanf(“%d”,&x) else scanf(“%d”,&x);

D)if(x

C

【8】设有说明语句int a=1,b=0;则执行以下语句后,输出为___。

Switch(a)

{

case 1:

switch(b)

{case 0: printf(“**0**”); break;

case 1: printf(“**1**”); break;

}

case 2: printf(“**2**”); break;

}

A) **0** B) **0****2**

C) **0****1****2** D) 有与语法错误

B

简析:这是switch语句的嵌套。

【9】以下不是死循环的语句为___。

A) for(;;x+=i);

B) while(1){x++;}

C) for(i=10;;i--) sum+=i;

D)for(;(c=getchar()!=…\n?;)

printf(“%c”,c);

D

【10】有以下程序

#include

main()

{ int c=0,k;

for (k=1;k<3;k++)

switch (k)

{ default: c+=k

case 2: c++;break;

case 4: c+=2;break;

}

printf(“%d\n”,c);

}

程序运行后的输出结果是

A)3 B)5 C)7 D)9

A

【11】若int i,x;则for(i=x=0;i<9&&x!=5;i++,x++)控制的循环体将执行__次循环。

A) 10 B) 9 C) 5 D) 6

C

【12】与语句while(!x)等价的语句是__。

A) while(x==0) B) while(x!=0)

C) while(x!=1) D) while(~x)

A

【12】与语句while(x)等价的语句是__。

A) while(x==0) B) while(x==0)

C) while(x!=1) D) while(x!=0)

D

1.2.2 程序填空

【1】下面函数用来计算x y,其中y为整型变量且y≥0。

float power(float x,int y)

{ float z;

for(z=1;y>0;y【1】1)

z【2】x;

return(z);

}

-=

*=

【2】已知:任意一个正整数的立方都可以写成一串连续奇数的和。例如:

13×13×13=2197=157+159+ …+177+179+181

#include

void main()

{

long int n,i,k,j,sum;

printf("Enter n=");

scanf("%ld",&n);

k=n*n*n;

for(i=1;i

{

for(j=i,sum=0;【1】;j+=2)

sum+=j;

if(【2】)

printf("%ld*%ld*%ld=%ld=from%ldto%ld\n",

n,n,n,sum,i,【3】);

}printf("%10d",j);

}

sum

sum==k

j-2

【3】下面函数gcd(a,b)计算两个整数a和b(a>b)的最大公因子

gcd(int num,int den)

int temp;

while(den)

{

temp=【1】;

num=den;

den=temp;

}

return(【2】);

}

num%den

num

简析:用辗转相除法。

【4】函数primedec(m)是求整数m的所有因子,并输出。例如:m为120时,输出的因子为:

2,2,2,3,5

程序如下:

primedec(int m)

{

int k=2;

while(k<=m)

if(m%k【1】)

{

printf(“%d,”k);

【2】;

}

else

【3】;

}

==0

m/=k

k++

【5】下面程序输出100~200之间的所有素数

#include

Void main()

{

for(i=101;i<=199;i+=2)

{

for(j=2;j<=i-1;j++)

if(【1】) break;

if(【2】)

printf(“%4d ”,i);

}

}

i%j==0

j>i-1(或者j==i)

【6】下面的程序对从终端上接收的正文分别进行字符、字和行的计数,并输出。

#include

void main()

{

int c,n_line=0,n_word=0,n_char=0,inword=0;

while((c=getchar())!=EOF)

{

++n_char;

if(c=='\n')

++n_line;

if(c==' '||c=='\t'||【1】)

【2】;

else

if(inword==0)

{

【3】;

++n_word;

}

}

printf("line=%d word=%d characater=%d\n",n_line,n_word,n_char);

}

c=='\n'

inword=0

inword=0

简析:其中行是以\n为标志,字是以空格、\t、\n进行分隔的。n_char、n_line 、n_word分别为字符、行和字计数器。inword为标记,当inword的值为0时,表示前一个完整的字已经处理完毕;当inword的值为1时,表示正在处理一个字。程序就是靠inword值的变化来对字进行计数的。(可以参考教材第151页)

【7】按下面的近似公式计算:e=1+1/1!+1/2!+1/3!+……+1/n!,使绝对误差小于给定的ε,设ε=10-5。要求:用单循环实现,且除了输出e以外,还要输出总的项数n。

程序如下:

#include

void main()

{

float t,e;

int n;

e=1.;n=1.;t=1.;/*注意初值*/

while(t>=1e-5)

{

e+=t;

n++;

t【1】;

}

printf("e=%f,n=%d\n",e,【2】);

}

=/n

n

简析:纠正实验参考答案中的错误,总项数是n而不是n+1 【8】

#include

【1】

void main()

{

int s;

float n,t,pi;

t=1;pi=0;n=1.0;s=1;

while(fabs(t)>1e-6)

{

pi+=t;

【2】;

S【3】;

t=s/n;

}

pi*=4;

printf("pi=%10.6f\n",pi);

}

#include

n+=2

=-s

第3章数组

(教材第7章)

3.1 基础知识点与要点提示

3.2 习题

3.2.1 选择题

【1】错误的说明语句是___。

A)static char word[]={…T?, …u?, …r?, …b?, …o?, …\0?};

B)static char word[]={“Turbo”};

C)static char word[]=“Turbo”;

D)static char word[]=…Turbo?;

D

简析:对字符数组的初始化是灵活的,可以有上面所列举的A,B,C三种形式。其中答案B、C两种形式中的最后一个字符\0是多余的,但并不是错误的。在C语言中,系统会自动在字符串的结尾处加上一个字符\0作为串的结束标志。

【2】已知:char s[5],c;int b;则调用函数scanf的正确语句是___。

A)scanf(“%s%c”,s,c);

B)scanf(“%s%c”,&b,&c);

C)scanf(“%d%c”,b,&c);

D)scanf(“%s%c”,s,&c);

D

简析:

【3】要说明一个有10个int元素的数组,应当选择___。

A) int a[10] B) int a[2,5] C) int a[] D)int *a[10]

A

【4】合法的说明数组说明语句是___。

A) int a[]=“string”; B) int a[5]={1,2,3,4,5,6};

C) char a=“string”; D) char a[]={1,2,3,4,5,6};

A

简析:在C语言中,字符变量存放的是与字符对应的ASICII码。数值1,2,3,4,5,6所对应的ASICII码字符虽然是不可显示字符,但是这些都可作为控制字符。此时,数组的大小由后面的初始化数据的数量决定,即包含6个元素。

【5】在下列对C语言字符数组的描述中错误的是__。

A) 字符数组可以存放字符串

B) 字符数组中的字符串可以整体输入/输出

C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D) 字符数组的下标从0开始

C

【6】调用strlen(“abcd\0ef\0g”)的返回值是__。

A) 4 B) 5 C)8 D)9

A

【7】若有下列语句,则正确的描述是___。

static char x[]=“12345”;

static char y[]={1,2,3,4,5};

A) x数组和y数组的长度相同B) x数组的长度大于y数组长度

C) x数组的长度小于y数组长度; D) x数组的等价于y数组

B

简析:由于语句static char x[]=“12345”;是说明字符数组并进行初始化,系统按照C语言对字符串处理规定,在字符串的末尾自动加上串结束标记\0,因此数组x的长度是6,而数组y 是按照字符方式对数组进行初始化的,系统不会自动加上串结束标记\0,所以y数组的长度是5。

注意区分数组长度和字符串长度(strlen)。

【8】已知:char str1[10];str2[10]={“books”};则在程序中能够将字符串“books”赋给数组str1的正确方式是__。

A) str1=“book”; B) strcpy(str1,str2);

C) str1=str2; D) strcpy(str2,str1);

B

【9】若用数组名作为函数调用时的实参,则实际上传给形参的是___。

A) 数组的首地址B)数组的第一个元素

C) 数组中全部元素的值D)数组元素的个数

A

【10】以下关于字符串的说明中,错误的是___。

A) char str[7]=“FORTRAN”;

B) char str[]=“FORTRAN”;

C) char *str=“FORTRAN”;

D) char str[]={…F?, …O?, …R?, …T?, …R?, …A? , …N?};

A

【11】已知:char str1[20] =“abcde”;char str2[20] =“xyz”;则执行语句:

printf(“%d”,strlen(strcpy(str1,str2)));

输出结果是___,此时sizeof(str1)是__。

A) 9 B) 3 C)5 D)8

A) 4 B) 9 C)6 D)20

B

D

简析:执行strcpy(str1,str2)前,字符数组str1前5个元素分别是字符…a?, …b?, …c?, …d?, …e?,后15个元素均是字符…\0?;执行strcpy(str1,str2)后,字符数组str1前5个元素分别是字符…x?, …y?, …z?, …\0?, …z?,后15个元素均是字符…\0?。

【12】已知:char str[]=“ab\n\012\\\””;则执行语句:

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

的结果是___。

A) 3 B) 4 C)6 D)12

C

简析:数组str实际上共有七个元素,分别是…a?, …b?, …\n?, …\012?, …\\? ,…\”?, …\0?。

【13】在C语言中,引用数组元素时,其数组下标的数据类型允许是___。

A) 整型常量B)整型表达式

C) 整型常量或整型表达式D)任何类型的表达式

C

【14】以下对一维数组a的正确声明方式是__。

A) int a(10); B)int n=10,a[n];

C) int n;scanf(“%d”,n);int a[n];

D)#define SIZE 10 int a[SIZE];

D

简析:C语言规定,在说明数组的时候必须明确说明数组的维数和每一维的大小,不允许在数组说明语句中“动态”定义数组的长度,[]中必须是常量,因此不能选C。答案D是宏替换,替换的结果仍然是常量10。

【15】已知:int a[10];则对a数组元素的正确引用是___。

A)a[10] B) a[3,5] C)a(5) D)a[10-10]

D

【16】在C语言中,一维数组a的声明方式方式为:

类型说明符数组名

A) [常量表达式] B) [整型表达式]

C) [整型表达式]或[整型常量] D) [整型变量]

A

简析:注意题16和题15的区别,即区分声明和引用。

【17】以下能对二维数组a进行正确初始化的语句是__。

A) int a[2][]={{1,0,1},{5,2,3}};

B) int a[][3]={{1,2,3},{4,5,6}};

C) int a[2][4]={{1,2,3},{4,5},{6}};

D) int a[][3]={ {1,0,1},{},{1,1}};

B

简析:在声明多维数组并进行初始化的时候,只能空缺第一维的大小(不能选A)。在明确说明了第一维的大小后,给出的初始化数据一定要符合前面的说明(不能选C,因为前面声明了数组a是2行的,而后面的初始化数据却给出了3行)。在进行数据初始化时,初始化数据不能是空(答案D中{ {1,0,1},{},{1,1}}包含了{},是错误的。

【18】以下不能对二维数组a进行正确初始化的语句是__。

A) int a[2][3]={0}; B) int a[][3]={{1,2},{0}}

C) int a[2][3]={{1,2},{3,4},{5,6}}; D) int a[][3]={1,2,3,4,5,6};

C

【19】已知static int a[3][4];则数组中a各元素__。

A) 可在程序的运行阶段得到初值0 B) 可在程序的编译阶段得到初值0

C) 不能得到确定的值D) 可在程序的编译阶段或运行阶段得到初值0 B

简析:基本概念。外部变量(即全局变量,在函数外部定义)和静态变量(包括全局和局部静态变量)的初值是在编译阶段(即,程序尚未进行时),由编译系统分配永久性的存储空间并完成初始化。

【19】在函数外部有:int a[3][4];则数组中a各元素__。

A) 可在程序的运行阶段得到初值0 B) 可在程序的编译阶段得到初值0

C) 不能得到确定的值D) 可在程序的编译阶段或运行阶段得到初值0 B

【20】在C语言中,二维数组元素在内存中的存放顺序是__。

A)按行存放B) 按列存放C)由用户自己定义D)由编译器决定

A

【21】已知:int a[][3]={1,2,3,4,5,6,7};则数组a的第一维大小是___。

A)2 B)3 C)4 D)无确定值

B

【22】若二维数组a有m列,则在a[i][j]之前的元素个数为___。

A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1

B

【23】下面是对外部变量(即全局变量)s的初始化,其中错误的是__。

A)char s[5]=“abc”; B) int s[5]={ …a?, …b?, …c?};

C) char s[5]=“”; D) char s[]={“abcdef”};

D

简析:答案D中初始化数据的字符串长度超过了数组的大小。

【24】有字符数组a[80],b[80],则正确的输出语句是

A)puts(a,b); B)scanf(“%s%s”,a,b);

C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”);

B

简析:基本概念。根据库函数scanf()和gets()的使用规定,正确使用库函数gets的方法是:gets(a),scanf()中的数组名前不能加&。

【25】若要求:如果字符串s1大于字符串s2则要执行if语句的语句1,应当使用___。

A)if(s1>s2); B)if(strmcp(s1,s2));

C) if(strmcp(s1,s2)>0); D) if(strmcp(s2,s1)>0));

C

简析:strmcp是比较字符串大小的库函数。调用函数strmcp(s1,s2),若返回值为0,表示字符串s1等于字符串s2;若返回值>0,表示字符串s1大于字符串s2;若返回值<0,表示字符串s1小于字符串s2。

注意大于,小于的规定(见教材第149页)。

【26】下面描述正确的是__。

A) 两个字符串所包含的字符个数相同时,才能比较字符串

B) 字符字数多的字符串比字符少的字符串大

C) “STOP ”与“STOP”相等

D) 字符串“That”小于“The”

D

简析:C语言规定:字符串的大小与串的长度无关,比较大小是以ASCII码值为基础。【27】下面程序的运行结果是__。

char c[5]= {…a?, …b?, …\0?, …c?, …\0?};

printf(“%s”,c);

A) …a?…b?B)ab C)ab c D)以上三个答案均有错误

B

简析:printf碰到\0即停止输出。

【28】下面程序的运行结果是___(其中~表示空格)。

char a[7]= {“abcdef”},b[4]= “ABC”;

strcpy(a,b);

printf(“%c”,a[5]);

A) ~ B)\0 C)e D)f

D

简析:strcpy(a,b);后,数组a实际上由7个字符组成:…A?, B?, …C?, …\0?, …e?, …f?, …\0?。【29】已知以下程序段,则__。

char a[3],b[]= “ABCDE”;

a=b;

printf(“%s”,a);

A) 运行后将输出ABCDE B)运行后将输出AB

C) 运行后将输出ABC D) 程序出错;

D

简析:对于数组来说,a=b是错误的。

在这里也不能用strcpy(a,b),因为数组a的长度小于数组b。

3.2.2 程序填空

【1】程序读入20个整数,统计非负数个数,并计算非负数之和。请填空完成。#include

void main()

{

int i,a[20],s,count;

s=count=0;

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

scanf("%d",【1】);

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

{

if(a[i]<0)

【2】;

s+=a[i];

count++;

}

printf("s=%d\tcount=%d\n",s,count);

}

&a[i]

Continue

【2】下面程序是求出数组a的两条对角线上的元素之和。请填空完成。

#include

void main()

{

int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;

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

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

if(i==j)sum1+=a[i][j];

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

for(j=2;j>=0;【1】)

if(【2】)sum2+=a[i][j];

printf("sum1=%d,sum2=%d\n",sum1,sum2);

}

j—

i+j==2

简析:其实不需要双重循环。

【3】下面函数invert的功能是将一个字符串的内容颠倒过来。请填空完成。

void invert(char str[])

{

int i,j,【1】;

for(i=0,j=strlen(str)【2】;i

{

k=str[i];

str[i]=str[j];

str[j]=k;

}

}

k

-1

简析:在函数中使用了变量k但没有说明,所以【1】应该填写k,进行变量声明。按照题目的要求,要进行串反序,程序中的for循环正是用来完成这一操作的。但在进行串反序时,串的结束标记…\0?的位置应该保持不变,不能将…\0?移到串首(如果移到串首,则输出为空)。所以反序应当从…\0?字符的前一个字符开始,故【2】应填入-1。

【4】下面的函数是在二维数组中产生如下形式的杨辉三角形。请填空完成。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

…………

#define N 11

yahui(int a[][N])

{

int i,j;

for(i=1;i

{

a[i][1]=1;

a[i][i]=1;

}

for(【1】;i

for(j=2;【2】;j++)

a[i][j]=【3】+a[i-1][j];

}

i=3

j<=i

a[i-1][j-1]

C语言练习试题和答案

单项选择题: 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 [i] t 6.下列C语言用户标识符中合法的是( B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# 语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A) B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言复习题A

C语言复习题A 一、单项选择题 1、C语言提供的合法关键字是_______。 A、AUTO B、include C、unsigned D、dafault 2、合法的C语言标识符是__________。 A、2a B、sum C、default D、a+b 3、下面四个选项中,不是C语言整型常量的是。 A、01 B、0x11 C、081 D、-32768 4、下面四个选项中正确的实型常量是。 A、0x12 B、-12345.e-3 C、Ie0.5 D、e-5 5、若a为整型变量,则下面语句。 a=-2L; printf(“%d\n”,a); A、赋值不合法 B、输出值为-2 C、输出为不确定值 D、输出值为-2 6、在C语言中,要求参加运算的数必须是整数的运算符是。 A、/ B、! C、% D、= = 7、字符串“\\012\012”在内存中占用的字节数是个。 A、4 B、5 C、6 D、7 8、下列说法中,错误的是。 A、变量的定义可以放在所有函数之外 B、变量的定义可以不放在本编译单位中,而放在其他编译单位中 C、变量的定义可以放在某个函数的函数头中 D、变量的定义可以放在某个复合语句的开头 9、下列说法中,正确的是。 A、自动型变量是分配在内存的数据区的 B、寄存器型变量是分配在内存的数据区中的 C、表态型变量是分配在内存的数据区中的 D、外部参照型变量是分配在内存的数据区中的 10、在C语言中,一个int型数据在内存中占用2个字节,则int型数据的取值范围是。 A、-128~127 B、-32768~32767 C、0~65536 D、0~2147483647 11、下面不正确的字符串常量的。 A、’abc’ B、”12’12” C、”0” D、” ” 12、char型常量在内存中存放的是。 A、ASCII代码值 B、BCD代码值 C、内码值 D、十进制代码值 13、以下程序段。 int x=2,y=3;

2017全国计算机等级考试二级C语言知识点超全整(打印版).docx

全国计算机等级考试

目录 第-部分公共基础知识 第1章算法与数据结构 (1) 考点1算法........................... I 考点2数据结构.. (1) 考点3线性表及英顺序存储结构 (1) 考点4栈和队列 (1) 考点5线性链表 (2) 考点6树与二叉树 (2) 考点7查找技术 (3) 考点8排序技术 (3) 第2章程序设计基础 (4) 考点I程序设计方法与风格 (4) 考点2结构化程序设计 (5) 考点3面向对象的程序设计 (5) 第3章软件工程基础 (5) 考点1软件工程基本概念 (5) 考点2软件分析方法 (6) 考点3结构化设计方法 (7) 考点4软件测试 (8) 考点5程用的调试 (9) 笫4帝数据库设计基础 (9) 考点1数据库系统的基本概念 (9) 考点2数据带系统的基木概念 (10) 考点3关系代数 (12) 考点4数据库设计与管理 (12) 第二部分二级C语言 笫1章程序设汁基本概念 (14) 考点1程序设计 (14) 考点2 C程序的结构和格式 (14) 考点3常鱼和变蛍 (14) 考点4算术表达式 (15) 考点5赋值表达式 (16) 考点6自加.口减和逗号运算 (16) 第2章顺疗结构 (17) 考点1字符型常屋与变虽 (17) 考点 2 putchar 与gclchar 函数 (17) 考点3 printf函数 (17) 考点4 scanf函数 (18) 考点5位运算的含义和应用 (18) 第3章选择结构 (19) 考点1关系运算符和关系表达式 (19) 考点2逻轉运算符和逻辑表达式 (19) 考点3 if语句及其构成的选择结构 (19) 考点4 switch语句与break语句 (20) 第4章循环结构 (20) 考点1 while循环结构 (20) 考点2 do-while循环结构 (21) 考点3 for循环结构 (21) 考点4嵌套循环语句 (21) 第5章函数 (21) 考点I库函数 (21) 考点2函数的调用 (22) 考点3参数传递 (22) 考点4函数的递归调用 (23) 考点5局部、全局变量和存储分类 (23) 第6章地址与指针 (23) 考点1变量的地址和指针 (23) 考点2抬针变量的操作 (24) 考点3函数之间地址的传递 (24) 第7章数组 (24) 考点1 一维数组的定义及元素的引用??24 考点2函数对-维数组及元素的引用??25 考点3二维数组的定义 (25) 考点4二维数组和指针 (25) 考点5二维数组名和指针数组作为实参???26 第8章字符串 (26) 考点|用-?维字符数组存放字符出? (26) 考点2使指针指向字符串 (26) 考点3字符串的输入和输出 (26) 考点4字符串数组 (27) 考点5用于字符串处理的函数 (27) 第9章编译预处理和动态存储分配 (27) 考点I編译预处理 (27) 考点2宏替换 (27) 考点3文件包含处理 (28) 考点4动态存储分配 (28) 第10章结构体.共用体和用戸定义类型28考点1结构体 (28) 考点2共用体 (29) 考点3用户定义类型 (29) 第11章文件 (29) 考点1文件指针 (29) 考点2文件的读写 (30)

C语言常用函数

C语言的常用库函数 函数1。absread()读磁盘绝对扇区函数 原形:int absread(int drive,int num,int sectnum,void *buf) 功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num 个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。 参数:drive=0对应A盘,drive=1对应B盘。 返回值:0:成功;-1:失败。 头文件:dos.h 函数2。abswrite()写磁盘绝对扇区函数 原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驱动器)、1(B驱动器)、 nsects=要写的扇区数(最多64K个); lsect=起始逻辑扇区号; buffer=要写入数据的内存起始地址。 功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。 返回值:0:成功;-1:失败。 头文件:dos.h 函数3。atof()将字符串转换成浮点数的函数 原形:double atof(const char *s) 功能:把s所指向的字符串转换成double类型。 s格式为:符号数字.数字E符号数字 返回值:字符串的转换值。 头文件:math.h、stdlib.h 函数4。atoi()将字符串转换成整型数的函数 原形:int atoi(const char *s) 功能:把s所指向的字符串转换成int类型。 s格式为:符号数字 返回值:字符串的转换值。若出错则返回0。 头文件:stdlib.h 函数5。atol()将字符串转换成长整型数的函数 原形:long atol(const char *s)

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

C语言复习资料

第一章C语言概述1.1选择题 【题1.1】以下不是C语言的特点的是( B ) A.C语言简洁、紧凑 B.能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D.C语言移植性好 【题1.2】以下不正确的C语言标识符是( D )。A.ABC B.abc C.a_bc D.ab.c 【题1.3】以下正确的c语言标识符是( C )。 A.%x B.a十b C.a123 D.test! 【题1.4】一个c程序的执行是从( A ). A.main( )函数开始,直到main( )函数结束B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束 D.main( )函数开始,直到最后一个函数结束 【题1.5】一个C语言程序是由(B)。 A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成 【题1.6】一个c程序是由( B )。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C. 若干过程组成 D.若干子程序组成 【题1.7】C语言派程序的基本单位是( B )。 A.过程 B.函数 c子程序 D.标识符 【题1.8】编辑程序的功能是( A )。 A.建立并修改程序 B.将c源程序编译成目标程序C.调试程序 D.命令计算机执行指定的操作

1.2填空题 【题1.9】c语言符号集包括【英文字母、数字和一些有待定含义的标点符号】。 【题1.10】一个c程序有且仅有一个【main()】函数。 【题1.11】C程序的基本单位是【函数】。 【题1.12】一个c派程序有【1】个main( )函数和【若干】二个其他函数。【题1.13】在一个C源程序中,注释部分两侧的分界符分别是【/*】和【*/】。 【题1.14】结构化设计中的三种基本结构是【顺序结构、分支结构和循环结构】。 【题1.15】在C语言中,输入操作是由库函数【scanf】完成的,输出函数是由库函数【printf】完成的。 1.3编程题 【题1.16】编写一个程序,在屏幕上输出你的姓名。试着上机编辑、编译、运行你的程序。 #include main() { printf("My Name is : Your Name!\n"); } 第二章数据类型、运算符与表达式 2.1选择题 【题2.1】以下结果为整数的表达式(设有int i;char c;float f;)(B). A.i十f B.i*c C.c十f D.i十c十f 【题2.3】以下使i的运算结果为4的表达式是(D)。 A.int i=0,j=0; (i=3,(j十十)十i); B.int i=1,j=0; j=i=((i=3)*2); C.int i=0,j=1; (j==1)?(i=1);(i=3); D.int i=1,j=1;

计算机二级C语言高效考点

计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a

C语言中常见的功能函数

C语言中常见的功能函数(应掌握的编程) 1、两个变量值的交换 void exchang(float *x,float *y) /*形参为两个变量的地铁(指针)*/ {float z; z=*x; *x=*y; *y=z; } void main() {float a,b; scanf(“%f%f”,&a,&b); exchang(&a,&b); /*因为形参是指针,所以实参必须给变量的地址,不能给变量名*/ printf(“a=%f,b=%f”,a,b); } 2、判断一个整数的奇偶 int jou(int n) /*如果是奇数返回1,否则返回0*/ { if(n%2==0) return 0; return 1; } 3、小写字符转换成大写字符 根据实参传给形参的字母,判断是否是小写字母,如果是小写字母,则转换成大写字母,否则不进行转换,函数返回转换后或原来的字符。 本函数仿照toupper()库函数的功能编写(toupper(c) 是将变量c字母转换成大写字母,如果不是小写字母不转换)。 char toupper1(char ch) {if(ch>=?a?&&ch<=?z?) ch-=32; /*小写字母比对应的大写字母ASCII码值大32*/ return ch; } 4、判断一个字符是否是字母(或数字) 根据实参传给形参的字符,判断是否是字母(或数字),如果是字母(或数字)返回1,否则返回0。此函数是根据库函数isalpha()(或isdigit())来编写的。 int isalpha1(char ch) /*判断是否是字母*/ {if(ch>=?A?&&ch<=?Z?||ch>=?a?&&ch<=?z?) return 1; else return 0; } int isdigit1(char ch) /*判断是否是数字字符*/ {if(ch>=?0?&&ch<=?9?) return 1; else return 0; } 5、根据学生成绩,返回其等级 char fun(float cj) {char c; switch((int)cj/10) {case 10:

C语言试卷及答案

一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递

最新C语言考试复习题

一、选择题 1. 在每个C 程序中都必须包含有这样一个函数,该函数的函数名为 。 A. main B. MAIN C. name D. function 2. 在以下关于C 语言的注释的叙述中,不正确的是 。 A .注释可用"/*"、"*/"形式表示,也可用"//"形式表示 B .编译器在编译一个程序时,将跳过注释,不对其进行处理 C .编译器在编译一个程序时,可发现注释中的单词拼写错误 D .程序中注释的多少不会影响所生成的可执行文件的长度 3. 以下叙述不正确的是 。 A .在C 程序中,严格区分大小写字母 B .一个 C 源程序有且仅有一个main 函数 C .在C 程序中,注释只能位于一条语句的后面 D .一个C 程序总是从main 函数开始执行 4. 下列合法的标识符为 A. abde+ B. #KDJF C. 67KDJ D. DK3_ 5. 关于字符串和字符的关系正确的是 A. “A ”与’A ’是相同的 B. 字符串是常量,字符是变量 C. “A ”与’A ’是不同的 D. “A ”与“A ”是相同的 6. 下面关于语句的说法正确的是 A. 下面这两段程序的执行效果是一致的 B. 空语句是只有一个分号的语句,它其实什么也不干 C. 语句的构成不一定需要分号 if (x>y) {z=x; s=z*z;} else {z=y;s=1/(z*z);} if (x>y) z=x; s=z*z; else z=y;s=1/(z*z);

D.语句的书写对程序的运行不起作用,因此可以随便写都可以 7.以下各标识符中,合法的用户标识符组为。 A.PAd,P#d,b-b,abc,_0123,ssiped B.cin,a10,CPP,float,del_word,signed C.void,max,hiy,,list,*jer D.a,temp,_isw,INT,keep,wind 8.字符串“\”E OF= -\61\””的长度是。 A.8 B.9 C.12 D.非法字符串9.数学式x sin在C程序中对应的不正确的表达式为。 A.sqrt(sin(x)>0?sin(x):-sin(x)) B.sqrt(fabs(sinx)) C.sqrt(sqrt(sinx*sinx)) D.fabs(sqrt(sin(x))) 10.下列是C语言的有效标识符? A._No1 B.No.1 C.12345 D.int 11.C语言中,表示一条语句结束的标号是 A.# B.; C.// D.} 12.每个C程序中都必须有且仅有一个 A.类B.预处理命令C.主函数D.语句13.下列数据类型不是C语言基本数据类型的是。 A.字符型B.整型C.实型D.数组 14.下列字符列中,可作为C语言程序自定义标识符是。 A.switch B.file C.break D.do 15.运算符+、<=、=、% 中,优先级最低的运算符是。 A.+ B.<= C.= D.% 16.下列字符列中,可以作为“字符串常量”的是。 A.ABC B.″xyz″ C.′uvw′ D.′a′ 17.设变量m,n,a,b,c,d均为0,执行(m = a= =b)||(n=c= =d)后,m,n的值是。 A.0,0 B.0,1 C.1,0 D.1,1 18.字符串"vm\x43\\\np\102q"的长度是。 A.8 B.10 C.17 D.16

C语言常用IO函数

一些比较常用的io函数,总结了一下,一块贴出来了 stdin标准输入流 stdout标准输出流 stderr标准错误流 字符IO函数 1.int getchar() 说明:从stdin读取1个字符 返回值:成功,返回该字符;出错,返回EOF; 2.int fgetc(FILE fp) 说明:功能同getchar,默认从文件fp读取; 返回值:成功,返回该字符;出错,返回EOF; 可以重定向 3.int getc(FILE fp) 说明:功能与fgetc相同,但getc既可以被用作 函数实现,也可以被用作宏实现,并且它的编码效率 可能会更高. 可以重定向 4.int putchar(int ch) 说明:向stdout输出字符ch; 返回值:成功,返回该字符;出错,返回EOF; 5.int fputc(int c,FILE fp) 说明:功能同putchar,默认向fp输出字符ch; 返回值:成功,返回该字符;出错,返回EOF; 6.int putc(int c,FILE fp) 说明:功能与fputc相同,但putc与getc一样既可能被用作 函数实现,也可能被用作宏实现,并且它的编码效率可能会更高;可以重定向 字符串IO函数 1.char gets(char str) 说明:从stdin读取字符串(不包括'n')写入到字符串str中; 返回值:成功,返回str首地址;错误,返回NULL; 2.char fgets(char str,int N,FILE fp) 说明:默认从文件fp中读取N个字符(包括'n')写入到字符串str中,

如果实际输入字符串小于N,fgets自动添加'n', 返回值:成功,返回字符串首地址;错误或遇到EOF,返回NULL;可以重定向 3.int puts(const char str) 说明:向stdout输出字符串str,然受输出一个'n', 返回值:成功,返回非负值;错误,EOF; 4.int fputs(const char str,FILE fp) 说明:功能同puts,默认向文件fp写入字符串str; 返回值:成功,返回非负值;错误,EOF; 可以重定向 格式化IO函数 1.int scanf(const char format,...) 说明:根据format从stdin格式化读取N个值,并输入到... 返回值:成功,返回读取的项数;出错,返回EOF 2.int fscanf(FILE fp,const char format,...) 说明:功能同scanf,默认从文件fp读取, 返回值:成功,返回读取的项数;出错或遇到文件尾,返回EOF 可以重定向 3.int sscanf(const char buf,const char format,...) 说明:根据format从buf格式化读取N个值,并输入到... 返回值:成功,返回读取的项数;出错,返回EOF 4.int printf(const char format,...) 说明:根据format格式化数据,并输出到stdout 返回值成功,返回输出字符数;错误,返回负数; 5.int fprintf(FILE fp,const char format,...) 说明:功能同printf,默认向文件fp写入; 可以重定向 6.int sprintf(char buf,const char format,...) 说明:根据format格式化数据,并输出到buf, 返回值:成功,返回输出字符数;错误,返回负数

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C语言复习题答案

二、选择题 1.C语言中形参的缺省存储类别是__A___。 A.自动(auto) B.静态(static) C.寄存器(register) D.外部(extern) 2.已知 struct sk { int a; float b; }data,*p; 若有p=&data; 则对data中成员a的正确引用是__B__。 A.(*p).data B.(*p).a C.p->data.a D.p.data.a 3.以下对C语言函数的描述中,正确的是__A__。 A.C程序由一个或一个以上的函数组成 B.C函数既可以嵌套定义又可以递归调用 C.函数必须有返回值,否则不能使用函数 D.C程序中调用关系的所有函数必须放在同一个程序文件中 4.以下说法中正确的是__C_。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main()函数中定义 C.C语言程序总是从main()函数开始执行 D.C语言程序中的main()函数必须放在程序的开始部分 5.设有以下说明语句: struct stu { int a; float b; }stutype ; 则下面的叙述不正确的是__C。 A.struct是定义结构体类型的关键字 B.struct stu是用户定义的结构体类型 C.stutype是用户定义的结构体类型 D.a和b都是结构体成员名 6.以下不正确的描述是__D。 A.在函数外部定义的变量是全局变量 B.在函数内部定义的变量是局部变量。 C.函数的形参是局部变量 D.局部变量不能与全局变量同名 7.已知学生记录描述为: struct student { int no; char name[20]; char sex; struct

国家二级C语言公共基础知识要点及历年真题

1算法 1.1 算法的基本概念 1.算法的概念(必记): 算法是指解题方案的准确而完整的描述。 分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现。整套的指导方 案称之为算法,而具体的实现称之为程序。并且在设计指导方案时,可不用过多考虑到实现程序的具体细节(即可以一点点的理想化),但在程序实现时,必须受到具体环境的约束(现实不同于理想)。 结论:算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 2.算法的基本特征(必记): a.可行性:由于算法总是在某个特定的计算工具上实现并执行的,因而受到计算工具的限制,所以在设计算法时,要考虑到设计的算法是否是可性的。 b.确定性:算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。 c.有穷性:算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 d.拥有足够的情报:算法有相应的初始数据。 3.算法的基本要素: 一个算法通常由两个基本要素所组成:一是对数据对象的运算和操作,二是算法的控制结构。 基本运算和操作分为四类: a. 算术运算: (加、减、乘、除等运算) b. 逻辑运算: (与、或、非等运算) c. 关系运算: (大于、小于、等于、不等于等运算) d. 数据传输: (赋值、输入、输出等操作) 算法的控制结构: 算法中各操作之间的执行顺序称之为算法的控制结构。一个算法一般都可以用顺序、选择、循环三种基本控 制结构组合而成。 注意:一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。 4.算法设计基本方法: 列举法、归纳法、递推、递归、减半递推技术、回溯法。 1.2 算法的复杂度 (必记) 算法的复杂度主要包括时间复杂度和空间复杂度。 1.算法的时间复杂度: 是指执行算法所需要的计算工作量,是由算法所执行的基本运算次数来度量。 可用平均性态和最坏情况两种分析方法。其中平均性态分析是指用各种特定输入下的基本运算次数的加权平 均值来度量算法的工作量;而最坏情况分析是指在所有特定输入下的基本运算次数据的最大次数。 2.算法的空间复杂度: 一个算法的空间复杂度,是指执行这个算法所需要的内存空间。包含有三部分所组成:算法程序所占的空间 +输入的初始数据所占的存储空间+算法执行过程中所需要的额外空间。 历届的考题: 1、算法具有五个特性,以下选项中不属于算法特性的是(______) [2005.4] A)有穷性B)简洁性C)可行性D)确定性 2、问题处理方案的正确而完整的描述称为______。[2005.4] 3、下列叙述中正确的是________。[2006.9] A)一个算法的空间复杂度大,则其时间复杂度也必定大

C语言常用函数手册

1.分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

c语言复习题整理(1)

C语言程序设计习题与解答 题解1 绪论 习题 一、选择题 1.一个完整的可运行的C源程序中(B )。 A.可以有一个或多个主函数B.必须有且仅有一个主函数 C.可以没有主函数D.必须有主函数和其他函数 2.构成C语言源程序的基本单位是(D )。 A.子程序B.过程C.文本D.函数 3.某C程序由一个主函数main( )和一个自定义函数max( )组成,则该程序( D )。 A.总是从max( )函数开始执行B.写在前面的函数先开始执行 C.写在后面的函数先开始执行D.总是从main( )函数开始执行 4.C语言规定,一个C源程序的主函数名必须为(C )。 A.program B.include C.main D.function 5.下列说法正确的是(C)。 A.在书写C语言源程序时,每个语句以逗号结束 B.注释时,'/'和'*'号间可以有空格 C.无论注释内容的多少,在对程序编译时都被忽略 D.C程序每行只能写一个语句 6.C语言源程序文件的后缀是( C ),经过Compile后,生成文件的后缀是( A ),经过Build后,生成文件 的后缀是(B)。 A..obj B..exe C..c D..doc 7.Visual C++ IDE的编辑窗口的主要功能是(A ),输出窗口的主要功能是(D ),调试器(Debug)的主要功能是(C)。 A.建立并修改程序B.将C源程序编译成目标程序 C.跟踪分析程序的执行D.显示编译结果信息(如语法错误等) 8.在Visual C++ 开发环境下,C程序按工程(project)进行组织,每个工程可包括(D)C/CPP源文件,但只能有( A )main函数。 A.1个B.2个 C.3个D.1个以上(含1个) 9.调试程序时,如果某个语句后少了一个分号,调试时会提示错误,这种情况一般称之为(A )。而某个“计算2的平方”的程序在 调试时没有提示出错,而且成功执行并计算出了结果,只是结果等于5,这种情况一般称之为(D)。 A.语法错误B.正常情况 C.编译器出错D.逻辑设计错误

相关文档