C语言程序设计期末考试试卷(含详细答案)_第1页
C语言程序设计期末考试试卷(含详细答案)_第2页
C语言程序设计期末考试试卷(含详细答案)_第3页
C语言程序设计期末考试试卷(含详细答案)_第4页
C语言程序设计期末考试试卷(含详细答案)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

C语言程序设计期末考试试卷(含详细答案)适用专业:计算机/机电/经管通识类专业考试时长:90分钟满分:100分考试形式:闭卷一、单项选择题(每题2分,共20分)1.以下不属于C语言基本数据类型的是()A.intB.floatC.stringD.char2.以下合法的C语言变量名是()A.123abcB.abc_123C.abc-123D.int3.若定义inta=5;执行a+=a-=a*a;后a的值为()A.-15B.-40C.0D.-204.C语言中if和else的配对原则是()A.缩进对齐配对B.随机配对C.就近配对D.从上到下顺序配对5.以下关于for循环说法错误的是()A.for循环可以嵌套使用B.for循环三个表达式均可省略C.for循环不能替代while循环D.for循环适合已知循环次数的场景6.数组定义intarr[5];以下说法正确的是()A.数组下标范围0~5B.数组有5个元素C.数组首元素是arr[1]D.数组可以直接整体赋值7.C语言函数返回值类型由()决定A.return语句表达式类型B.函数定义的返回值类型C.调用函数的变量类型D.自动匹配8.指针变量int*p;以下操作合法的是()A.p=100;B.*p=100;C.inta=10;p=&a;D.p=&10;9.结构体变量初始化说法正确的是()A.结构体可以整体输入输出B.结构体成员不能是数组C.结构体可嵌套定义D.结构体变量占用空间是各成员空间最小值10.以下关键字中用于结束本次循环的是()A.breakB.continueC.returnD.exit二、填空题(每空2分,共20分)1.C语言程序的入口函数是________。2.表达式3/2的结果是________,3.0/2的结果是________。3.逻辑表达式!0||0&&0的结果是________。4.二维数组inta[3][4];该数组共有________个元素,行下标最大为________。5.函数中________关键字可以将变量定义为静态局部变量。6.指针变量本质上是存放________的变量。7.预处理指令以________符号开头。三、程序改错题(每题6分,共18分)找出以下代码中的错误并改正(每段代码有2处错误)1.求两个整数之和c

#includestdio.h

intmain()

{

inta,b;

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

intsum=a+b;

printf("和为:%d",sum)

return0;

}2.输出1~10偶数c

#include<stdio.h>

intmain()

{

inti;

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

{

if(i%2=0)

printf("%d",i);

}

return0;

}3.数组求和c

#include<stdio.h>

intmain()

{

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

intsum=0,i;

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

{

sum=sum+arr[i];

}

printf("%d",sum);

return0;

}四、程序填空题(每空3分,共12分)1.以下代码实现:输入n,计算1+2+3+...+n的累加和c

#include<stdio.h>

intmain()

{

intn,i,sum=0;

scanf("%d",&n);

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

{

________;

}

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

return0;

}2.以下函数实现交换两个整数的值c

voidswap(int*x,int*y)

{

inttemp;

temp=*x;

________;

________;

}五、编程大题(每题15分,共30分)1.编写程序:输入一个百分制成绩(0~100),输出对应的等级。等级规则:90~100为A,80~89为B,70~79为C,60~69为D,0~59为E。2.编写程序:自定义函数,实现求一个整型数组的最大值,主函数完成数组输入、调用函数、输出最大值。参考答案及详细解析一、单项选择题答案1.C解析:C语言基础数据类型为整型、浮点型、字符型,无string字符串类型。2.B解析:变量名只能由字母、数字、下划线组成,不能以数字开头,不能用关键字。3.B解析:从右往左运算,a*a=25,a=a-25=-20,a=a+(-20)=-40。4.C解析:else永远和离它最近的未配对if配对,和缩进无关。5.C解析:for、while、do-while可以互相替代,只是适用场景不同。6.B解析:arr[5]包含5个元素,下标0~4,数组不能整体赋值、整体输入输出。7.B解析:函数返回值类型必须和定义的类型一致,和return表达式无关(会自动转换)。8.C解析:指针只能存地址,普通常量无地址,未初始化指针不能解引用。9.C解析:结构体可以嵌套定义,不能整体输入输出,成员可以是数组。10.B解析:continue结束本次循环,进入下一次;break跳出整个循环。二、填空题答案1.main()2.0;1.5解析:整数相除舍去小数,浮点运算保留小数。3.1解析:非0即为真,逻辑或有真则真。4.12;25.static6.内存地址7.#三、程序改错题答案1.错误修改:①头文件缺少尖括号:#includestdio.h改为#include<stdio.h>②scanf缺少取地址符:scanf("%d%d",a,b);改为scanf("%d%d",&a,&b);③printf语句末尾缺少分号(额外语法错误,考试可酌情扣分)2.错误修改:①for语句后多了分号,导致循环空执行,删除for末尾的;②判断相等错误:i%2=0改为i%2==0(赋值运算符不能做判断)3.错误修改:①数组下标越界:i<=3改为i<3,数组下标最大为2②循环遍历超出数组范围,会读取随机垃圾值,导致求和错误四、程序填空题答案1.第一空:i<=n第二空:sum=sum+i(或sum+=i)2.第一空:*x=*y第二空:*y=temp解析:通过指针操作实参地址,直接修改主函数变量值,实现数值交换。五、编程大题参考答案1.成绩等级判断程序c

#include<stdio.h>

intmain()

{

intscore;

printf("请输入百分制成绩:");

scanf("%d",&score);

if(score>=90&&score<=100)

{

printf("等级:A\n");

}

elseif(score>=80)

{

printf("等级:B\n");

}

elseif(score>=70)

{

printf("等级:C\n");

}

elseif(score>=60)

{

printf("等级:D\n");

}

elseif(score>=0)

{

printf("等级:E\n");

}

else

{

printf("输入成绩无效\n");

}

return0;

}得分要点:输入合法性判断、多分支条件准确、输出格式规范2.数组最大值程序(自定义函数实现)c

#include<stdio.h>

//自定义求最大值函数

intgetMax(intarr[],intn)

{

intmax=arr[0];

inti;

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

{

if(arr[i]>max)

{

max=arr[i];

}

}

returnmax;

}

intmain()

{

inta[5];

inti,max_num;

printf("请输入5个整数:");

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

{

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

}

//调用函数

max_nu

温馨提示

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

评论

0/150

提交评论