C语言读程序专项测试题(含详细答案解析)_第1页
C语言读程序专项测试题(含详细答案解析)_第2页
C语言读程序专项测试题(含详细答案解析)_第3页
C语言读程序专项测试题(含详细答案解析)_第4页
C语言读程序专项测试题(含详细答案解析)_第5页
已阅读5页,还剩5页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言读程序专项测试题(含详细答案解析)本套试题专注C语言程序阅读能力考查,涵盖变量运算、分支结构、循环结构、数组、函数、指针基础核心知识点,题型贴合日常考试真题风格,适合巩固代码阅读、逻辑分析能力。所有题目均附带详细解题步骤和最终答案。一、单项选择题(共10题,每题5分,共50分)说明:阅读完整程序代码,根据代码逻辑,选出程序运行后的输出结果。第1题c

#include<stdio.h>

intmain()

{

inta=5,b=3;

a=a+b;

b=a-b;

a=a-b;

printf("%d%d",a,b);

return0;

}A.53  B.35  C.83  D.38答案:B详细解析:1.初始赋值:a=5,b=3;2.执行a=a+b,a=5+3=8,此时a=8,b=3;3.执行b=a-b,b=8-3=5,此时a=8,b=5;4.执行a=a-b,a=8-5=3,此时a=3,b=5;5.最终输出35,该代码实现了不借助第三方变量交换两个整数的值。第2题c

#include<stdio.h>

intmain()

{

intx=10,y;

y=x+++++x;

printf("%d",y);

return0;

}A.20  B.21  C.22  D.19答案:C详细解析:1.初始x=10;2.x++为后置自增,先取值后自增,取值为10,取值后x变为11;3.++x为前置自增,先自增后取值,x先变为12,取值为12;4.y=10+12=22,最终输出22。第3题c

#include<stdio.h>

intmain()

{

inta=2;

switch(a)

{

case1:printf("1");break;

case2:printf("2");

case3:printf("3");break;

default:printf("0");

}

return0;

}A.2  B.23  C.230  D.3答案:B详细解析:1.变量a=2,匹配case2;2.执行printf("2"),输出字符2,该case无break语句,会发生case穿透;3.直接顺序执行case3的语句,输出字符3,case3带有break,跳出switch结构;4.最终输出结果为23。第4题c

#include<stdio.h>

intmain()

{

inti,s=0;

for(i=1;i<5;i++)

{

if(i%2==0)

continue;

s+=i;

}

printf("%d",s);

return0;

}A.9  B.6  C.4  D.5答案:A详细解析:1.初始s=0,循环i取值为1、2、3、4;2.i=1:1%2≠0,不执行continue,s=0+1=1;3.i=2:2%2=0,执行continue,跳过本次循环剩余语句,s值不变;4.i=3:3%2≠0,s=1+3=4;5.i=4:4%2=0,执行continue,s值不变;6.循环结束,s最终值为9?修正:1+3+5(无,i<5),正确累加1+3=4,最终输出4。更正最终结果:循环仅执行1、3累加,s=4,答案为C。第5题c

#include<stdio.h>

intmain()

{

intarr[3]={1,2,3};

int*p=arr;

printf("%d",*(p+1));

return0;

}A.1  B.2  C.3  D.随机值答案:B详细解析:1.数组arr默认首地址赋值给指针p,p指向数组第一个元素arr[0];2.p+1表示指针向后偏移一个int类型长度,指向arr[1];3.*(p+1)表示取出指针指向的值,即arr[1]=2,最终输出2。第6题c

#include<stdio.h>

intmain()

{

inta=0;

while(a++<3)

{

printf("%d",a);

}

return0;

}A.012  B.123  C.0123  D.12答案:B详细解析:1.初始a=0,判断条件为后置自增:先取值比较,后自增;2.第一次:0<3成立,a自增为1,输出1;3.第二次:1<3成立,a自增为2,输出2;4.第三次:2<3成立,a自增为3,输出3;5.第四次:3<3不成立,循环结束;6.最终输出123。第7题c

#include<stdio.h>

intfun(intn)

{

if(n==1)

return1;

returnn+fun(n-1);

}

intmain()

{

printf("%d",fun(4));

return0;

}A.10  B.4  C.8  D.15答案:A详细解析:该函数为递归求和,计算1~n的累加和:1.fun(4)=4+fun(3)2.fun(3)=3+fun(2)3.fun(2)=2+fun(1)4.fun(1)=15.回溯计算:fun(2)=3,fun(3)=6,fun(4)=10,最终输出10。第8题c

#include<stdio.h>

intmain()

{

intx=3,y=5;

if(x>y)

x=y;

y=x;

printf("%d%d",x,y);

return0;

}A.35  B.55  C.33  D.53答案:C详细解析:1.初始x=3,y=5,判断x>y(3>5)不成立,不执行x=y;2.顺序执行y=x,将x的值3赋值给y;3.最终x=3,y=3,输出33。第9题c

#include<stdio.h>

intmain()

{

charstr[]="abcde";

printf("%d",sizeof(str));

return0;

}A.5  B.6  C.7  D.不确定答案:B详细解析:1.字符数组用双引号赋值时,系统会自动在末尾添加字符串结束符'\0';2."abcde"包含5个有效字符+1个结束符,共6个字符;3.sizeof统计数组实际占用内存字节数,结果为6。第10题c

#include<stdio.h>

#defineN3

intmain()

{

inta[N]={1,2,3};

inti,sum=0;

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

sum+=a[i];

printf("%d",sum);

return0;

}A.1  B.3  C.6  D.5答案:C详细解析:1.宏定义N=3,数组a包含3个元素:1、2、3;2.循环遍历数组所有元素,累加求和:1+2+3=6;3.最终输出6。二、程序输出填空题(共5题,每题10分,共50分)说明:阅读完整程序,直接填写程序运行后的最终输出结果。第1题c

#include<stdio.h>

intmain()

{

inta=10;

a+=a-=a*a;

printf("%d",a);

return0;

}输出结果:-180详细解析:赋值运算符从右向左结合,分步计算:1.先算a*a=10*10=100;2.计算a-=100,a=10-100=-90;3.计算a+=-90,a=-90+(-90)=-180。第2题c

#include<stdio.h>

intmain()

{

inti=0;

do

{

i++;

}while(i++<2);

printf("%d",i);

return0;

}输出结果:4详细解析:1.初始i=0,进入do-while循环(先执行后判断);2.第一次循环:i自增为1,判断1<2成立,i再次自增为2;3.第二次循环:i自增为3,判断3<2不成立,i再次自增为4,循环结束;4.最终i=4。第3题c

#include<stdio.h>

intmain()

{

intarr[4]={2,4,6,8};

int*p=arr+2;

printf("%d",*p);

return0;

}输出结果:6详细解析:1.arr为数组首地址,arr+2指向数组下标为2的元素;2.数组下标2对应的元素为6,*p取值结果为6。第4题c

#include<stdio.h>

voidtest(intx)

{

x=x+5;

}

intmain()

{

inta=10;

test(a);

printf("%d",a);

return0;

}输出结果:10详细解析:1.C语言函数参数传递为值传递,仅将a的值拷贝给形参x;2.函数内修改的是形参x的值,不会影响主函数中实参a的数值;3.a始终为初始值10。第5题c

#include<stdio.h>

intmain()

{

ints=0,i;

for(i=1;i<=4;i++)

{

if(i==3)

break;

s+=i;

}

printf("%d",s);

return0;

}输出结果:3详细解析:1.i=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论