C语言练习题答案及解析.docx
- 文档编号:29853123
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:152
- 大小:96.73KB
C语言练习题答案及解析.docx
《C语言练习题答案及解析.docx》由会员分享,可在线阅读,更多相关《C语言练习题答案及解析.docx(152页珍藏版)》请在冰豆网上搜索。
C语言练习题答案及解析
练习题1
(1)栈和队列的共同特点是
A)都是先进先出
B)都是先进后出
C)只允许在端点处插入和删除元素
D)没有共同点
(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是
A)acbed
B)decab
C)deabc
D)cedba
(3)链表不具有的特点是
A)不必事先估计存储空间
B)可随机访问任一元素
C)插入删除不需要移动元素
D)所需空间与线性表长度成正比
(4)结构化程序设计的3种结构是
A)顺序结构、选择结构、转移结构
B)分支结构、等价结构、循环结构
C)多分支结构、赋值结构、等价结构
D)顺序结构、选择结构、循环结构
(5)为了提高测试的效率,应该
A)随机选取测试数据
B)取一切可能的输入数据作为测试数据
C)在完成编码以后制定软件的测试计划
D)集中对付那些错误群集的程序
(6)算法的时间复杂度是指
A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数
(7)软件生命周期中所花费用最多的阶段是
A)详细设计
B)软件编码
C)软件测试
D)软件维护
(8)数据库管理系统中用来定义模式、内模式和外模式的语言为
A)C
B)Basic
C)DDL
D)DML
(9)下列有关数据库的描述,正确的是
A)数据库是一个DBF文件
B)数据库是一个关系
C)数据库是一个结构化的数据集合
D)数据库是一组文件
(10)下列有关数据库的描述,正确的是
A)数据处理是将信息转化为数据的过程
B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C)关系中的每一列称为元组,一个元组就是一个字段
D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
(11)以下选项中可作为C语言合法常量的是
A)-80
B)-080
C)-8e1.0
D)-80.0e
(12)以下叙述中正确的是
A)用C程序实现的算法必须要有输入和输出操作
B)用C程序实现的算法可以没有输出但必须要有输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出
(13)下列可用于C语言用户标识符的一组是
A)void,define,WORD
B)a3_b3,_123,Car
C)For,-abc,IFCase
D)2a,DO,sizeof
(14)有以下程序
main()
{inti=1,j=1,k=2;
if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);}
执行后输出结果是
A)1,1,2
B)2,2,1
C)2,2,2
D)2,2,3
(15)有定义语句:
intb;charc[10];,则正确的输入语句是
A)scanf("%d%s",&b,&c);
B)scanf("%d%s",&b,c);
C)scanf("%d%s",b,c);
D)scanf("%d%s",b,&c);
(16)有以下程序:
main()
{inti,s=1;
for(i=1;i<50;i++)
if(!
(i%5)&&!
(i%3))s+=i;
printf("%d\n",s);}
程序的输出结果是
A)409
B)277
C)1
D)91
(17)若运行时给变量x输入12,则以下程序的运行结果是
main()
{intx,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d\n",y);}
A)0
B)22
C)12
D)10
(18)已知
intt=0;
while(t=1)
{...}
则以下叙述正确的是
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
(19)有以下程序:
#include
#include
main()
{chara[]={′a′,′b′,′c′,′d′,′e′,′f′,′g′,′h′,′\0′};inti,j;
i=sizeof(a);j=strlen(a);
printf("%d,%d\b",i,j);}
程序运行后的输出结果是
A)9,9
B)8,9
C)1,8
D)9,8
(20)以下能正确定义一维数组的选项是
A)inta[5]={0,1,2,3,4,5};
B)chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};
C)chara={′A′,′B′,′C′};
D)inta[5]="0123";
(21)有以下程序
floatfun(intx,inty)
{return(x+y);}
main()
{inta=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}
程序运行后的输出结果是
A)编译出错
B)9
C)21
D)9.0
(22)下面的程序段运行后,输出结果是
inti,j,x=0;
staticinta[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
A)9
B)不确定值
C)0
D)18
(23)若有语句:
char*line[5];,以下叙述中正确的是
A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量
B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符
D)定义line是一个指向字符型函数的指针
(24)下列程序执行后的输出结果是
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,b[5];
a=0;b[0]=3;
func(&a,b);printf("%d\n",b[0]);}
A)6
B)7
C)8
D)9
(25)有如下程序
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
该程序的输出结果是
A)69825
B)63825
C)6385
D)693825
(26)有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-′a′+′A′;
s++;}}
main()
{charstr1[100]="abcddfefdbd",c=′d′;
ss(str1,c);printf("%s\n",str1);}
程序运行后的输出结果是
A)ABCDDEFEDBD
B)abcDDfefDbD
C)abcAAfefAbA
D)Abcddfefdbd
(27)下面程序的输出结果是
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
A)3
B)4
C)1
D)2
(28)有如下程序:
#defineN2
#defineMN+1
#defineNUM2*M+1
main()
{inti;
for(i=1;i<=NUM;i++)printf("%d\n",i);}
该程序中的for循环执行的次数是
A)5
B)6
C)7
D)8
(29)有以下程序:
#include
unionpw
{inti;
charch[2];}a;
main()
{a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}
程序的输出结果是
A)13
B)14
C)208
D)209
(30)设有以下说明语句
typedefstruct
{intn;
charch[8];
}PER;
则下面叙述中正确的是
A)PER是结构体变量名
B)PER是结构体类型名
C)typedefstruct是结构体类型
D)struct是结构体类型
(31)下列程序的输出结果是
#include"stdio.h"
main()
{inti,a=0,b=0;
for(i=1;i<10;i++)
{if(i%2==0)
{a++;
continue;}
b++;}
printf("a=%d,b=%d",a,b);}
A)a=4,b=4
B)a=4,b=5
C)a=5,b=4
D)a=5,b=5
(32)下面程序段的运行结果是
charstr[]="ABC",*p=str;
printf("%d\n",*(p+3));
A)67
B)0
C)字符′C′的地址
D)字符′C′
(33)设有以下说明语句
structstu
{inta;
floatb;
}stutype;
则下面的叙述不正确的是
A)struct是结构体类型的关键字
B)structstu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名
D)a和b都是结构体成员名
(34)fseek函数的正确调用形式是
A)fseek(文件指针,起始点,位移量)
B)fseek(文件指针,位移量,起始点)
C)fseek(位移量,起始点,文件指针)
D)fseek(起始点,位移量,文件指针)
(35)对于下述程序,在方式串分别采用"wt"和"wb"运行时,两次生成的文件TEST的长度是
#include
voidmain()
{FILE*fp=fopen("TEST",);
fputc(′A′,fp);fputc(′\n′,fp);
fputc(′B′,fp);fputc(′\n′,fp);
fputc(′C′,fp);
fclose(fp);}
A)7字节、7字节
B)7字节、5字节
C)5字节、7字节
D)5字节、5字节
二填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【1】-【15】序号的横线上,答在试卷上不得分.
(1)算法的基本特征是可行性、确定性、【1】和拥有足够的情报。
(2)某二叉树中度为2的结点有18个,则该二叉树中有【2】个叶子结点。
(3)在面向对象的程序设计中,类描述的是具有相似性质的一组【3】。
(4)通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【4】。
(5)数据库管理系统常见的数据模型有层次模型、网状模型和【5】3种。
(6)在scanf()函数调用语句中,可以在格式字符和%号之间加上一个星号,它的作用是跳过对应的输入数据;当输入以下数据时,100200300400500<回车>,下面语句的执行结果为【6】。
main()
{inta,b,c;
scanf("%d%*d%d%d",&a,&b,&c);
printf("%d%d%d",a,b,c);
}
(7)设有如下宏定义
#defineMYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a,b内容交换,请填空。
floata=5,b=16,c;
MYSWAP(【7】,a,b);
(8)阅读下面语句,则程序的执行结果是【8】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!
(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);
}
(9)以下程序的输出结果是【9】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);}
(10)下列程序的输出结果是【10】。
main()
{inti;
for(i=1;i+1;i++)
{if(i>4)
{printf("%d\n",i);
break;}
printf("%d\n",i++);}}
(11)函数voidfun(float*sn,intn)的功能是:
根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。
请填空。
S=ni=0(-f)i2×i+1
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【11】*f;
w=f/(2*i+1);
s+=w;}
【12】=s;}
12)以下程序从输入的10个字符串中找出最长的那个串,请填空。
#include
#include
#defineN10
main()
{charstr[N][81],*sp;
inti;
for(i=0;i sp=str[0]; for(i=1;i if(strlen(sp) 【13】; printf("输出最长的那个串: \n%s\n",sp); printf("输出最长的那个串的长度: %d\n",strlen(sp));} (13)下列程序执行输出的结果是【14】。 #include f(inta) {intb=0; staticc=3; a=c++,b++; return(a);} main() {inta=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k);} (14)有如图所示的双链表结构,请根据图示完成结构体的定义: lheaddatarchildstructaa {intdata; 【15】}node; 练习题2 (1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为 A)GEDHFBCA B)DGEBHFCA C)ABCDEFGH D)ACBFEDHG (2)树是结点的集合,它的根结点数目是 A)有且只有1 B)1或多于1 C)0或1 D)至少2 (3)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D)任意顺序 (4)在设计程序时,应采纳的原则之一是 A)不限制goto语句的使用 B)减少或取消注解行 C)程序越短越好 D)程序结构应有助于读者理解 (5)程序设计语言的基本成分是数据成分、运算成分、控制成分和 A)对象成分 B)变量成分 C)语句成分 D)传输成分 (6)下列叙述中,不属于软件需求规格说明书的作用的是 A)便于用户、开发人员进行理解和交流 B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 C)作为确认测试和验收的依据 D)便于开发人员进行需求分析 (7)下列不属于软件工程的3个要素的是 A)工具 B)过程 C)方法 D)环境 (8)单个用户使用的数据视图的描述称为 A)外模式 B)概念模式 C)内模式 D)存储模式 (9)将E-R图转换到关系模式时,实体与联系都可以表示成 A)属性 B)关系 C)键 D)域 (10)SQL语言又称为 A)结构化定义语言 B)结构化控制语言 C)结构化查询语言 D)结构化操纵语言 (11)以下不正确的叙述是 A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 (12)请选出可用作C语言用户标识符的是 A)void,define,WORD B)a3_b3,_123,IF C)FOR,--abc,Case D)2a,Do,Sizeof (13)以下选项中,不能作为合法常量的是 A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 (14)已知inta;floatb;所用的scanf调用语句格式为: scanf("a//%d,b=%f",&a,&b); 为了将数据3和25.08分别赋给x和y,正确的输入应当是 A)3,25.08 B)a=3,b=25.08 C)a//3,b=25.08 D)a//3 (15)在C语言中,运算对象必须是整型数的运算符是 A)% B)\ C)%和\ D)** (16)若有条件表达式(exp)? a++: b--,则以下表达式中能完全等价于表达式(exp)的是 A)(exp==0) B)(exp! =0) C)(exp==1) D)(exp! =1) (17)设有以下程序段 intx=0,s=0; while(! x! =0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 (18)请选出以下语句的输出结果 printf("%d\n",strlen("\t\"\065\xff\n")); A)5 B)14 C)8 D)输出项不合法,无正常输出 (19)以下不正确的定义语句是 A)doublex[5]={2.0,4.0,6.0,8.0,10.0}; B)inty[5]={0,1,3,5,7,9}; C)charc1[]={′1′,′2′,′3′,′4′,′5′}; D)charc2[]={′\x10′,′\xa′,′\x8′}; (20)设函数fun的定义形式为 voidfun(charch,floatx){…} 则以下对函数fun的调用语句中,正确的是 A)fun("abc",3.0); B)t=fun(′D′,16.5); C)fun(′65′,2.8); D)fun(32,32); (21)下面判断正确的是 A)char*a="china";等价于char*a;*a="china"; B)charstr[5]={"china"};等价于charstr[]={"china"}; C)char*s="china";等价于char*s;s="china"; D)charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc"; (22)若已定义: inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是 A)a[p-a] B)*(&a[i]) C)p[i] D)a[10] (23)以下程序的输出结果是 voidreverse(inta[],intn) {inti,t; for(i=0;i {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } main() {intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf("%d\n",s); } A)22 B)10 C)34 D)30 (24)阅读下列程序,则执行后的结果为 #include"stdio.h" main() {intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56}; printf("%x,%x\n",c[2][2],*(*(c+1)+1)); } A)3e,6 B)62,5 C)56,5 D)3E,6 (25)阅读下列程序,当运行函数时,输入asdafaaz67,则输出为 #include #include #include intfun(char*str) {inti,j=0; for(i=0;str[i]! =′\0′;i++) if(str[i]! =′′)str[j++]=str[i]; str[j]=′\0′; } main() { charstr[81]; intn; clrscr(); printf("Inputastring: "); gets(str); puts(str); fun(str); printf("%s\n",str); } A)asdafaaz67 B)asdafaaz67 C)asd D)z67 (26)以下程序的运行结果是 #defineMIN(x,y)(x)<(y)? (x): (y) main() {inti=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); } A)10 B)15 C)100 D)150 (27)设有以下语句: charx=3,y=6,z; z=x^y<<2; 则z的二进制值是 A)00010100 B)00011011 C)00011100 D)00011000 (28)若有以下说明和定义 uniondt {inta;charb;doublec;}data; 以下叙述中错误的是 A)data的每个成员起始地址都相同 B)变量data所占内存字节数与成员c所占字节数相等 C)程序段: data.a=5;printf("%f\n",data.c);输出结果为5.000000 D)data可以作为函数的实参 (29)设有以下说明语句 typedefstruct {intn; charch[8]; }PER; 则下面叙述中正确的是 A)PER是结构体变量名 B)PER是结构体类型名 C)typedefstruct是结构体类型 D)struct
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习题 答案 解析