最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C语言习题答案

IT圈 admin 66浏览 0评论

2023年12月14日发(作者:素泰华)

第二部分 习题篇

第一章 C语言概述

一.单项选择题

1.A)可以用来编写系统软件,也可以用来编写应用软件

2.A)编辑、编译、连接、运行

3.A)源程序

4.B).obj

5.C).exe

6.D)C语言程序总是从main( )函数开始执行

7.C)可以在任意位置

8.A)一个主函数和若干个其他函数组成

9.D)函数首部和函数体

10.C)include命令行后面需要加分号

11.C)C语言自身没有输入输出语句

12.D)&

13.B)顺序结构、选择结构、循环结构

14.D)有零个或多个输出。

15.A)建立数学模型

二.填空题

1.高级语言 2.main( ) 3.main( ) 4.{ } 5.分号

6.换行 7.*/ 8.函数 9.编译 10..exe

三.判断题

1.软件是程序、数据以及相关文档的完整集合。 (对)

2.程序设计是指使用某种计算机语言并采用合适的方法编写程序,以便指挥计算机解决具体的问题。

(对)

3.机器语言中的每一条指令都是用二进制形式表示的,机器语言编写的程序中的指令不可以由硬件直接执行。

(错)

4.一个C语言程序可以由一个主函数和若干个其他函数构成。 (对)

5.从另一个角度说,一个C程序是由一个或多个C文件组成,而一个C文件是由一个或多个函数组成。

(对)

6.C语言之所以也被称为中级语言,是因为它比高级语言的功能要少,而比低级语言的功能多。

(错)

7.同其他高级语言一样,C语言也具有结构化的控制语句。 (对)

8.C程序中的main()函数必须放在整个程序的最前头。 (错) 9.C语言允许直接访问物理地址,能进行位操作。 (对)

10.结构化程序设计的方法一般包括按自顶向下并逐步细化的方法对问题进行分析、模块化设计和结构化编码等3个步骤。

(对)

四.编程题

1.编写程序,在屏幕上显示以下信息:

* * * * * * * * * * *

Hello World!

* * * * * * * * * * *

2.编写程序,从键盘输入两个整数,然后输出其中较小的数。

3.编写程序,从键盘输入三个整数,然后输出其中最小的数。

第二章 数据类型与表达式

一.单项选择题

1.A)整型、实型、字符型

2.C)8

3.D)以上三种进制均可使用

4.A)8

5.C)必须为字母或下划线

6.D)_x

7.C)068

8.C)sqrt(x)/(3*y)

9.A)%

10.A)x=y,y=y+1

11.B)2

12.C)先考虑优先级,然后考虑结合性

13.C)从键盘输入数据时,对于整型变量只能输入整型数据,对于实型变量只能输入实型数据

14.D)60

15.B)3.0

16.B)i的值是字符A的ASCII值加上3,即68

17.C)a=69,b=68

二.填空题

1.double

2.不同

3.27

4.35

5.5

6.double

7.43 8.53

9.12,10,18

10.12.20

11.1,3,3,1

12.4,8

三.判断题

1.基本数据类型最主要的特点是不可以再分解为其它数据类型。

(对 )

2.在C语言中,整数的书写形式有十进制、八进制和十六进制形式。 (对 )

3.在C语言中,字符型常量可以用单引号或双引号括起来。 (错 )

4.在C语言中,字符型常量只能包含一个字符。 (对 )

5.在C语言中,字符串常量隐含处理以‘0’结尾。 (对 )

6.在C语言中,用户所定义的标识符中的大、小写字母代表相同标识。 (错 )

7.在C语言中,用户所定义的标识符不允许使用关键字。 (对 )

8.在C语言中,符号常量的值在程序运行过程中可以改变。 (错 )

9.在C语言中,要求对程序中所用到的变量进行强制定义。 (对 )

10.设C语言的float型是7位有效数字,则超过7位数的运算是不准确的。(对 )

四.编程题

1.编写程序,从键盘输入两个整数,输出它们的和、差、积、商、余数以及平均值。

2.编写程序,从键盘输入三个双精度数a、b、c,计算总和、平均值、x=a2+b2+c2的值,并计算x平方根的值。所有运行数据保留三位小数,第四位四舍五入。

3.编写程序,从键盘输入两个长整型数,输出它们(整数除的)商和余数。

4.编写程序,从键盘输入两个整数,输出它们(实数除)的商,并输出商的第二位小数位(例如:15/8.0=1.875,1.875的第二位小数位是7)。

5.编写程序,要求用赋初值的方法使c1、c2等两个变量的值分别为97和98,然后分别按整型和字符型输出。

6.编写程序,输入秒数转换用小时、分钟、秒表示。如输入7278秒,则输出2小时1分18秒。

7.编写程序,输入两个复数的实部和虚部,输出这两个复数积的实部和虚部。两复数的积按下面的公式计算:(a+bi)(c+di)=(ac-bd)+(ad+bc)i。

第三章 顺序结构程序设计

一.单项选择题

1.D)15.0,25.0,35.0

2.C)x=1.23,y=1.26

3.B)scanf(“%d%d%d”,&a,&b,&c);

4.A)scanf("%f",&a);

5.D)程序输出小写字母d 6.B)3

二.填空题

1.5.5

2.c+25

3.1,2,A,a

4.2D

三.判断题

1.顺序结构、选择结构和循环结构可以组成所有的各种复杂程序。

(对 )

2.复合语句就是多条语句,不必须用花括号括起来。

(错 )

3.在变量说明中,允许连续给多个变量赋初值。

(错 )

4.scanf函数和printf函数的原型在头文件“stdio.h”中。

(对 )

5.printf函数格式字符串中%4d表示输出一定是四位十进制整数。

(错 )

6.putchar 函数的功能是在显示器上输出一个字符。

(对 )

7.在scanf函数的格式串中,如果是“%d%d%d”, 在输入三个十进制整数时要用一个以上的空格键、回车键和Tab键作为每两个输入数之间的间隔。

(对 )

8.在scanf函数的格式串中,如果是“%c%c%c”, 在输入三个字符时要用一个以上的空格键、回车键、Tab键和逗号作为每两个输入字符之间的间隔。

(错 )

9.scanf("%5.2f",&a);是合法的,目的是输入小数为2位的实数。

(对 )

10.getchar函数的功能是从终端输入一个字符。

(对 )

四.编程题

1.编写程序,已知一个学生的高等数学、计算机和外语课程的成绩分别为70分、80分、90分,要求输出该学生3门课程的平均分。

2.编写程序,从键盘输入一个华氏温度,要求输出对应的摄氏温度。输出时要有文字说明,取小数点后2位。计算公式如下:

C=5/9(F-32)

其中C表示摄氏温度,F表示华氏温度。

3.编写程序,从键盘输入一个圆的半径,要求输出圆的面积。输出时要有文字说明,取小数点后2位。

第四章 选择结构程序设计

一.单项选择题 1.C)算术运算、关系运算、逻辑运算

2.A)%

3.B)x= =0

4.B)!、&&、||

5.D)(x<=y)&&(y<=z)

6.D)(x<=-10)||(x>=7)

7.A)6<x<10

8.D)(x>=„A‟)&&(x<=„Z‟)

9.A)0,0

10.C)1,0

11.C)2

12.B)1,0,0,1

13.C)1

14.A)0,0

15.B)2323

16.B)10,20,#

17.B)x=3,y=5

二.填空题

1.x=-x

2.7

