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

下载本文档

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

文档简介

C语言程序设计竞赛试题(含详细答案解析)考试说明:1.本试卷满分100分,考试时间120分钟;2.答题前请认真审题,编程题可使用任意C语言标准编译器;3.所有代码需符合C98标准,禁止使用特殊库函数。一、单项选择题(共10题,每题2分,共20分)1.以下不属于C语言基本数据类型的是()A.intB.floatC.stringD.char2.已知inta=5,b=2;,则表达式a%b的值为()A.2B.1C.2.5D.03.以下关于if语句的描述,正确的是()A.if后面的括号可以省略B.if语句只能嵌套一层C.else不能单独使用D.if判断条件只能是关系表达式4.定义数组intarr[5];,该数组合法的最大下标是()A.0B.4C.5D.65.以下循环语句中,属于死循环的是()A.for(inti=0;i<10;i++)B.while(0)C.while(1)D.do{}while(0)6.函数return语句的作用,说法错误的是()A.结束当前函数执行B.可以返回一个数值C.void类型函数必须写returnD.可提前终止函数运行7.已知chars[]="abc";,数组s占用的内存字节数是()A.3B.4C.5D.28.指针变量int*p;,以下操作合法的是()A.p=100B.*p=100C.inta;p=&aD.p=&109.以下运算符中,优先级最高的是()A.=B.+C.&&D.!10.宏定义#defineN10,以下说法正确的是()A.N是变量,可以修改值B.N是常量,编译前替换C.N的值可在程序中改变D.宏定义必须写在函数内二、填空题(共5题,每题3分,共15分)1.C语言中,逻辑真的数值是______,逻辑假的数值是______。2.表达式3+5*2的运算结果是______。3.执行inti=0;while(i++<3);循环结束后,i的值为______。4.二维数组inta[3][4];总共有______个元素。5.字符串比较函数是______,字符串复制函数是______。三、程序阅读题(共3题,每题5分,共15分)1.写出以下程序的运行结果c

#include<stdio.h>

intmain()

{

inta=10,b=20;

if(a>b)

{

intt=a;

a=b;

b=t;

}

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

return0;

}2.写出以下程序的运行结果c

#include<stdio.h>

intmain()

{

intsum=0;

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

{

if(i%2==0)continue;

sum+=i;

}

printf("%d",sum);

return0;

}3.写出以下程序的运行结果c

#include<stdio.h>

voidfun(intx)

{

x+=5;

}

intmain()

{

inta=10;

fun(a);

printf("%d",a);

return0;

}四、程序填空题(共2空,每空5分,共10分)以下程序功能:输入n,计算1~n的累加和,补全代码。c

#include<stdio.h>

intmain()

{

intn,i,sum=0;

scanf("%d",&n);

for(i=1;______;i++)

{

______;

}

printf("sum=%d",sum);

return0;

}五、编程大题(共2题,每题20分,共40分)1.基础编程:输入一个整数,判断该数是否为素数(质数)。素数定义:大于1,且只能被1和自身整除的整数。要求:输入输出清晰,逻辑完整,能判断正负整数、1、2等特殊情况。2.进阶编程:输入10个整数存入数组,统计并输出数组中的最大值、最小值、所有数的平均值(保留2位小数)。完整答案及详细解析一、单项选择题答案及解析1.答案:C解析:C语言基本数据类型包含整型int、浮点型float/double、字符型char,没有string字符串类型,字符串通过字符数组或指针实现。2.答案:B解析:%是取余运算符,5除以2商2余1,运算结果为余数1。3.答案:C解析:if括号不可省略,if语句可多层嵌套,else必须和if配对使用,判断条件可以是任意合法表达式(数值、逻辑表达式等)。4.答案:B解析:C语言数组下标从0开始,长度为5的数组,下标范围0~4,最大合法下标为4。5.答案:C解析:while(1)条件恒为真,无法退出循环,属于死循环;while(0)和do-while(0)循环不执行,for循环为有限次循环。6.答案:C解析:void类型函数无返回值,可省略return语句,无需强制书写。7.答案:B解析:字符串默认末尾自带结束符'\0',"abc"包含a、b、c、'\0',共4个字节。8.答案:C解析:指针只能存储地址,p=&a是将变量a的地址赋值给指针p;A直接赋值数值、B野指针赋值、D取常量地址均不合法。9.答案:D解析:运算符优先级:逻辑非(!)>算术运算(+)>逻辑与(&&)>赋值(=)。10.答案:B解析:宏定义是预处理指令,编译前完成文本替换,N为常量,程序运行中不可修改,可写在函数内外。二、填空题答案及解析1.1、0解析:C语言规定,非0数值均为真,标准逻辑真值为1,逻辑假固定为0。2.13解析:乘法优先级高于加法,先算5*2=10,再算3+10=13。3.4解析:i++是先判断后自增,i=0、1、2时判断条件成立,执行循环;i=3时判断3<3不成立,循环结束,此时i已自增为4。4.12解析:3行4列二维数组,元素总数=3*4=12。5.strcmp()、strcpy()解析:均为string.h头文件库函数,strcmp用于字符串比较,strcpy用于字符串拷贝。三、程序阅读题答案及解析1.运行结果:1020解析:初始a=10,b=20,a>b条件不成立,不执行交换代码,变量值保持不变。2.运行结果:9解析:循环遍历1~5,遇到偶数执行continue跳过累加,只累加奇数1、3、5,总和为9。3.运行结果:10解析:C语言函数参数传递为值传递,fun函数中修改的是形参x的值,不会影响主函数实参a的数值。四、程序填空题答案第一空:i<=n第二空:sum=sum+i(或sum+=i)解析:循环需要遍历1到n所有整数,每次循环将当前i值累加到sum中,实现累加求和功能。五、编程大题参考答案(可直接运行)1.判断素数代码c

#include<stdio.h>

intmain()

{

intn,i,flag=1;

scanf("%d",&n);

//小于2的数不是素数

if(n<2)

{

printf("%d不是素数\n",n);

return0;

}

//判断能否被2~根号n之间的数整除

for(i=2;i*i<=n;i++)

{

if(n%i==0)

{

flag=0;

break;

}

}

if(flag==1)

printf("%d是素数\n",n);

else

printf("%d不是素数\n",n);

return0;

}解题思路:先排除小于2的非素数,遍历2到根号n,若存在能整除n的数则不是素数,否则为素数,减少循环次数,提升效率。2.数组求最值与平均值代码c

#include<stdio.h>

intmain()

{

intarr[10];

intmax,min,i;

doublesum=0,avg;

//输入10个整数

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

{

scanf("%d",&arr[i]);

}

//初始化最值

max=min=arr[0];

//遍历统计最值和总和

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

{

if(arr[i]>max)

max=arr[i];

if(arr[i]<min)

min=arr[i];

温馨提示

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

评论

0/150

提交评论