您现在的位置是:首页 > 学无止境 > C语言网站首页C语言 C语言复习题

C语言复习题

  • 莫愁
  • C语言
  • 2018-06-01
简介适用于C语言程序设计(第三版)的期末复习题,里面大部分基础训练题,希望对学C语言的你有所帮助
字数 2620

1.以下叙述不正确的是( D )

A.一个C源程序可有一个或多个函数组成.

B.一个C源程序必须包含一个main函数.

C.C程序的基本组成单位是语句.

D.在C程序中,注释说明只能位于一条语句的后面.


2.下面正确的定义语句是( D )

A.int a[1][4]={1,2,3,4,5};

B.double y[][3]= 0;

C.long b[2][3]={{1},{1,2},{1,2,3}};

D.float x[][3]={{1},{2},{3}};


3.设有程序段

int k=3;

while(k)

k=k-1;

则下面描述中正确的是( A )

A.while循环执行3次.

B.循环是无限循环.

C.循环体语句一次也不执行.

D.循环体语句执行一次.


4.C语言规定,简单变量做实参时,它和对应形参之间的数据传达方式是( B )

A.地址传递.

B.单向值传递.

C.由实参传给形参再有形参传回给实参.

D.由用户指定传递方式.


5.C语言规定,函数返回值的类型是由( D )

A.return语句中的表达式类型所决定.

B.调用该函数时的主调函数类型所定决.

C.调用该函数是系统时决定.

D.在定义该函数时所指定的函数类型所决定.


6.若用数组名作为函数调用的实参传递给形参的是( A )

A.数组的首地址.

B.数组第一个元素的值.

C.数组中全部元素的值.

D.数组元素的个数.


7.下面不是C语言合法标识符的是( D )

A.fine5

B.flag

C._score

D.&i


8.下面不正确的字符串常量是( A )

A.'file'

B."12'12"

C."0"

D."while"


9.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( D )

A.均占4个字节

B.根据数据的大小来决定所占内存的字节数

C.由用户自己定义

D.由C语言编译系统决定


10.以下正确的字符串常量是( D )

A."\ \ \"

B.'abc'

C.Olympic Games

D.""


11.设有说明语句:char a=’\72’;则变量a( A )

A.包含1个字符

B.包含2个字符

C.包含3个字符

D.说明不合法


12.若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )

A.a:=b+1

B.a=b=c+2

C.int 18.5%3

D.a=a+7=c+b


13.C语言中运算对象必须是整型的运算符是( A )

A.%=

B./

C.=

D.<=


14.若有以下定义语句:int a[]={1,2,3,4,5,6,7,8,9,10}; 则值为5的表达式是( C )

A.a[5]

B.a[a[4]]

C.a[a[3]]

D.a[a[5]]


15.有以下定义语句:float a[11]={0,1,2,3,4,5,6,7,8,9,10};则以下叙述中错误的是( D )

A.a数组在内存中占44个字节

B.a数组的最后一个元素为a[10]

C.a数组的第一个元素为a[0]

D.不能正确赋值


16.变量的指针,其含义是指该变量的( B )

A.值

B.地址

C.名

D.一个标志


17.x为奇数时值为“真”,x为偶数时值为“假”的表达式是( C )

A.!(x%2==1)

B.x%2==0

C.x%2

D.!(x%2)

18.以下while循环中,循环体执行的次数是( C ) k=1;
while (--k)
k=10;

A.10次

B.无限次

C.一次也不执行

D.1次

19.以下选项中不合法的标识符是( C )

A. print

B.FOR

C.&a

D._00

20.以下定义语句中错误的是( A )

A.int a=b=0;

B.char A=65+1,b='b';

C.float a=1,*b=&a,*c=&b;

D.double a=0.0,b=1.1;

21.变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( A )

A.++x,y=x--

B.x+1=y

C.x=x+10=x+y

 

D.double(x)/10

22.设有定义:int a; float b;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876 543.0<回车>,a和b的值分别是( B )

A. 876和543.000000

B. 87和6.000000

C. 87和543.000000

D. 76和543.000000

23.若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则对a数组元素正确的引用是( D )

A. a[10]

B.a[a[3]-5]

C.a[a[9]]

D.a[a[4]+4]

24.有以下程序段

x=0;

while (!x!=0)

x++;

其中x为整型变量,以下选项中叙述正确的是( B )

A.退出while循环后,x的值为0

B.退出while循环后,x的值为1

C.while的控制表达式是非法的

D.while循环执行无限次

25.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( B )

A.k=*ptr1+*ptr2

B.ptr2=k