3.$$$

4.default

5.2,3,3

三.判断题

1.关系运算符的优先级低于算术运算符,高于赋值运算符。

(对 )

2.关系表达式的值是“真”和“假”,用“T”和“F”表示。

(错 )

3.关系表达式3>2>1的值为真。

(错 )

4.逻辑非运算符!为单目运算符,具有右结合性。

(对 )

5.逻辑运算符和其它运算符优先级的关系从高到低为:

!(非)→算术运算符→关系运算符→&&和||→赋值运算符

(对 )

6.if(表达式) 语句1;

else 语句2;

其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。 (对 )

7.在if关键字之后均为表达式。该表达式可以是任意表达式,但不能是变量。(错 )

8.当程序中有多对if和else时,它们是按照顺序配对的。如第一个if与第一个else配对,第二个if与第二个else配对,以此类推。

(错 )

9.条件运算符的结合方向是自左至右。

(错)

10.在switch多分支语句中,break语句用于跳出switch语句。

(对 )

四.改错题

1、下面程序的功能是判断输入的一个整数是否能被5和7同时整除,若能整除,输出“YES”,否则,输出“NO”。

错误语句:if(x%5==0||x%7==0)

正确语句:if(x%5==0&&x%7==0)

2.下面程序的功能是输出一个4位整数的后两位数值,例如输入5678,输出78。

错误语句:scanf("%d",x);

正确语句:scanf("%d",&x);

3.下面程序的功能是从键盘输入三个整数,输出其中最小的数。

错误语句:min=(temp>c)?temp:c ;

正确语句:min=(temp<c)?temp:c ;

4.下面程序的功能是判断某一年是否为闰年。

错误语句:if (year%400!=0)

正确语句:if (year%400==0)

五.编程题

1.编写程序,从键盘输入一个整数,判断是奇数还是偶数。

2.编写程序,从键盘输入一个三角形三条边的边长,然后输出三角形面积,要求取2位小数。当三角形不成立时输出“不能构成一个三角形”。

3.编写程序,从键盘输入一个字符,判断是否为大写字母,如果是大写字母,则转换为小写字母,否则不转换。

第五章 循环结构程序设计

一.单项选择题

1.C)21

2.D)for(表达式1;1;表达式3)

3.D)在do-while循环中,当while后的表达式为0时结束循环

4.C)do-while的循环体至少无条件执行一次

5.A)60

6.C)1

7.B)1

8.A)-1

9.C)5050

二.填空题

1.i++

2.0

3.1.0/i

4.num++

5.||

6.e

7.A

8. 23

9.month

10.sum=0

三.判断题

1、“当型”循环是先判断表达式后执行循环体,“直到型”循环是先执行循环体后判断表达式。

(对 )

2、如果循环体 (错 )

4、for(循环变量赋初值;循环条件;循环变量增值)中的循环条件不允许省略。(错 )

5、for (f=1,i=1;i<=10; f=f*i,i++) ;是非法语句。

(错 )

6、三种循环while循环、do-while循环和for循环可以互相嵌套。 (对 )

7、在循环结构中,break语句可以使流程跳出循环体,即提前结束循环。

(对)

8、在循环结构中,continue语句是结束本次循环,即跳过循环体中下面未执行的语句,接着进行循环条件的判定。

(对)

9、continue语句和break语句的区别是break语句只结束本次循环,继续进行下一次循环,而continue语句则是结束整个循环,不再判断循环条件是否成立。

(错 )

10、goto语句能构成循环,可以随意使用。

(错 )

四.改错题

1.下面程序的功能是求10!。

错误语句:for (i=10; i>=0; i++)

正确语句:for (i=10; i>0; i--)

2.下面程序的功能是输出1~100之间所有能被3整除的数。

错误语句:if(i%3) beeak;

正确语句:if(i%3) continue;

3.下面程序的功能是求1!+2!+…+n!。

错误语句:while(i>=n);

正确语句:while(i<=n);

4.下面程序的功能是利用公式π/4≈1-1/3+1/5-1/7+„求π的近似值,直到某一项的绝对值小于10-7为止。

错误语句:while(fabs(temp)>10-7)

正确语句:while(fabs(temp)>1e-7)

五.编程题

1.编写程序,求1+2+3+„+10,要求使用4种方法。

2.编写程序,求12+22+32+„+102。

3.编写程序,求1/1+1/2+1/3+„+1/10。

4.编写程序,求1*2*3*„*10。

5.编写程序,求1!+2!+3!+„+10!。

6.编写程序,输入两个正整数,输出它们的最大公约数和最小公倍数。

第六章 数 组 2222

一.单项选择题

1.D)数组的首地址

2.D)在程序运行时,如果数组元素的下标超出了所定义的下标范围时,系统将给出“下标越界”的出错信息

3.C)x[2][1]

4.B)scanf("%d%s",&x,y);

5.D)#define N 50;

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

7.A)a[0][0]=0,a[0][1]=1,a[1][0]=2,a[1][1]=3

8.D)char a[ ]={1,2,3,4,5,6};

9.C)数组a的长度大于数组b的长度

10.D)把字符串str2复制到字符串str1中再把字符串str3连接到字符串str1之后

11.D)对于字符型数组,可以在赋值语句中通过运算符“=”进行整体赋值

二.填空题

1. 同一个

2.方括号

3.连续

4.0 19

5.行

6.一

7.0

8. 字符数组名

9.10,6

10.2

11.fibonacci[i-1]+fibonacci[i-2];

12.y[j][i]=x[i][j]

13.98

14.-21

15.i<j

16.i—

17.str[i]=str[i+1]

18.string2[i]=string1[i];

19. j++;

三.判断题

1.在C语言中,数组属于构造类型的数据。

(对)

2.一个数组的各个元素的数据类型可以不完全相同。

(错)

3.数组在 (错 )

5.数组名后是用方括号或圆括号括起来的常量表达式。

(错 )

6.C语言编译程序不对数组作边界检查,如果程序中出现了下标越界,可能会造成程序运行结果的错误。因此要注意下标不能过界。

(对 )

7.C语言允许对数组的长度作动态定义,即数组长度可以是变量。

(错 )

8.在C语言中,使用数值型数组时,只能逐个引用数组元素而不能一次引用整个数组。

(对 )

9.为数组元素赋值时,若所有元素值全部相同,则可以给数组整体赋初值。(错 )

10.对数组的全部元素赋初值时,也可以不指定数组长度。

(对 )

11.C语言中二维数组的元素在 (对 )

12.如果对二维数组中全部元素赋初值,则数组的第一维和第二维长度均可以省略。

(错 )

13.在C语言中,字符串是借助于字符数组来存放的。

(对 )

14.在字符串常量的末尾,系统会自动加一个‘0’作为结束符。 (对 )

15.用字符串常量对字符数组初始化时,数组的长度至要与字符串长度相同。(对 )

16.在printf函数中用“%s”格式符输入字符串时,空格和回车可以被读入。(错 )

17.在printf函数中使用格式说明“%s”可以实现字符串的整体输出。 (对 )

18.gets函数的功能是从终端读入字符串到字符数组,直到遇到一个空格符。(错 )

19.使用strcat函数时,字符数组1的长度要足够大,以保证全部装入被连接的字符。

(对 )

20.strcpy 函数中的“字符数组1”和“字符串2”,可以是字符串常量也可以是已赋值的字符数组名。

(错 )

四.改错题

1.下面程序的功能是为数组输入数据并输出结果。

