杭州电子科技大学《C语言程序设计》2024-2025学年期末试卷(B卷)_第1页
杭州电子科技大学《C语言程序设计》2024-2025学年期末试卷(B卷)_第2页
杭州电子科技大学《C语言程序设计》2024-2025学年期末试卷(B卷)_第3页
杭州电子科技大学《C语言程序设计》2024-2025学年期末试卷(B卷)_第4页
杭州电子科技大学《C语言程序设计》2024-2025学年期末试卷(B卷)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

杭州电子科技大学《C语言程序设计》2024-----2025学年期末试卷(B卷)专业

班级

姓名

学号

题号一二三四五六七八九十成绩复核签字得分登分签字说明:本试卷共100分;答题要求:按要求答题考生须知:1.姓名、学号、系、专业、年级、班级必须写在密封线内指定位置。2.答案必须用蓝、黑色钢笔或圆珠笔写在试卷上,字迹要清晰,卷面要整洁,写在草稿纸上的一律无效。一、选择题(共20题,每题1分,满分20分)从A、B、C、D四个选项中选出最符合题目要求的答案,填涂在答题卡对应位置。以下属于C语言合法标识符,且适合命名“存储嵌入式设备ID的变量”的是()A.2025_device_idB.device_idC.device-idD.double若要存储“传感器采集温度(如25.8℃)”和“设备运行时长(如72小时)”,分别适合的C语言数据类型是()A.int、floatB.float、intC.char、doubleD.int、char执行语句“intsensor_cnt=15,valid_data=12;”(传感器总数、有效数据数),则表达式“valid_data100/sensor_cnt”的值为()A.80B.80.0C.15D.12以下关于C语言局部变量的说法,正确的是()A.局部变量定义在函数体外部B.局部变量未初始化时默认值为0C.存储“临时统计的设备故障次数”适合定义为局部变量D.局部变量可被其他函数直接访问执行以下代码后,变量is_normal(判断设备电压是否正常,正常范围5.0-5.5V,1为正常)的值为()

int

is_normal

=

0;

float

voltage

=

5.2;

//

设备电压

if

(voltage

>=

5.0

&&

voltage

<=

5.5)

is_normal

=

1;

else

is_normal

=

0;

A.1B.0C.5.2D.5.0以下循环语句中,可用于“统计20组传感器数据中湿度大于60%的组数”,且循环体执行次数为20次的是()A.for(inti=0;i<20;i++){}B.for(inti=1;i<=19;i++){}C.inti=0;while(i<19){i++;}D.inti=1;do{i++;}while(i<=20);定义“floatsensor_temp[6]={23.5,25.2,24.8};”(存储6组传感器温度),则数组元素sensor_temp[5]的值为()A.24.8B.0.0C.随机值D.编译错误以下关于C语言函数参数传递的说法,错误的是()A.值传递时,形参修改不影响实参B.地址传递时,形参修改可影响实参C.传递“设备状态数组”时,需传递数组首元素地址D.函数参数个数可与实参个数不一致(无默认参数时)若定义“intp,device_num=36;p=&device_num;”(设备总数),则以下表达式中表示“变量device_num的值”的是()A.pB.pC.&pD.&device_num以下能正确定义并初始化二维数组(存储“4个嵌入式模块的3路电流数据”,单位:mA)的是()A.intmodule_current[3][3]={{120,115},{130,125},{110,105},{128,122}};B.intmodule_current[][3]={120,115,130,125,110};C.intmodule_current[4][]={120,115,130,125,110,105,128,122};D.intmodule_current[4][3]={{120},{130,125},{110,105,118},{128,122}};执行以下代码后,输出结果为()(比较两个模块的平均电流值)

#include

<stdio.h>

int

main()

{

int

module1[]

=

{120,

115,

130};

//

模块1三路电流

int

module2[]

=

{125,

110,

128};

//

模块2三路电流

int

sum1=0,

sum2=0;

for

(int

i=0;

i<3;

i++)

{

sum1+=module1[i];

sum2+=module2[i];

}

printf("%s",

(sum1/3

>

sum2/3)

?

"模块1平均电流更高"

:

"模块2平均电流更高");

return

0;

}