C.ptr1=ptr2

D.k=*ptr1*(*ptr2)

26.设有 int x=11; 则表达式 (x++ * 1/3) 的值是( A )

A.3

B.4

C.11

D.12

27.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1;则执行后,c3中的值是( A )

A.0

B.0.5

C.1

D.2

28.下列数组的定义和初始化正确的是:( C )

A.int a[5]=(1,2,3,4,5)

B.int a{5}=[1,2,3,4,5]

C.int a[5]={1,2,3,4,5}

D.Int a(5)=[1,2,3,4,5]

29.下列关于数组的说法不正确的是:( D )

A.数组一旦被定义,就不能再改变它的大小

B.定义数组时可以用变量定义数组的大小

C.定义数组时可以用宏常量定义数组的大小

D.定义数组时可以用const常量定义数组的大小

30.int *pa=&a,下列说法不正确的是:( D )

A.pa是一个指针变量

B.pa指向整形变量a

C.pa的值为变量a的地址

D.pa的值为变量a的值

 

31.int *pa=&a,则*pa的值为:( A )

A.变量a的值

B.变量a的地址

C.非法值

D.不确定

32.关于指针变量的说法,下列不正确的是:( B )

A.指针变量与变量占用相同的内存单元

B.指针变量无需定义,可以直接使用

C.指针变量不占用内存单元

D.指针变量的内容只能是地址,不能是数据

33.关于C语言字符串的说法,下列正确的是:( D )

A.可以直接用str关键字定义一个字符串

B.字符串要用字符型数组来实现

C.可以向函数传递字符串

D.函数可以返回一个字符串指针

34.C语言中字符串的结束字符是( A )

A.'\0'

B.'\n'

C.'\c'

D.'\end'

35.下列关于C语言控制语句的说法,正确的是: ( C )

A.While 和do....while语句不可以相互转换

B.for语句不能转换为goto语句

C.嵌套函数也能实现循环功能

D.在循环嵌套中,一句break语句可以跳出所有的循环体

36.swith....case语句中,switch关键字后面的表达式可以是:( A )

A.char型或int 型

B.float型或int型

C.char型或float型

D.int型或double型

二.编程题

1.求主次对角线之和。

解题思路:for循环,主角线x,y相等,次角线x+y=c。

2.计算实际字符个数。

解题思路:用头文件为string.h 里面的函数strlen()来求实际字符个数,用sizeof就错了!

3.写一个函数MaxCommonFactor(),利用欧几里德算法(也称辗转相除法)计算两个正整数的最大公约数。

解题思路:辗转相除法,用最大的数除以最小的数,商作为除数,然后在用最小的数来做被除数。do-while里面的条件为商不为0,返回值为被除数。

4.已知abc+cba=1333,其中a、b、c均为一位数,例如:617+716=1333, 518+815=1333, 试编程求出符合这一规律的a、b、c,并输出结果。

解题思路:遇见这类问题,一看就是需要用for循环来做,a、c百位不能为0!

5.定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。

解题思路:用if来判断,两两大于第三边。

6.从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。

解题思路:for循环,用数组来存那10个整数。

7.写出将一个字符串(只包含数字)转换为整数的函数int toInt(char *strNumbers)(假定不会超出整数的表示范围),并在一个简单的程序中测试这个函数。

解题思路:传递的是指针,历到’\0’结束,然后用应该counter来记数,需要用到pow()函数。

8.输入某班学生某门课的成绩(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数。

解题思路:数组,if

9.三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?

解题思路:for循环,用一个counter来计数

10.利用人工方式比较分数大小的最常见的方法是:对分数进行通分后比较分子的大小。请编程模拟手工比较两个分数的大小。首先输入两个分数分子分母的值,例如"11/13,17/19",比较分数大小后输出相应的提示信息。例如,第一个分数11/13小于第二个分数17/19,则输出"11/13<17/19"。

解题思路:可以尝试转为浮点计算

11.自定义一函数,逆序依次取出一字符串中所有小写字母,形成新的字符串。在主函数输入字符串输出新的字符串。如原来的字符串为“WRab67Yhg,c”,则新的字符串为“cghba”。

解题思路:数组,然后倒叙判断字符

12.求s=a+aa+数据库复习+数据库复习a+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

解题思路:1变成11为1*10+1 11变111为11*10+1 111变1111为111*10+1

13.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

解题思路:字符判断


转载: 感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/25.html”。

文章评论

    • 评论
    人参与,条评论

技术在线

服务时间

周一至周日 12:00-22:00

关闭下雪
关闭背景特效