错误语句:scanf("%d",&a);

正确语句:scanf("%d",&a[i]);

2.下面程序的功能是求矩阵a的主对角线元素之和。

错误语句:if(i<=j) sum=sum+a[i][j];

正确语句:if(i==j) sum=sum+a[i][j];

3.下面程序的功能是输出字符串StringStringStringStringStringString。 错误语句:printf("%c",c[i]);

正确语句:printf("%s",c);

4.下面程序的功能是输入3个字符串,然后找出其中最小者。

错误语句:if (str[2]<string))

正确语句:if (strcmp(str[2],string)<0)

五.编程题

1.编写程序,用选择法对15个整数排序。 清习P50 清教P139

2.编写程序,有一个3×5的矩阵,要求出其中最大的元素的值,以及其所在的位置。

3.编写程序,有一个3×3矩阵,分别求两条对角线元素之和。 秦习P68

4.编写程序,求数列1,5,14,30„,的前15项,即f[1]=1;„;f[i]=f[i-1]+i*i。

5.编写程序,将两个字符串string1与string2进行比较。要求不能使用strcmp函数且要达到相同的功能。 清习P68

6.编写程序,一篇英文文章有5行文字,每行含有80个字符。要求统计英文字母、数字、空格以及其他字符的个数。

清习P64

第七章, 函数

一.单项选择题

1.C)函数

2.D)文件

3.B)int

4.D)实参和形参分别占用一个独立的存储单元

5.C)单向值传递

6.D)数组的首地址

7.A)定义该函数时所指定的函数类型决定 8.D)函数调用可以作为一个函数的形参

9.B)2

10.C)函数不可以嵌套定义,但可以嵌套调用

11.C)称为函数的间接递归调用

12.A)允许直接递归调用,允许间接递归调用

13.D)在一个函数内的复合语句中定义的变量只在本函数范围内有效

14.A)从定义该变量的位置开始至

15.D)auto和register

16.D)extern

17.D)函数的类型可以是整型、实型、字符型,但不可以是指针型

18.C)16

19.A)5

20.B)3

21.D)10

22.D)15.000000

二.填空题

1.用户自定义函数

2.嵌套

3.类型

4.嵌套调用

5.递归调用

6.局部变量

7.源程序文件

8.static

9.extern

10.max(a,b)

11.int min(int x, int y)

12.93

三.判断题

1.C语言中,函数既可以嵌套定义,也可以嵌套调用。

( 错 )

2.如果在定义函数时不指定函数类型,系统会隐含指定函数类型为int型。

( 对 )

3.简单变量做实参时,实参对形参的数据传送是单向的“值传递”。

(对 )

4.实参和形参不能同名,以免相互影响。

(错 ) 5.当一个函数中有多个return语句时,第一个return语句起作用。

(错 )

6。如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。(对 )

7.只要被调用函数的定义出现在主调函数之后,就必须声明。

(错 )

8.C语言允许函数嵌套调用,也允许函数递归调用。

(对 )

9.数组元素作函数实参时,其用法与普通变量完全相同,实现单向“值传送”。

(对 )

10.数组名作函数实参时,其用法与普通变量完全相同,实现单向“值传送”。

(错 )

11.用数组名作函数实参时,从本质上说是把实参数组的地址传递给形参数组。(对 )

12.在一个函数 (对 )

13.形参变量是 (错 )

14.在主函数中的复合语句中定义的变量,其作用域在主函数范围 (错 )

15.C语言中,主函数比其它函数级别高,可以使用其它函数中定义的局部变量。(错 )

16.全局变量的作用域是从定义位置开始,到

17.当全局变量和局部变量同名时,全局变量起作用,局部变量不起作用。

(错 )

18.静态存储方式是指在程序运行期间分配固定的存储空间的方式。而动态存储方式

则是在程序运行期间根据需要进行动态的分配存储空间的方式。

(对 )

19.在程序执行期间,静态局部变量始终存在,其它函数也可以引用它们。

(错 )

20.静态局部变量是在编译时赋初值的,即只赋初值一次,以后每次调用它们所在的

函数时,不再重新赋初值,只是保留上次调用结束时的值。

(对 )

四.改错题

1.下面程序的功能是用递归法计算n!。

错误语句:else f=n*f(n-1);

正确语句:else f=n*fac(n-1);

2.下面程序的功能是输出1到5的阶乘。

错误语句:int f=1;

正确语句:static int f=1;

五.编程题

1.写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息。

2.编一个函数求n!。主函数求6!+7!+8!

3.编一个函数求n个数中最大值. 主函数求10个数中最大值.

4.用递归法将一个整数n转换成字符串,例如输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。

5.编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个整数由键盘输入。 清习P71

6.定义一个函数,根据给定的三角形三条边长,函数返回三角形面积。

7.编写一个函数,其功能是判断给定的正整数是否是素数,若是素数则返回函数值1,否则返回函数值0。

8.有五个人坐在一起,问第五个人多少岁,他说比第四个人大2岁,问第四个人多少

岁,他说比第三个人大2岁,问第三个人多少岁,他说比第二个人大2岁,问第二个人多少岁,他说比第一个人大2岁,问第一个人多少岁,他说10岁,问第五个人多少岁

9.第八章 指针

一.单项选择题

1.B)变量的地址

2.D)int *pointer=&x;

3.B)pointer=&x;

4.B)相加

5.A)能直接访问,能间接访问

6.C)指向包含5个整型元素的一维数组的指针

7.A)指针数组名字,包含5个指向整型数据的指针

8.C)最多允许2个

9.A)指向函数的指针,函数返回值为一个整数

10.A)返回值为指针的函数名字

11.A)-1

12.D)a=3,b=2

13.C)12,11

15.C)6,2,4

16.C)yyzzqq

17.D)IHGFEDCBA 14.A)16,48,80,

二.填空题

1.基类型

2.地址

3.scanf ("%d",p);

4.入口

5.指针数组 6.指向函数的指针变量

7.7, a[2][0]

8.a,apple

9.apple

pple

ple

le

e

10.2,a[2]

11.&sub_result , &add_result

12.len++

13.*p2++

14.**p

15. (*p)(a,b,c)

16.english_name[n]

三.判断题

1.指针就是地址,指针变量就是存放变量地址的变量。

(对)

2.对变量的访问可以用直接访问方式和间接访问方式。

(对)

3.可以给指针变量赋一个整数。

(错)

4.指针变量能指向任意类型的变量。

(错)

5.多个指针变量不能指向同一个变量。

(错)

6.*运算符和取地址运算符 & 互逆。

(对)

7.使用指针类型变量做函数的参数,实际向函数传递的是变量的地址。

(对)

8.当指针变量p指向一个整型数组时,p+1是指p的地址加1字节。

(错)

9.C语言中,数组名和指针变量均可分别做实参和形参。

(对)

10.int *pa[10];这个语句是定义一个指针,该指针可以指向有10个元素的数组。(错 )

四.改错题

1.某一个班级有n个学生,开设m门课程。使用指针的方法编写程序,查找有课程

不及格的学生,并且打印他们的成绩。 错误语句:if (j<N)

正确语句:if (j<M)

2.使用指针编写程序,从键盘输入的n个整数中找出其中最大值和最小值。调用一

个函数只能得到一个返回值,要得到多个返回值则用全局变量在函数之间“传递”数据。

错误语句:int *p,array_end;

正确语句:int *p, *array_end;