A.模块1平均电流更高B.模块2平均电流更高C.121D.121以下关于结构体的说法,正确的是()A.结构体成员的数据类型必须相同B.存储“传感器信息(ID、采集时间、温度、湿度)”适合用结构体C.结构体指针访问成员时使用“.”运算符D.结构体定义后必须立即声明变量若要以“只读”方式打开存储“设备运行日志”的文本文件“device_log.txt”,正确的fopen调用是()A.fopen("device_log.txt","w");B.fopen("device_log.txt","r");C.fopen("device_log.txt","a");D.fopen("device_log.txt","rb");以下函数定义中,能正确计算“8组传感器数据的平均湿度”的是()A.floatavg_humidity(floathumidity[],intn){floattotal=0;for(inti=0;i<n;i++)total+=humidity[i];returntotal/n;}B.floatavg_humidity(floathumidity[],intn){floattotal=0;while(i<n){total+=humidity[i];i++;}returntotal/n;}C.floatavg_humidity(floathumidity[],intn){if(n==0)return0;elsereturnhumidity[n-1]+avg_humidity(humidity,n-1)/n;}D.floatavg_humidity(floathumidity[],intn){staticfloattotal=0;total+=humidity[n-1];returntotal/n;}执行以下代码后,变量high_temp(统计温度高于30℃的传感器数据组数)的值为()

int

high_temp

=

0;

float

temp[]

=

{28.5,

31.2,

29.8,

32.5,

27.6,

30.5};

for

(int

i=0;

i<6;

i++)

{

if

(temp[i]

>

30)

high_temp++;

}

A.2B.3C.4D.5以下关于指针的说法,正确的是()A.指针变量存储的是变量的值B.空指针(NULL)可以直接访问C.指向“传感器结构体”的指针需与结构体类型匹配D.指针加上一个整数表示移动指定个数的变量定义“chardevice_cmd[]="sensor_read";”(设备指令:读取传感器),则数组device_cmd占用的字节数为()A.11B.12C.13D.不确定执行以下代码后,输出结果为()(计算设备功耗,功耗=电压×电流,电压5.0V)

#include

<stdio.h>

void

calc_power(float

current,

float

power)

{

power

=

5.0

current;

//

功耗=电压×电流

}

int

main()

{

float

curr

=

0.8;

//

电流(A)

float

power;

calc_power(curr,

&power);

printf("%.1f",

power);

return

0;

}

A.0.8B.4.0C.5.0D.不确定以下关于C语言预处理命令的说法,正确的是()A.#define

MAX_DEVICE

50可定义“最大设备数量”常量B.#include命令仅能引入系统头文件C.预处理命令以“;”结尾D.#ifdef用于判断变量是否被赋值以下代码中,存在语法错误的是()A.floattemp[5]={28.5,31.2,29.8,32.5,27.6};printf("%.1f",temp[4]);B.intp=NULL;p=10;C.structSensor{charid[10];floattemp;floathumidity;};structSensors={"S202501",25.8,58.2};D.FILEfp=fopen("sensor.txt","r");if(fp==NULL)printf("文件打开失败!");二、填空题(共5题,每题3分,满分15分)将答案填写在答题卡对应位置,答案需完整、准确,多余符号或格式错误不得分。C语言中,定义“存储8个嵌入式设备编号的整型数组,初始值为101、102、103、104、105、106、107、108”的语句为:______。执行循环“inti=1,total_data=0;while(i<=14){total_data+=20;i++;}”后,total_data的值为______(计算14天的传感器总采集数据量,每天20组)。函数调用时,实参和形参之间的默认参数传递方式是______传递;若要修改实参中的“传感器温度”值,需采用______传递。打开名为“sensor_record.txt”的文本文件用于追加写入传感器采集记录,应使用语句:FILEfp;fp=fopen("sensor_record.txt","______");定义一个指向结构体Sensor(存储传感器信息)的指针p:structSensor______p;三、程序阅读题(共4题,每题5分,满分20分)阅读以下代码,分析程序运行后的输出结果,将完整输出内容填写在答题卡对应位置(多输出、少输出、格式错误均不得分)。分析以下代码的输出结果(计算5组传感器湿度的平均值):

