《C语言练习题及其答案.pdf》由会员分享,可在线阅读,更多相关《C语言练习题及其答案.pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语言练习题及其答案 C 语言练习题及其答案 C 语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C 语言能以简易的方式编译、处理低级存储器。下面是店铺帮大家整理的 C 语言练习题及其答案,仅供参考,大家一起来看看吧。C 语言练习题及其答案 1 一、选择题(7 分,每小题 0.5 分)1.C 语言源程序的基本单位是(B)。A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是(C)。main()int a=7,b=5;printf(%d,b=b/a);A 5 B 1 C 0 D 不确定值 3.假设变量 a,b 均为整型,表达式(a=5,b=2,ab?a+:b
2、+,a+b)的值是(B)。A 7 B 8 C9 D 2 4.设 a 为 int 型变量,执行下列赋值语句后,a 的取值分别是()。a=125.534;a=(int)125.521%4;a=5n B+p-nC p-n+D(*p).n+14.C 语言中的文件类型只有()。A 索引文件和文本文件两种 B 文本文件一种 C 二进制文件一种 D ASCII 码文件和二进制文件两种 7.在 C 语言程序中,以下说法正确的是(A)。A 函数的定义可以嵌套,但函数的调用不可以嵌套 B 函数的定义不可以嵌套,但函数的调用可以嵌套 C 函数的定义和函数的调用都不可以嵌套 D 函数的定义和函数的调用都可以嵌套 8.
3、以下函数调用语句中含有(A)个实参。func(e1,e2),(e3,e4,e5);A 2B 3 C 5 D 语法错误 9.以下程序的输出结果为()。#define ADD(x)x*x main()int a=4,b=6,c=7,d=ADD(a+b)*c;printf(d=%d,d);A d=70 B d=80 C d=140 D d=700 10.已知职工记录描述如下,在 Turbo C 中,系统为变量 w 分配()字节的空间。struct worker int no;char name20;char sex;union int day;int month;int year;birth;w;A
4、 29 B 20 C 25 D 6 11.设有以下定义,值为 5 的枚举常量是()。enum weeksun,mon=4,tue,wed,thu,fri,satw;A tue B satC fri D thu 二判断对错,对的划“”,错的划“”(5 分,每小题 0.5 分)1在 Turbo C 中,整型数据在内存中占 2 个字节。()2int i=20;switch(i/10)case 2:printf(A);case1:printf(B);的输出结果为 A。()3break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。()4函数的递归调用不过是一个函数直
5、接或间接地调用它自身。()5函数 strlen(ASDFG)的值是 7。()6通过 return 语句,函数可以带回一个或一个以上的返回值。()7结构体类型只有一种。()8char*p=girl;的含义是定义字符型指针变量p,p的值是字符串girl。()9若有定义:char*p(char a10);则 p 是函数名。()10用 fopen(file,r+);打开的.文件file可以进行修改。()三写出下列程序的运行结果(10 分,每小题 2 分)1.float average(floatarray10)int i;float aver,sum=array0;for(i=1;i10;i+)sum
6、=sum+arrayi;aver=sum/10;return(aver);main()float score1089,67.5,78,91,56,82.5,65,70,79,88,aver;int i;aver=average(score);printf(“averagescore is%5.2f”,aver);2.main()char a5=A,B,C,D,E,*p=a,*pa;for(p=0;pa+5;p+)printf(“%2c”,*p);printf(“”);printf(“%2c”,*(pa=&p);3.main()int a,b,s=0;for(a=1,b=1;a=20)break
7、;if(b%3=1)b+=3;continue;b-=5;printf(“a=%d b=%d”,a,b);4.main()printf(“main():%d”,fact(5);fact(-5);fact(int value)int f;if(value0)printf(“Argerror);return(-1);else if(value=1|value=0)f=1;elsef=value*fact(value-1)+1;printf(“This calledvalue=%d”,f);return f;5.main()int a=012,b=0 x12,k=12;char c=102,d=;p
8、rintf(“a=%d b=%d k=%d”,a,b,k);printf(“c=%c,d=%c%o”,c,d,a);a=A;c=49;printf(“a=%d c=%c”,a,c);四 阅读下列程序,在处填入适当内容,使程序完整(8 分,每个空1 分)1.有一个 3*4 矩阵,求其中的最大元素。max_value(1)int i,j,max;max=array00;for(i=0;i3;i+)for(j=0;jmax)max=arrayij;(2);main()int a34,i,j;for(i=0;i3;i+)for(j=0;j4;j+)(3);printf(“maxvalue is%d”,
9、max_value(a);2.输入 x、y 两个整数,按先大后小的顺序输出 x、y。#include“stdio.h”main()int x,y,*px,*py,(4);scanf(“%d%d”,&x,&y);(5);(6);if(xy)p=px;px=py;py=p;printf(“x=%d,y=%d”,x,y);printf(“MAX=%d,MIN=%d”,*px,*py);3.用选择排序法对任意 10 个整数按照由小到大排序。main()int a11,i,j,k,t;printf(Please input 10numbers:);for(i=1;i11;i+)scanf(%d,&ai)
10、;printf();for(i=1;iak)k=j;if(k!=i)t=ak;ak=ai;ai=t;printf(The sortednumbers:);for(i=1;i=2&c=2&c=2&c=2&c=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。3).在 C 语言中,函数返回值的类型最终取决于 A.函数定义时在函数首部所说明的函数类型 B.return 语句中表达式值的类型 C.调用函数时主调函数所传递的实参类型 D.函数定义时形参的类型 正确答案:A 答案解析:在 C 语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函
11、数值说明的类型一般应该和 return 语句中的表达式类型一致。如果函数值的类型和return 语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。4).以下叙述中正确的是()A.在 C 语言中,预处理命令行都以#开头 B.预处理命令行必须位于 C 源程序的起始位置 C.#include 必须放在 C 程序的开头 D.C 语言的预处理不能实现宏定义和条件编译的功能 正确答案:A 答案解析:在 C 语言中,凡是以#号开头的行,都称为编译预处理命令行。预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。#includ
12、e 命令行表示程序中要引用 C 标准函数库中的标准输入输出函数。5).下列叙述中,不属于测试的特征的是 A.测试的挑剔性 B.完全测试的不可能性 C.测试的可靠性 D.测试的经济性 正确答案:C 答案解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3 个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中,没有测试的可靠性这一说法。6).以下选项中不属于 C 语言标识符的是()A.用户标识符 B.关键字 C.常量 D.预定义标识符 正确答案:C 答案解析:C 语言的标识符可分为以下 3 类:关键字。C 语言预先规定了一批标识符
13、,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。例如,int、double、if、else、while、for 等。预定义标识符。即预先定义并具有特定含义的标识符。用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名。7).以下关于字符串的叙述中正确的是()A.两个字符串中的字符个数相同时才能进行字符串大小的比较 B.可以用关系运算符对字符串的大小进行比较 C.空串比空格打头的字符串小 D.C 语言中有字符串类型的常量和变量 正确答案:C 答案解析:C 语言本身并没有设置一种类型来定义字符串变量,却允许使用字符串常量。字符
14、串常量是由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数 strcmp(s1,s2)来进行,其比较的方法是依次对 s1 和 s2 中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小(比较字符大小的依据是其 ASC码值)。8).下列叙述中正确的是()。A.调用 printf()函数时,必须要有输出项 B.使用 put)函数时,必须在之前包含头文件 stdio.h C.在 C 语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节 get)函数读入字符时,可以从键盘上输入字符所对应的ASCII 码 正确答案:B 答案解析:选项
15、A,若 printf 函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项 C,在 C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项 D,getchar 函数是从标准输入设备读取一个字符。9).以下结构体类型说明和变量定义中正确的是()A.typedefstruct int n;char c;REC;REC t1,t2;B.structREC;int n;char c;REC t1,t2;C.typedefstruct REC;int n=0;char c=A;t1,t2;D.struct int n;char
16、c;REC;REC t1,t2;正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 成员列表;struct 结构体名后不能加;号,所以选项 B、C)错误,选项 D 中定义无名称的结构体类型同时定义结构体变量形式应为 struct t1,t2;选项 A 为用户自定义类型,其为正确的定义形式。10).若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体 A 和 C 的联系是()A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于 B 和 C 有一一对应的联系,而 A 和 B 只间有一对多的联系,则通过关系之间的传递,则 A 和 C 之间也是一对多的联系。11).待排序的关键码序列为(15,20,9,30,67.65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码 15 被放到第()个位置。A.2 B.3 C.4 D.5 正确答案:B 答案解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素 9 放在第一个位置,元素 15 则被交换放在第三个位置。下载全文