3.使用指针编写程序,从键盘输入一个字符串,然后统计字符串中字符的个数。

错误语句:scanf ("%s", &string);

正确语句:scanf ("%s",string);

4.使用指针编写程序,在输入的字符串中查找是否存在字符„x‟。

错误语句:if (p[i]!=„0‟)

正确语句:if (p[i]==„0‟)

5.使用指针数组编写程序,从键盘输入一个星期几(例如7),则程序输出对应星期

几的英文名字(Sunday)。

错误语句:if (n<1&&n>7)

正确语句:if (n<1||n>7)

五.编程题

1.编写程序,从键盘输入3个整数,按照从小到大的顺序输出。要求使用指针的方法

并且用3种不同方式实现。

2.编写程序,将数组中n个整数按相反的顺序存放后输出。要求使用指针的方法并

用2种不同方式实现。

3.编写程序,从键盘输入3个字符串,按照从小到大的顺序输出。要求使用指针的

方法实现。

4.编写程序,使用指针的方法完成字符串的复制。要求不能使用strcpy函数。

5.编写程序,使用指向一维数组的指针的方法,完成从键盘输入n个字符串(例如10个国家名)并按字典顺序排列后输出。

6.编写程序,使用数组和指针的方法,完成将一个n×n(例如5×5)的矩阵转置,并且输出最大值及其位置。

7.编写程序,使用指向指针的指针的方法,完成对n个字符串(如10个城市名)进行排序。要求从键盘输入n个字符串并且把排序编写成函数(用冒泡法和选择法2种方式)。

8.编写程序,使用指针并利用矩形法编写计算定积分 b 的通用函数。然后f(x)dx利用它分别计算以下三种数学函数的定积分: a

(1)f (x)=x2-5x+1 (2)f (x)=x3+2x2-2x+3 (3)f (x)=x/ (2+x2) 第九章 结构体与共用体

一.单项选择题

1.D)student1是结构体类型名

2.C)共用体类型

3.A)各成员所需内存字节数的总和

4.D)三种形式均可表示

5.D)成员中占内存字节数最大的

6.B)16

7.B)80

8.C)=6;

=10;

=2003;

9.B)printf("%c", school[1].name[0]);

10.B)scanf("%s",&);

11.A)1001,650

12.C)zzxxyy

13.B)1102,550,"Li"

14.D)Tao

15.D)使用typedef可以增加新类型

16.D) typedef char * STR;

二.填空题

1.指向结构体成员,结构体成员

2.duoble *

3.地址

4.256

5.A

6.1002,1003,1004;

7.p->age

8.p=head

三.判断题

1.“结构体”是一种构造类型,它是由若干相互关联的“成员”组成的。每一个成员

可以是一个基本数据类型,也可以是数组、指针,或者又是一个构造类型。

(对)

2.结构体变量的总长度为各个成员长度的总和。

(对)

3.在定义结构体变量时成员名不可以与程序中其它变量同名。

(错) 4.结构体变量名是结构体变量的首地址。

(错)

5.C语言中不允许用结构体变量作函数参数进行整体传送。

(错)

6.malloc函数的功能是在 (对 )

8.“共用体”类型变量只能存储相同类型数据的变量,不能存储不同类型数据的变量。

(错 )

9.共用体的长度是成员列表中最大长度的成员长度。

(对 )

10.共用体类型的多个成员在内存中是首地址相同的,因此可以同时访问共用体成员。

(错)

四.改错题

1.下面程序的功能是求学生成绩的总和。

错误语句:struct stu p=student;

正确语句:struct stu *p=student;

2.下面程序的功能是输出链表中所有结点的数据。

错误语句:p=head->next;

正确语句:p= p->next

五.编程题

1.编写程序,建立一个结构体,其成员包括员工号、姓名、工资,通过键盘输入数

据并且进行打印输出。

2.编写程序,使用结构体数组存放下表中员工的工资数据,然后输出每个员工的员

工号、姓名和实发工资(实发工资=基本工资+岗位工资-扣款)。

3名职工的工资总和以及平均工资。

4.编写程序,建立一个结构体数组并存放40名学生的学号、姓名、性别、年龄和3门课程的成绩,找出成绩最好的学生并输出信息。

5.编写程序,输入40个学号、姓名、年龄、家庭住址,并存放在一个结构数组中,找出年龄最小和年龄最大的学生并输出信息。

6.编写程序,建立一个名字为player的结构体,其成员包括运动员姓名“name”、运动队名“team”、平均运动成绩“avg”。

(1)编写一个名为input_player的函数,输入运动员的信息,要求以结构体作为参数。

(2)编写一个名为input_player的函数,输入运动员的信息,要求以结构体指针作为参数。

7.编写程序,建立一个结构体实现统计选举候选人选票的数量。

8.编写程序,统计通讯录链表中结点的个数。

9.编写程序,从键盘输入10个整数分别作为链表的数据域建立一个单链表,并编写删除一个指定结点的函数。

第十章 文 件

一.单项选择题

1.D)可以顺序存取,也可以随机存取

2.D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文

3.B)文

4.B)对文件操作时需要先打开文件

5.D)fopen("","wb");

6.B)fopen("D:","r+")

7.D)非零值

8.B)一个指针,指向要读入数据的存放地址

9.C)把buf起始的内存中长度为size的count个数据项输出到fp所指向的文件中

10.A)从fp所指向的文件中读取长度不超过n-1的字符串存入指针buf起始的内存

11.C)从buf起始的内存中读取一个字符串输出fp所指向的文件中

12.D)FILE *fp;

13.D)将c盘xxx子目录下file.c文件拷贝到d盘根目录下file.c文件中

14.B)使文件位置指针重新返回文件的开始位置

中,根据文件( 对 )

2.缓冲文件系统是通过文件名与相应文件建立起联系的。

(错 )

3.fp=fopen(“”,“r”);是以读的方式打开文件。

(对 )

4.文件使用后不必关闭文件,因为文件可以自动关闭。

(错 )

5.fputc函数的功能是向一个已将打开方式指定为写或读写的文件中写入一个字符。

(对)

6.fgetc函数的功能是从一个已将打开方式指定为读或读写的文件中读取一个字符串。

(错 )

7.fgets函数的功能是从一个已将打开方式指定为读或读写的文件中读取一个字符。

(错 ) 8.函数fread和fwrite可以对数组或结构体等类型的数据进行一次性读写。

(对 )

9.rewind(fp)函数的作用是使文件位置指针移到文件的结尾处。

(错 )

10.fseek( )函数可以准确定位文件位置指针以实现对文件的随机读写。

(对 )

四.改错题

1.下面程序的功能是统计一个已存在c盘xxx子目录下文

有英文字母的个数。

错误语句:fclose( );

正确语句:fclose(fp);

五.编程题

1.编写程序,打开由大写字母组成的文件,将大写字母转换为小写字母后写入文件。

2.编写程序,从键盘输入10个学生的数据(包括学号、姓名和4门课程的成绩),然后计算平均成绩,并将所有的数据存到磁盘文件std中。

3.将上面题中std文件中的学生数据,按照平均成绩进行升序排序,然后将排序后的数据存到磁盘文件std_sort中。

4.编写程序,在磁盘文件中含有10个学生的数据(包括学号、姓名和年龄),将第2、4、6、8、10个学生的数据输出到显示器上。

5.编写程序,实现16进制数的循环左移输出,每次移动一位,直至回到原值。如将16进制数5678进行循环左移输出则结果为6785、7856、8567、5678。