#include

<stdio.h>

int

main()

{

float

humidity[]

=

{58.2,

62.5,

59.8,

61.3,

57.6};

//

5组湿度数据(%)

float

total

=

0.0,

avg;

for

(int

i=0;

i<5;

i++)

{

total

+=

humidity[i];

}

avg

=

total

/

5;

printf("传感器平均湿度:%.1f%%",

avg);

return

0;

}

输出结果:______分析以下代码的输出结果(统计设备电流超过120mA的模块个数):

#include

<stdio.h>

int

main()

{

int

count

=

0;

int

module_current[]

=

{120,

115,

130,

125,

110,

105,

128,

122};

//

8个模块电流

int

i

=

0;

do

{

if(module_current[i]

>

120)

{

count++;

}

i++;

}

while(i

<

8);

printf("电流超过120mA的模块个数:%d",

count);

return

0;

}

输出结果:______分析以下代码的输出结果(递归计算信号采样点的阶乘,n=5,用于FFT预处理):

#include

<stdio.h>

int

factorial(int

n)

{

if

(n

==

1)

return

1;

else

return

n

factorial(n-1);

}

int

main()

{

int

res

=

factorial(5);

printf("5个采样点的阶乘(FFT预处理):%d",

res);

return

0;

}

输出结果:______分析以下代码的输出结果(结构体存储设备信息并修改运行状态):

#include

<stdio.h>

struct

Device

{

char

id[10];

//

设备ID

int

run_hour;

//

运行时长(小时)

int

is_running;

//

运行状态(1=运行,0=停止)

};

int

main()

{

struct

Device

d

=

{"D202501",

72,

1};

d.run_hour

+=

8;

//

追加8小时运行时长

d.is_running

=

0;

//

设备停止运行

printf("设备ID:%s,运行时长:%d小时,运行状态:%s",

d.id,

d.run_hour,

(d.is_running==1)?"运行":"停止");

return

0;

}

输出结果:______四、程序填空题(共2题,每空3分,满分15分)请在程序的横线处填入适当的内容,使程序完整并能正确运行。以下程序用于对6组传感器温度数据进行降序排序(冒泡排序法),请补全代码。#include

<stdio.h>

int

main()

{

float

temp[6]

=

{28.5,

31.2,

29.8,

32.5,

27.6,

30.5};

//

6组温度数据

int

i,

j;

float

temp_val;

for(i=0;

i<5;

i++)

{

for(j=0;

j<_______;

j++)

{

//

内层循环控制未排序元素

if(temp[j]

<

temp[j+1])

{

//

降序排序,前元素小于后元素则交换

temp_val

=

temp[j];

temp[j]

=

temp[j+1];

temp[j+1]

=

temp_val;

}

}

}

//

输出排序结果

printf("降序排序后的温度数据:");

for(i=0;

i<6;

i++)

{

printf("%.1f

",

temp[i]);

}

return

0;

}以下程序用于统计文本文件“device_log.txt”中设备故障次数(文件中每行存储1条设备状态,最后一列1=故障,0=正常),请补全代码。#include

<stdio.h>

#include

<stdlib.h>

int

count_fault()

{

FILE

fp;

int

count

=

0;

char

id[10];

int

run_hour,

is_fault;

//

以只读方式打开文件

fp

=

fopen("device_log.txt",

"_______");

if(fp

==

NULL)

{

printf("文件打开失败!");

exit(1);

//

退出程序

}

//

循环读取设备状态,统计故障次数

while(_______

==

3)

{

//

判断是否成功读取3个数据(设备ID、运行时长、故障状态)

if

(is_fault

==

1)

count++;

}

fclose(fp);

//

关闭文件

return

count;

}

int

main()

{

int

total

=

count_fault();

printf("设备故障总次数:%d",

total);

return

0;

}五、编程题(共3题,第1题8分,第2题10分,第3题12分

温馨提示

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

评论

0/150

提交评论