2023年12月14日发(作者:素泰华)

第二部分 习题篇

第一章 C语言概述

一.单项选择题

1.A)可以用来编写系统软件,也可以用来编写应用软件

2.A)编辑、编译、连接、运行

3.A)源程序

4.B).obj

5.C).exe

6.D)C语言程序总是从main( )函数开始执行

7.C)可以在任意位置

8.A)一个主函数和若干个其他函数组成

9.D)函数首部和函数体

10.C)include命令行后面需要加分号

11.C)C语言自身没有输入输出语句

12.D)&

13.B)顺序结构、选择结构、循环结构

14.D)有零个或多个输出。

15.A)建立数学模型

二.填空题

1.高级语言 2.main( ) 3.main( ) 4.{ } 5.分号

6.换行 7.*/ 8.函数 9.编译 10..exe

三.判断题

1.软件是程序、数据以及相关文档的完整集合。 (对)

2.程序设计是指使用某种计算机语言并采用合适的方法编写程序,以便指挥计算机解决具体的问题。

(对)

3.机器语言中的每一条指令都是用二进制形式表示的,机器语言编写的程序中的指令不可以由硬件直接执行。

(错)

4.一个C语言程序可以由一个主函数和若干个其他函数构成。 (对)

5.从另一个角度说,一个C程序是由一个或多个C文件组成,而一个C文件是由一个或多个函数组成。

(对)

6.C语言之所以也被称为中级语言,是因为它比高级语言的功能要少,而比低级语言的功能多。

(错)

7.同其他高级语言一样,C语言也具有结构化的控制语句。 (对)

8.C程序中的main()函数必须放在整个程序的最前头。 (错) 9.C语言允许直接访问物理地址,能进行位操作。 (对)

10.结构化程序设计的方法一般包括按自顶向下并逐步细化的方法对问题进行分析、模块化设计和结构化编码等3个步骤。

(对)

四.编程题

1.编写程序,在屏幕上显示以下信息:

* * * * * * * * * * *

Hello World!

* * * * * * * * * * *

2.编写程序,从键盘输入两个整数,然后输出其中较小的数。

3.编写程序,从键盘输入三个整数,然后输出其中最小的数。

第二章 数据类型与表达式

一.单项选择题

1.A)整型、实型、字符型

2.C)8

3.D)以上三种进制均可使用

4.A)8

5.C)必须为字母或下划线

6.D)_x

7.C)068

8.C)sqrt(x)/(3*y)

9.A)%

10.A)x=y,y=y+1

11.B)2

12.C)先考虑优先级,然后考虑结合性

13.C)从键盘输入数据时,对于整型变量只能输入整型数据,对于实型变量只能输入实型数据

14.D)60

15.B)3.0

16.B)i的值是字符A的ASCII值加上3,即68

17.C)a=69,b=68

二.填空题

1.double

2.不同

3.27

4.35

5.5

6.double

7.43 8.53

9.12,10,18

10.12.20

11.1,3,3,1

12.4,8

三.判断题

1.基本数据类型最主要的特点是不可以再分解为其它数据类型。

(对 )

2.在C语言中,整数的书写形式有十进制、八进制和十六进制形式。 (对 )

3.在C语言中,字符型常量可以用单引号或双引号括起来。 (错 )

4.在C语言中,字符型常量只能包含一个字符。 (对 )

5.在C语言中,字符串常量隐含处理以‘0’结尾。 (对 )

6.在C语言中,用户所定义的标识符中的大、小写字母代表相同标识。 (错 )

7.在C语言中,用户所定义的标识符不允许使用关键字。 (对 )

8.在C语言中,符号常量的值在程序运行过程中可以改变。 (错 )

9.在C语言中,要求对程序中所用到的变量进行强制定义。 (对 )

10.设C语言的float型是7位有效数字,则超过7位数的运算是不准确的。(对 )

四.编程题

1.编写程序,从键盘输入两个整数,输出它们的和、差、积、商、余数以及平均值。

2.编写程序,从键盘输入三个双精度数a、b、c,计算总和、平均值、x=a2+b2+c2的值,并计算x平方根的值。所有运行数据保留三位小数,第四位四舍五入。

3.编写程序,从键盘输入两个长整型数,输出它们(整数除的)商和余数。

4.编写程序,从键盘输入两个整数,输出它们(实数除)的商,并输出商的第二位小数位(例如:15/8.0=1.875,1.875的第二位小数位是7)。

5.编写程序,要求用赋初值的方法使c1、c2等两个变量的值分别为97和98,然后分别按整型和字符型输出。

6.编写程序,输入秒数转换用小时、分钟、秒表示。如输入7278秒,则输出2小时1分18秒。

7.编写程序,输入两个复数的实部和虚部,输出这两个复数积的实部和虚部。两复数的积按下面的公式计算:(a+bi)(c+di)=(ac-bd)+(ad+bc)i。

第三章 顺序结构程序设计

一.单项选择题

1.D)15.0,25.0,35.0

2.C)x=1.23,y=1.26

3.B)scanf(“%d%d%d”,&a,&b,&c);

4.A)scanf("%f",&a);

5.D)程序输出小写字母d 6.B)3

二.填空题

1.5.5

2.c+25

3.1,2,A,a

4.2D

三.判断题

1.顺序结构、选择结构和循环结构可以组成所有的各种复杂程序。

(对 )

2.复合语句就是多条语句,不必须用花括号括起来。

(错 )

3.在变量说明中,允许连续给多个变量赋初值。

(错 )

4.scanf函数和printf函数的原型在头文件“stdio.h”中。

(对 )

5.printf函数格式字符串中%4d表示输出一定是四位十进制整数。

(错 )

6.putchar 函数的功能是在显示器上输出一个字符。

(对 )

7.在scanf函数的格式串中,如果是“%d%d%d”, 在输入三个十进制整数时要用一个以上的空格键、回车键和Tab键作为每两个输入数之间的间隔。

(对 )

8.在scanf函数的格式串中,如果是“%c%c%c”, 在输入三个字符时要用一个以上的空格键、回车键、Tab键和逗号作为每两个输入字符之间的间隔。

(错 )

9.scanf("%5.2f",&a);是合法的,目的是输入小数为2位的实数。

(对 )

10.getchar函数的功能是从终端输入一个字符。

(对 )

四.编程题

1.编写程序,已知一个学生的高等数学、计算机和外语课程的成绩分别为70分、80分、90分,要求输出该学生3门课程的平均分。

2.编写程序,从键盘输入一个华氏温度,要求输出对应的摄氏温度。输出时要有文字说明,取小数点后2位。计算公式如下:

C=5/9(F-32)

其中C表示摄氏温度,F表示华氏温度。

3.编写程序,从键盘输入一个圆的半径,要求输出圆的面积。输出时要有文字说明,取小数点后2位。

第四章 选择结构程序设计

一.单项选择题 1.C)算术运算、关系运算、逻辑运算

2.A)%

3.B)x= =0

4.B)!、&&、||

5.D)(x<=y)&&(y<=z)

6.D)(x<=-10)||(x>=7)

7.A)6<x<10

8.D)(x>=„A‟)&&(x<=„Z‟)

9.A)0,0

10.C)1,0

11.C)2

12.B)1,0,0,1

13.C)1

14.A)0,0

15.B)2323

16.B)10,20,#

17.B)x=3,y=5

二.填空题

1.x=-x

2.7

3.$$$

4.default

5.2,3,3

三.判断题

1.关系运算符的优先级低于算术运算符,高于赋值运算符。

(对 )

2.关系表达式的值是“真”和“假”,用“T”和“F”表示。

(错 )

3.关系表达式3>2>1的值为真。

(错 )

4.逻辑非运算符!为单目运算符,具有右结合性。

(对 )

5.逻辑运算符和其它运算符优先级的关系从高到低为:

!(非)→算术运算符→关系运算符→&&和||→赋值运算符

(对 )

6.if(表达式) 语句1;

else 语句2;

其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。 (对 )

7.在if关键字之后均为表达式。该表达式可以是任意表达式,但不能是变量。(错 )

8.当程序中有多对if和else时,它们是按照顺序配对的。如第一个if与第一个else配对,第二个if与第二个else配对,以此类推。

(错 )

9.条件运算符的结合方向是自左至右。

(错)

10.在switch多分支语句中,break语句用于跳出switch语句。

(对 )

四.改错题

1、下面程序的功能是判断输入的一个整数是否能被5和7同时整除,若能整除,输出“YES”,否则,输出“NO”。

错误语句:if(x%5==0||x%7==0)

正确语句:if(x%5==0&&x%7==0)

2.下面程序的功能是输出一个4位整数的后两位数值,例如输入5678,输出78。

错误语句:scanf("%d",x);

正确语句:scanf("%d",&x);

3.下面程序的功能是从键盘输入三个整数,输出其中最小的数。

错误语句:min=(temp>c)?temp:c ;

正确语句:min=(temp<c)?temp:c ;

4.下面程序的功能是判断某一年是否为闰年。

错误语句:if (year%400!=0)

正确语句:if (year%400==0)

五.编程题

1.编写程序,从键盘输入一个整数,判断是奇数还是偶数。

2.编写程序,从键盘输入一个三角形三条边的边长,然后输出三角形面积,要求取2位小数。当三角形不成立时输出“不能构成一个三角形”。

3.编写程序,从键盘输入一个字符,判断是否为大写字母,如果是大写字母,则转换为小写字母,否则不转换。

第五章 循环结构程序设计

一.单项选择题

1.C)21

2.D)for(表达式1;1;表达式3)

3.D)在do-while循环中,当while后的表达式为0时结束循环

4.C)do-while的循环体至少无条件执行一次

5.A)60

6.C)1

7.B)1

8.A)-1

9.C)5050

二.填空题

1.i++

2.0

3.1.0/i

4.num++

5.||

6.e

7.A

8. 23

9.month

10.sum=0

三.判断题

1、“当型”循环是先判断表达式后执行循环体,“直到型”循环是先执行循环体后判断表达式。

(对 )

2、如果循环体 (错 )

4、for(循环变量赋初值;循环条件;循环变量增值)中的循环条件不允许省略。(错 )

5、for (f=1,i=1;i<=10; f=f*i,i++) ;是非法语句。

(错 )

6、三种循环while循环、do-while循环和for循环可以互相嵌套。 (对 )

7、在循环结构中,break语句可以使流程跳出循环体,即提前结束循环。

(对)

8、在循环结构中,continue语句是结束本次循环,即跳过循环体中下面未执行的语句,接着进行循环条件的判定。

(对)

9、continue语句和break语句的区别是break语句只结束本次循环,继续进行下一次循环,而continue语句则是结束整个循环,不再判断循环条件是否成立。

(错 )

10、goto语句能构成循环,可以随意使用。

(错 )

四.改错题

1.下面程序的功能是求10!。

错误语句:for (i=10; i>=0; i++)

正确语句:for (i=10; i>0; i--)

2.下面程序的功能是输出1~100之间所有能被3整除的数。

错误语句:if(i%3) beeak;

正确语句:if(i%3) continue;

3.下面程序的功能是求1!+2!+…+n!。

错误语句:while(i>=n);

正确语句:while(i<=n);

4.下面程序的功能是利用公式π/4≈1-1/3+1/5-1/7+„求π的近似值,直到某一项的绝对值小于10-7为止。

错误语句:while(fabs(temp)>10-7)

正确语句:while(fabs(temp)>1e-7)

五.编程题

1.编写程序,求1+2+3+„+10,要求使用4种方法。

2.编写程序,求12+22+32+„+102。

3.编写程序,求1/1+1/2+1/3+„+1/10。

4.编写程序,求1*2*3*„*10。

5.编写程序,求1!+2!+3!+„+10!。

6.编写程序,输入两个正整数,输出它们的最大公约数和最小公倍数。

第六章 数 组 2222

一.单项选择题

1.D)数组的首地址

2.D)在程序运行时,如果数组元素的下标超出了所定义的下标范围时,系统将给出“下标越界”的出错信息

3.C)x[2][1]

4.B)scanf("%d%s",&x,y);

5.D)#define N 50;

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

7.A)a[0][0]=0,a[0][1]=1,a[1][0]=2,a[1][1]=3

8.D)char a[ ]={1,2,3,4,5,6};

9.C)数组a的长度大于数组b的长度

10.D)把字符串str2复制到字符串str1中再把字符串str3连接到字符串str1之后

11.D)对于字符型数组,可以在赋值语句中通过运算符“=”进行整体赋值

二.填空题

1. 同一个

2.方括号

3.连续

4.0 19

5.行

6.一

7.0

8. 字符数组名

9.10,6

10.2

11.fibonacci[i-1]+fibonacci[i-2];

12.y[j][i]=x[i][j]

13.98

14.-21

15.i<j

16.i—

17.str[i]=str[i+1]

18.string2[i]=string1[i];

19. j++;

三.判断题

1.在C语言中,数组属于构造类型的数据。

(对)

2.一个数组的各个元素的数据类型可以不完全相同。

(错)

3.数组在 (错 )

5.数组名后是用方括号或圆括号括起来的常量表达式。

(错 )

6.C语言编译程序不对数组作边界检查,如果程序中出现了下标越界,可能会造成程序运行结果的错误。因此要注意下标不能过界。

(对 )

7.C语言允许对数组的长度作动态定义,即数组长度可以是变量。

(错 )

8.在C语言中,使用数值型数组时,只能逐个引用数组元素而不能一次引用整个数组。

(对 )

9.为数组元素赋值时,若所有元素值全部相同,则可以给数组整体赋初值。(错 )

10.对数组的全部元素赋初值时,也可以不指定数组长度。

(对 )

11.C语言中二维数组的元素在 (对 )

12.如果对二维数组中全部元素赋初值,则数组的第一维和第二维长度均可以省略。

(错 )

13.在C语言中,字符串是借助于字符数组来存放的。

(对 )

14.在字符串常量的末尾,系统会自动加一个‘0’作为结束符。 (对 )

15.用字符串常量对字符数组初始化时,数组的长度至要与字符串长度相同。(对 )

16.在printf函数中用“%s”格式符输入字符串时,空格和回车可以被读入。(错 )

17.在printf函数中使用格式说明“%s”可以实现字符串的整体输出。 (对 )

18.gets函数的功能是从终端读入字符串到字符数组,直到遇到一个空格符。(错 )

19.使用strcat函数时,字符数组1的长度要足够大,以保证全部装入被连接的字符。

(对 )

20.strcpy 函数中的“字符数组1”和“字符串2”,可以是字符串常量也可以是已赋值的字符数组名。

(错 )

四.改错题

1.下面程序的功能是为数组输入数据并输出结果。

错误语句:scanf("%d",&a);

正确语句:scanf("%d",&a[i]);

2.下面程序的功能是求矩阵a的主对角线元素之和。

错误语句:if(i<=j) sum=sum+a[i][j];

正确语句:if(i==j) sum=sum+a[i][j];

3.下面程序的功能是输出字符串StringStringStringStringStringString。 错误语句:printf("%c",c[i]);

正确语句:printf("%s",c);

4.下面程序的功能是输入3个字符串,然后找出其中最小者。

错误语句:if (str[2]<string))

正确语句:if (strcmp(str[2],string)<0)

五.编程题

1.编写程序,用选择法对15个整数排序。 清习P50 清教P139

2.编写程序,有一个3×5的矩阵,要求出其中最大的元素的值,以及其所在的位置。

3.编写程序,有一个3×3矩阵,分别求两条对角线元素之和。 秦习P68

4.编写程序,求数列1,5,14,30„,的前15项,即f[1]=1;„;f[i]=f[i-1]+i*i。

5.编写程序,将两个字符串string1与string2进行比较。要求不能使用strcmp函数且要达到相同的功能。 清习P68

6.编写程序,一篇英文文章有5行文字,每行含有80个字符。要求统计英文字母、数字、空格以及其他字符的个数。

清习P64

第七章, 函数

一.单项选择题

1.C)函数

2.D)文件

3.B)int

4.D)实参和形参分别占用一个独立的存储单元

5.C)单向值传递

6.D)数组的首地址

7.A)定义该函数时所指定的函数类型决定 8.D)函数调用可以作为一个函数的形参

9.B)2

10.C)函数不可以嵌套定义,但可以嵌套调用

11.C)称为函数的间接递归调用

12.A)允许直接递归调用,允许间接递归调用

13.D)在一个函数内的复合语句中定义的变量只在本函数范围内有效

14.A)从定义该变量的位置开始至

15.D)auto和register

16.D)extern

17.D)函数的类型可以是整型、实型、字符型,但不可以是指针型

18.C)16

19.A)5

20.B)3

21.D)10

22.D)15.000000

二.填空题

1.用户自定义函数

2.嵌套

3.类型

4.嵌套调用

5.递归调用

6.局部变量

7.源程序文件

8.static

9.extern

10.max(a,b)

11.int min(int x, int y)

12.93

三.判断题

1.C语言中,函数既可以嵌套定义,也可以嵌套调用。

( 错 )

2.如果在定义函数时不指定函数类型,系统会隐含指定函数类型为int型。

( 对 )

3.简单变量做实参时,实参对形参的数据传送是单向的“值传递”。

(对 )

4.实参和形参不能同名,以免相互影响。

(错 ) 5.当一个函数中有多个return语句时,第一个return语句起作用。

(错 )

6。如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。(对 )

7.只要被调用函数的定义出现在主调函数之后,就必须声明。

(错 )

8.C语言允许函数嵌套调用,也允许函数递归调用。

(对 )

9.数组元素作函数实参时,其用法与普通变量完全相同,实现单向“值传送”。

(对 )

10.数组名作函数实参时,其用法与普通变量完全相同,实现单向“值传送”。

(错 )

11.用数组名作函数实参时,从本质上说是把实参数组的地址传递给形参数组。(对 )

12.在一个函数 (对 )

13.形参变量是 (错 )

14.在主函数中的复合语句中定义的变量,其作用域在主函数范围 (错 )

15.C语言中,主函数比其它函数级别高,可以使用其它函数中定义的局部变量。(错 )

16.全局变量的作用域是从定义位置开始,到

17.当全局变量和局部变量同名时,全局变量起作用,局部变量不起作用。

(错 )

18.静态存储方式是指在程序运行期间分配固定的存储空间的方式。而动态存储方式

则是在程序运行期间根据需要进行动态的分配存储空间的方式。

(对 )

19.在程序执行期间,静态局部变量始终存在,其它函数也可以引用它们。

(错 )

20.静态局部变量是在编译时赋初值的,即只赋初值一次,以后每次调用它们所在的

函数时,不再重新赋初值,只是保留上次调用结束时的值。

(对 )

四.改错题

1.下面程序的功能是用递归法计算n!。

错误语句:else f=n*f(n-1);

正确语句:else f=n*fac(n-1);

2.下面程序的功能是输出1到5的阶乘。

错误语句:int f=1;

正确语句:static int f=1;

五.编程题

1.写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息。

2.编一个函数求n!。主函数求6!+7!+8!

3.编一个函数求n个数中最大值. 主函数求10个数中最大值.

4.用递归法将一个整数n转换成字符串,例如输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。

5.编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个整数由键盘输入。 清习P71

6.定义一个函数,根据给定的三角形三条边长,函数返回三角形面积。

7.编写一个函数,其功能是判断给定的正整数是否是素数,若是素数则返回函数值1,否则返回函数值0。

8.有五个人坐在一起,问第五个人多少岁,他说比第四个人大2岁,问第四个人多少

岁,他说比第三个人大2岁,问第三个人多少岁,他说比第二个人大2岁,问第二个人多少岁,他说比第一个人大2岁,问第一个人多少岁,他说10岁,问第五个人多少岁

9.第八章 指针

一.单项选择题

1.B)变量的地址

2.D)int *pointer=&x;

3.B)pointer=&x;

4.B)相加

5.A)能直接访问,能间接访问

6.C)指向包含5个整型元素的一维数组的指针

7.A)指针数组名字,包含5个指向整型数据的指针

8.C)最多允许2个

9.A)指向函数的指针,函数返回值为一个整数

10.A)返回值为指针的函数名字

11.A)-1

12.D)a=3,b=2

13.C)12,11

15.C)6,2,4

16.C)yyzzqq

17.D)IHGFEDCBA 14.A)16,48,80,

二.填空题

1.基类型

2.地址

3.scanf ("%d",p);

4.入口

5.指针数组 6.指向函数的指针变量

7.7, a[2][0]

8.a,apple

9.apple

pple

ple

le

e

10.2,a[2]

11.&sub_result , &add_result

12.len++

13.*p2++

14.**p

15. (*p)(a,b,c)

16.english_name[n]

三.判断题

1.指针就是地址,指针变量就是存放变量地址的变量。

(对)

2.对变量的访问可以用直接访问方式和间接访问方式。

(对)

3.可以给指针变量赋一个整数。

(错)

4.指针变量能指向任意类型的变量。

(错)

5.多个指针变量不能指向同一个变量。

(错)

6.*运算符和取地址运算符 & 互逆。

(对)

7.使用指针类型变量做函数的参数,实际向函数传递的是变量的地址。

(对)

8.当指针变量p指向一个整型数组时,p+1是指p的地址加1字节。

(错)

9.C语言中,数组名和指针变量均可分别做实参和形参。

(对)

10.int *pa[10];这个语句是定义一个指针,该指针可以指向有10个元素的数组。(错 )

四.改错题

1.某一个班级有n个学生,开设m门课程。使用指针的方法编写程序,查找有课程

不及格的学生,并且打印他们的成绩。 错误语句:if (j<N)

正确语句:if (j<M)

2.使用指针编写程序,从键盘输入的n个整数中找出其中最大值和最小值。调用一

个函数只能得到一个返回值,要得到多个返回值则用全局变量在函数之间“传递”数据。

错误语句:int *p,array_end;

正确语句:int *p, *array_end;

3.使用指针编写程序,从键盘输入一个字符串,然后统计字符串中字符的个数。

错误语句:scanf ("%s", &string);

正确语句:scanf ("%s",string);

4.使用指针编写程序,在输入的字符串中查找是否存在字符„x‟。

错误语句:if (p[i]!=„0‟)

正确语句:if (p[i]==„0‟)

5.使用指针数组编写程序,从键盘输入一个星期几(例如7),则程序输出对应星期

几的英文名字(Sunday)。

错误语句:if (n<1&&n>7)

正确语句:if (n<1||n>7)

五.编程题

1.编写程序,从键盘输入3个整数,按照从小到大的顺序输出。要求使用指针的方法

并且用3种不同方式实现。

2.编写程序,将数组中n个整数按相反的顺序存放后输出。要求使用指针的方法并

用2种不同方式实现。

3.编写程序,从键盘输入3个字符串,按照从小到大的顺序输出。要求使用指针的

方法实现。

4.编写程序,使用指针的方法完成字符串的复制。要求不能使用strcpy函数。

5.编写程序,使用指向一维数组的指针的方法,完成从键盘输入n个字符串(例如10个国家名)并按字典顺序排列后输出。

6.编写程序,使用数组和指针的方法,完成将一个n×n(例如5×5)的矩阵转置,并且输出最大值及其位置。

7.编写程序,使用指向指针的指针的方法,完成对n个字符串(如10个城市名)进行排序。要求从键盘输入n个字符串并且把排序编写成函数(用冒泡法和选择法2种方式)。

8.编写程序,使用指针并利用矩形法编写计算定积分 b 的通用函数。然后f(x)dx利用它分别计算以下三种数学函数的定积分: a

(1)f (x)=x2-5x+1 (2)f (x)=x3+2x2-2x+3 (3)f (x)=x/ (2+x2) 第九章 结构体与共用体

一.单项选择题

1.D)student1是结构体类型名

2.C)共用体类型

3.A)各成员所需内存字节数的总和

4.D)三种形式均可表示

5.D)成员中占内存字节数最大的

6.B)16

7.B)80

8.C)=6;

=10;

=2003;

9.B)printf("%c", school[1].name[0]);

10.B)scanf("%s",&);

11.A)1001,650

12.C)zzxxyy

13.B)1102,550,"Li"

14.D)Tao

15.D)使用typedef可以增加新类型

16.D) typedef char * STR;

二.填空题

1.指向结构体成员,结构体成员

2.duoble *

3.地址

4.256

5.A

6.1002,1003,1004;

7.p->age

8.p=head

三.判断题

1.“结构体”是一种构造类型,它是由若干相互关联的“成员”组成的。每一个成员

可以是一个基本数据类型,也可以是数组、指针,或者又是一个构造类型。

(对)

2.结构体变量的总长度为各个成员长度的总和。

(对)

3.在定义结构体变量时成员名不可以与程序中其它变量同名。

(错) 4.结构体变量名是结构体变量的首地址。

(错)

5.C语言中不允许用结构体变量作函数参数进行整体传送。

(错)

6.malloc函数的功能是在 (对 )

8.“共用体”类型变量只能存储相同类型数据的变量,不能存储不同类型数据的变量。

(错 )

9.共用体的长度是成员列表中最大长度的成员长度。

(对 )

10.共用体类型的多个成员在内存中是首地址相同的,因此可以同时访问共用体成员。

(错)

四.改错题

1.下面程序的功能是求学生成绩的总和。

错误语句:struct stu p=student;

正确语句:struct stu *p=student;

2.下面程序的功能是输出链表中所有结点的数据。

错误语句:p=head->next;

正确语句:p= p->next

五.编程题

1.编写程序,建立一个结构体,其成员包括员工号、姓名、工资,通过键盘输入数

据并且进行打印输出。

2.编写程序,使用结构体数组存放下表中员工的工资数据,然后输出每个员工的员

工号、姓名和实发工资(实发工资=基本工资+岗位工资-扣款)。

3名职工的工资总和以及平均工资。

4.编写程序,建立一个结构体数组并存放40名学生的学号、姓名、性别、年龄和3门课程的成绩,找出成绩最好的学生并输出信息。

5.编写程序,输入40个学号、姓名、年龄、家庭住址,并存放在一个结构数组中,找出年龄最小和年龄最大的学生并输出信息。

6.编写程序,建立一个名字为player的结构体,其成员包括运动员姓名“name”、运动队名“team”、平均运动成绩“avg”。

(1)编写一个名为input_player的函数,输入运动员的信息,要求以结构体作为参数。

(2)编写一个名为input_player的函数,输入运动员的信息,要求以结构体指针作为参数。

7.编写程序,建立一个结构体实现统计选举候选人选票的数量。

8.编写程序,统计通讯录链表中结点的个数。

9.编写程序,从键盘输入10个整数分别作为链表的数据域建立一个单链表,并编写删除一个指定结点的函数。

第十章 文 件

一.单项选择题

1.D)可以顺序存取,也可以随机存取

2.D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文

3.B)文

4.B)对文件操作时需要先打开文件

5.D)fopen("","wb");

6.B)fopen("D:","r+")

7.D)非零值

8.B)一个指针,指向要读入数据的存放地址

9.C)把buf起始的内存中长度为size的count个数据项输出到fp所指向的文件中

10.A)从fp所指向的文件中读取长度不超过n-1的字符串存入指针buf起始的内存

11.C)从buf起始的内存中读取一个字符串输出fp所指向的文件中

12.D)FILE *fp;

13.D)将c盘xxx子目录下file.c文件拷贝到d盘根目录下file.c文件中

14.B)使文件位置指针重新返回文件的开始位置

中,根据文件( 对 )

2.缓冲文件系统是通过文件名与相应文件建立起联系的。

(错 )

3.fp=fopen(“”,“r”);是以读的方式打开文件。

(对 )

4.文件使用后不必关闭文件,因为文件可以自动关闭。

(错 )

5.fputc函数的功能是向一个已将打开方式指定为写或读写的文件中写入一个字符。

(对)

6.fgetc函数的功能是从一个已将打开方式指定为读或读写的文件中读取一个字符串。

(错 )

7.fgets函数的功能是从一个已将打开方式指定为读或读写的文件中读取一个字符。

(错 ) 8.函数fread和fwrite可以对数组或结构体等类型的数据进行一次性读写。

(对 )

9.rewind(fp)函数的作用是使文件位置指针移到文件的结尾处。

(错 )

10.fseek( )函数可以准确定位文件位置指针以实现对文件的随机读写。

(对 )

四.改错题

1.下面程序的功能是统计一个已存在c盘xxx子目录下文

有英文字母的个数。

错误语句:fclose( );

正确语句:fclose(fp);

五.编程题

1.编写程序,打开由大写字母组成的文件,将大写字母转换为小写字母后写入文件。

2.编写程序,从键盘输入10个学生的数据(包括学号、姓名和4门课程的成绩),然后计算平均成绩,并将所有的数据存到磁盘文件std中。

3.将上面题中std文件中的学生数据,按照平均成绩进行升序排序,然后将排序后的数据存到磁盘文件std_sort中。

4.编写程序,在磁盘文件中含有10个学生的数据(包括学号、姓名和年龄),将第2、4、6、8、10个学生的数据输出到显示器上。

5.编写程序,实现16进制数的循环左移输出,每次移动一位,直至回到原值。如将16进制数5678进行循环左移输出则结果为6785、7856、8567、5678。

发布评论

评论列表 (0)

  1. 暂无评论