2026秋国家开放大学《C语言程序设计》形考作业及答案_第1页
2026秋国家开放大学《C语言程序设计》形考作业及答案_第2页
2026秋国家开放大学《C语言程序设计》形考作业及答案_第3页
2026秋国家开放大学《C语言程序设计》形考作业及答案_第4页
2026秋国家开放大学《C语言程序设计》形考作业及答案_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

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

文档简介

PAGE国家开放大学《C语言程序设计》形成性考核作业及答案课程代码035952026年秋季学期形考作业一至形考作业四全四套单选·多选·判断含完整选项与参考答案

使用说明本资料依据国家开放大学《C语言程序设计》(课程代码03595)课程教学大纲、文字教材与网上形考任务的知识点范围整理,按"形考作业一至形考作业四"分册编排,每册含单选题、多选题、判断题三类题型,题干后附完整A、B、C、D四个选项,并在每题末尾以【答案】标出正确选项;全册题号连续编排,按1、2、3……顺序标注到底。需要说明的四点:第一,网上形考的题目由系统从题库中随机抽取,每次进入看到的题目顺序与题目组合并不相同,因此本资料按"题库"而非"固定试卷"的方式编排,覆盖面大于单次作业的实际题量,作答时按题干关键词检索即可。第二,四个形考作业的考点分工为:作业一为数据类型、常量与变量、运算符与表达式、输入输出;作业二为选择结构与循环结构、一维数组与二维数组、字符数组与字符串处理;作业三为函数的定义与调用、参数传递、递归与变量作用域、指针基础与指针与数组;作业四为结构体与共用体、枚举、编译预处理、文件操作与位运算。第三,本资料中凡涉及"运行结果""表达式的值"的题目,均按标准C(C89/C99)语义逐条推演,做题时要特别注意五个高频陷阱:一是整数除法5/2得2而非2.5;二是自增自减的前缀与后缀——a++先取值再自增,++a先自增再取值;三是运算符优先级——单目运算符高于算术运算符,算术高于关系,关系高于逻辑与,赋值最低;四是字符与整数可互通,'A'的值是65;五是sizeof与strlen的区别——chars[]="abc"的sizeof为4(含结束符'\0'),strlen为3。第四,关于平台差异:本资料不考查int的具体字节数、指针的字节数等与编译器相关的题目,涉及处一律以"在该环境下"限定;答案所依据的运行环境为常见的32/64位PC环境(char占1字节、采用ASCII字符集),在Dev-C++、Code::Blocks、VisualStudio、gcc下结果一致。若你所用教材为较早版本(如TurboC2.0),个别题目(例如sizeof的输出格式)可能有细微差别,以教材示例为准。本资料仅供学习复习与练习使用,不替代课程教材与上机实验;程序设计类课程建议对照题目在编译器上实际运行验证,理解"为什么是这个结果"比记住答案更重要。祝学习顺利。

形考作业一数据类型、运算符与输入输出一、单选题(第1—16题)1.C程序的基本组成单位是()A.语句B.函数C.文件D.字符【答案】B2.下列合法的C语言标识符是()A.2aB.a-2C._a2D.int【答案】C3.在C语言中,char型数据在内存中占()个字节。A.1B.2C.4D.8【答案】A4.表达式5/2的值是()A.2.5B.2C.3D.1【答案】B5.表达式5%2的值是()A.0B.1C.2D.2.5【答案】B6.若有inta=5;则表达式a++的值是()A.5B.6C.4D.不确定【答案】A7.若有inta=5,b;执行b=++a;后,a和b的值分别是()A.5,5B.6,6C.6,5D.5,6【答案】B8.表达式3+4*5的值是()A.35B.23C.27D.60【答案】B9.表达式!0的值是()A.0B.1C.-1D.不确定【答案】B10.表达式1&&0||1的值是()A.0B.1C.2D.不确定【答案】B11.设intx=10;则表达式x>5?1:0的值是()A.0B.1C.10D.5【答案】B12.语句printf("%d",'A');的输出结果是()A.AB.65C.97D.0【答案】B13.语句printf("%c",66);的输出结果是()A.66B.BC.bD.编译出错【答案】B14.若floatx=3.14159;执行printf("%.2f",x);的输出结果是()A.3.14B.3.14159C.3.1D.3.142【答案】A15.关于变量名,下列说法正确的是()A.变量名可以以数字开头B.变量名区分大小写C.变量名中可以包含空格D.变量名可以是关键字【答案】B16.执行inta=3,b=4;a=a+b;b=a-b;a=a-b;后,a、b的值分别是()A.3,4B.4,3C.7,3D.3,7【答案】B二、多选题(第17—26题)17.下列属于C语言基本数据类型的有()A.intB.charC.floatD.double【答案】ABCD18.下列属于合法C语言常量的有()A.123B.'a'C."abc"D.3.14【答案】ABCD19.关于运算符优先级,下列说法正确的有()A.算术运算符高于关系运算符B.关系运算符高于逻辑与运算符C.逻辑非!的优先级高于算术运算符D.赋值运算符的优先级低于关系运算符【答案】ABCD20.设inta=3,b=5;下列表达式的值为1的有()A.a<bB.a!=bC.!(a>b)D.a>=b【答案】ABC21.关于printf函数,下列说法正确的有()A.格式控制字符串中可以包含普通字符B.%d用于输出十进制整数C.%f用于输出实型数D.输出项列表可以为空【答案】ABCD22.关于scanf函数,下列说法正确的有()A.输入项必须是地址形式B.可以在格式串中用普通字符分隔各输入项C.%d用于读入整数D.输入实型数使用%f【答案】ABCD23.下列运算符中属于单目运算符的有()A.++B.!C.sizeofD.%【答案】ABC24.关于类型转换,下列说法正确的有()A.自动类型转换按精度由低到高的方向进行B.强制类型转换的一般形式为(类型名)(表达式)C.强制类型转换不改变原变量的类型和值D.整型与实型数据运算时,整型先转换为实型【答案】ABCD25.下列转义字符书写正确的有()A.'\n'B.'\t'C.'\\'D.'\0'【答案】ABCD26.关于C语言注释,下列说法正确的有()A./**/形式的注释可以跨行B.//形式为单行注释C./**/注释可以嵌套使用D.注释不参与编译,不影响运行结果【答案】ABD三、判断题(第27—41题)27.C程序的执行总是从main函数开始,到main函数结束。A.对B.错【答案】A28.在C语言中,变量必须先定义后使用。A.对B.错【答案】A29.表达式5/2的结果是2.5。A.对B.错【答案】B30.若inta=5;则a++是先使用a的值,再使a的值增1。A.对B.错【答案】A31.字符'A'的ASCII码值是65。A.对B.错【答案】A32.在C语言中,标识符区分大小写。A.对B.错【答案】A33.printf函数中可以没有输出项,如printf("hello");是合法的。A.对B.错【答案】A34.设a为int型变量,scanf("%d",a);是正确的输入语句。A.对B.错【答案】B35.强制类型转换会改变被转换变量的值。A.对B.错【答案】B36.C语言中,整型数据与实型数据运算的结果一定是实型。A.对B.错【答案】A37.空语句就是一个分号。A.对B.错【答案】A38.C语言中的关键字不能用作变量名。A.对B.错【答案】A39.执行inta;后,a的值自动为0。A.对B.错【答案】B40.转义字符'\n'表示换行。A.对B.错【答案】A41.注释可以出现在语句中间的任何位置,并会改变程序的运行结果。A.对B.错【答案】B形考作业二选择结构、循环结构与数组一、单选题(第1—16题)1.若intx=3;执行if(x>2)printf("A");elseprintf("B");后的输出是()A.AB.BC.ABD.无输出【答案】A2.在C语言中,else子句总是与()配对。A.第一个ifB.同一层中最近的、尚未配对的ifC.最外层的ifD.由书写缩进位置决定【答案】B3.switch语句中,switch后括号内表达式的类型不能是()A.intB.charC.floatD.枚举类型【答案】C4.关于switch语句,下列说法正确的是()A.每个case后必须写breakB.某个case后没有break时,会继续执行其后case中的语句C.case后可以跟变量名D.default子句必须放在最后【答案】B5.循环for(i=0;i<5;i++)的循环体共执行()次。A.4B.5C.6D.0【答案】B6.执行inti=0,s=0;while(i<5){s+=i;i++;}后,s的值是()A.10B.15C.5D.0【答案】A7.执行ints=0,i;for(i=1;i<=10;i+=2)s+=i;后,s的值是()A.25B.30C.55D.20【答案】A8.do-while循环的结构特点是()A.先判断条件后执行循环体B.先执行一次循环体,再判断条件C.不能嵌套使用D.必须与break配合使用【答案】B9.语句for(i=0;i<3;i++)for(j=0;j<2;j++)printf("*");输出星号的个数是()A.3B.5C.6D.9【答案】C10.能立即结束本层整个循环的语句是()A.continueB.breakC.returnD.goto【答案】B11.continue语句的作用是()A.结束整个循环B.结束本次循环,转入下一次循环判断C.结束整个程序D.跳出switch结构【答案】B12.定义inta[5];后,数组元素的下标范围是()A.1~5B.0~5C.0~4D.1~4【答案】C13.执行inta[5]={1,2,3};后,a[3]的值是()A.3B.0C.不确定D.4【答案】B14.若有inta[3][4];则a[1]表示()A.一个int型元素B.第二行首地址,可视为含4个元素的一维数组名C.第一行第一列的元素D.语法错误【答案】B15.若有chars[]="abc";则sizeof(s)的值是()A.3B.4C.5D.不确定【答案】B16.若有chars[10]="abc";则strlen(s)的值是()A.3B.4C.10D.不确定【答案】A二、多选题(第17—26题)17.C语言中属于循环语句的有()A.forB.whileC.do-whileD.switch【答案】ABC18.关于for语句,下列说法正确的有()A.三个表达式都可以省略B.表达式2是循环条件C.表达式3在每次循环体执行之后执行D.省略表达式2时构成死循环【答案】ABCD19.关于break与continue,下列说法正确的有()A.break可用于循环语句和switch语句B.continue只能用于循环语句C.break只能跳出本层循环D.continue会终止整个循环【答案】ABC20.关于一维数组,下列说法正确的有()A.数组名是地址常量,代表数组首地址B.数组元素在内存中连续存放C.定义时数组长度必须是常量表达式D.可以用a=b的形式把数组b整体赋给数组a【答案】ABC21.关于二维数组inta[3][4],下列说法正确的有()A.共有12个元素B.a[0]是含4个元素的一维数组名C.元素在内存中按行优先顺序存放D.定义时可以省略第二维的长度【答案】ABC22.关于字符数组与字符串,下列说法正确的有()A.字符串以'\0'作为结束标志B.chars[]="abc"在内存中占4个字节C.字符数组可以整体输入和输出D.可以用strcpy函数复制字符串【答案】ABCD23.下列循环中,循环体可能一次都不执行的有()A.for(i=0;i<0;i++)B.while(0)C.for(;0;)D.do{}while(0);【答案】ABC24.下列程序段中,能正确计算1+2+…+100的有()A.for(i=1;i<=100;i++)s+=i;B.i=1;while(i<=100){s+=i;i++;}C.i=1;do{s+=i;i++;}while(i<=100);D.for(i=1;i<100;i++)s+=i;【答案】ABC25.关于switch语句,下列说法正确的有()A.case后必须是常量表达式B.各case后的常量值不能相同C.可以没有default子句D.default子句可以放在case之间的任意位置【答案】ABCD26.下列数组定义合法的有()A.inta[10];B.inta[]={1,2,3};C.chars[]="hello";D.inta[3]={1,2,3,4};【答案】ABC三、判断题(第27—41题)27.if语句中,条件表达式的值非0即表示"真"。A.对B.错【答案】A28.switch语句中各case后的常量值可以相同。A.对B.错【答案】B29.for循环的三个表达式都可以省略,但两个分号不能省略。A.对B.错【答案】A30.do-while循环至少执行一次循环体。A.对B.错【答案】A31.break语句可以一次跳出多层嵌套循环。A.对B.错【答案】B32.continue语句执行后,本次循环中其后的语句不再执行,直接进入下一次循环。A.对B.错【答案】A33.在C语言中,数组元素的下标从1开始。A.对B.错【答案】B34.执行inta[5]={1,2,3};后,未赋初值的元素自动为0。A.对B.错【答案】A35.二维数组的元素在内存中按列优先的顺序存放。A.对B.错【答案】B36.chars[]="abc";该数组在内存中占4个字节。A.对B.错【答案】A37.strlen("abc")的值是4。A.对B.错【答案】B38.两个字符串可以直接用关系运算符比较大小。A.对B.错【答案】B39.while循环的条件表达式在每次执行循环体之前进行判断。A.对B.错【答案】A40.语句for(i=1;i<=5;i++);的循环体是空语句,循环执行5次。A.对B.错【答案】A41.字符数组名可以直接用赋值运算符赋以一个字符串。A.对B.错【答案】B形考作业三函数、变量作用域与指针一、单选题(第1—16题)1.一个C程序中的main函数()A.只能有一个B.可以有多个C.可以没有D.至少有两个【答案】A2.若函数没有返回值,则函数类型应说明为()A.intB.voidC.charD.省略不写【答案】B3.C语言中,实参与形参之间的数据传递方式是()A.地址传递B.单向的值传递C.引用传递D.双向传递【答案】B4.函数调用时,若形参是数组名,则实参传递给形参的是()A.数组的全部元素B.数组首地址C.数组长度D.第一个元素的值【答案】B5.下列函数声明中合法的是()A.intf(inta);B.intf(int);C.intf();D.以上都合法【答案】D6.递归函数必须包含()A.循环语句B.使递归能够结束的条件C.全局变量D.数组参数【答案】B7.在函数内部(或复合语句中)定义的变量,其作用域是()A.整个程序B.所在函数或复合语句C.从定义处到本源文件结束D.所有函数【答案】B8.若在函数内定义staticintx;则x的存储特点是()A.每次调用时重新分配并初始化B.静态存储,函数调用结束后其值依然保留C.存放在寄存器中D.只能被本函数以外的函数访问【答案】B9.在函数外部定义的全局变量,其作用域是()A.整个源程序的所有文件B.定义它的那个函数C.从定义处开始到本源文件结束D.仅限定义它的那一行【答案】C10.若inta=10;int*p=&a;则*p的值是()A.变量a的地址B.10C.指针p本身的地址D.不确定【答案】B11.若有inta[5],*p=a;则p+1指向()A.a[0]B.a[1]C.a[0]的地址值加1个字节D.语法错误【答案】B12.表达式&a中的&是()A.逻辑与运算符B.取地址运算符C.按位与运算符D.引用运算符【答案】B13.若有inta[5]={1,2,3,4,5},*p=a;则*(p+3)的值是()A.3B.4C.5D.一个地址值【答案】B14.关于指针变量,下列说法正确的是()A.指针变量中存放的是数据的值B.指针变量中存放的是所指向变量的地址C.指针变量不能进行算术运算D.所有类型的指针都可以无条件通用【答案】B15.函数intf(int*p){return*p;}通过f(&x)调用,这种参数传递通常称为()A.值传递B.地址传递C.引用传递D.无参调用【答案】B16.若有char*s="hello";则strlen(s)的值是()A.4B.5C.6D.不确定【答案】B二、多选题(第17—26题)17.函数的定义部分通常包括()A.函数类型(返回值类型)B.函数名与参数表C.函数体D.函数声明末尾的分号【答案】ABC18.关于函数返回值,下列说法正确的有()A.用return语句返回B.一次调用可以直接返回多个值C.void型函数可以用return;提前结束D.返回值的类型应与函数类型一致【答案】ACD19.关于局部变量与全局变量,下列说法正确的有()A.局部变量在函数内部定义B.全局变量在函数外部定义C.同名时局部变量优先,屏蔽全局变量D.全局变量在定义处之后的各函数中可直接使用【答案】ABCD20.关于指针,下列说法正确的有()A.指针变量必须先赋确定的值再使用B.指针可以指向变量、数组和函数C.NULL表示空指针D.不同类型的指针可以不加转换地相互赋值【答案】ABC21.关于数组与指针,下列说法正确的有()A.数组名代表数组的首地址B.a[i]可以写成*(a+i)C.指向数组元素的指针变量可以自增、自减D.数组名可以自增【答案】ABC22.下列属于C语言存储类别的有()A.autoB.staticC.externD.register【答案】ABCD23.关于递归,下列说法正确的有()A.递归必须有终止条件B.递归层数过深可能造成栈溢出C.递归程序通常比等价的非递归程序简洁D.递归一定比非递归效率高【答案】ABC24.关于函数声明的作用,下列说法正确的有()A.告诉编译器函数名、返回类型和参数类型B.便于编译时检查调用的正确性C.函数定义在调用之后时,调用前应先声明D.声明中的参数名可以与定义时不同【答案】ABCD25.关于指针与字符串,下列说法正确的有()A.char*p="abc";中p指向字符串常量的首字符B.通过指针不能修改字符串常量的内容C.可以用指针遍历字符串中的各个字符D.指针数组可以存放多个字符串的首地址【答案】ABCD26.设已声明voidf(intx);下列调用正确的有()A.f(3);B.f('A');C.f(3.5);D.f();【答案】ABC三、判断题(第27—41题)27.C程序的main函数可以带参数。A.对B.错【答案】A28.C语言中函数可以嵌套定义,即在一个函数内部再定义另一个函数。A.对B.错【答案】B29.C语言中函数可以嵌套调用。A.对B.错【答案】A30.C语言中实参与形参之间的数据传递是单向的值传递。A.对B.错【答案】A31.若形参是指针,通过它可以修改实参所指向变量的值。A.对B.错【答案】A32.static局部变量在每次函数调用时都重新初始化。A.对B.错【答案】B33.全局变量未赋初值时,其值自动为0。A.对B.错【答案】A34.指针变量可以直接赋以一个整数常量(如p=1000;)而不需强制类型转换。A.对B.错【答案】B35.数组名可以作为函数实参,传递的是数组首地址。A.对B.错【答案】A36.函数的返回值可以是数组。A.对B.错【答案】B37.extern用于声明外部变量或外部函数。A.对B.错【答案】A38.指针变量所占的字节数随它所指向的数据类型不同而不同。A.对B.错【答案】B39.递归调用的层数不受任何限制。A.对B.错【答案】B40.void类型的函数不能带回返回值。A.对B.错【答案】A41.若p是指针变量,则p+1表示将地址值加1个字节。A.对B.错【答案】B形考作业四结构体、预处理、文件与位运算一、单选题(第1—16题)1.定义结构体类型使用的关键字是()A.structB.unionC.enumD.typedef【答案】A2.若有structstudent{intnum;charname[10];}s,*p=&s;则引用成员num的正确形式是()A.p.numB.(*p).numC.p->numD.B和C都正确【答案】D3.共用体(union)的基本特点是()A.所有成员同时占用不同的存储空间B.各成员共用同一段存储空间,长度取决于最长成员C.占用空间为各成员长度之和D.不能定义在结构体内部【答案】B4.若有enumcolor{red,green,blue};则green的值是()A.0B.1C.2D.不确定【答案】B5.命令#defineN10属于()A.文件包含B.宏定义C.条件编译D.变量定义【答案】B6.若#defineS(x)x*x,则表达式S(2+3)展开后的值为()A.25B.11C.10D.编译出错【答案】B7.#include命令的作用是()A.定义符号常量B.将指定文件的内容包含到该命令所在的位置C.进行条件编译D.定义全局变量【答案】B8.用fopen以"只写"方式打开一个文本文件,方式字符串应为()A."r"B."w"C."a"D."rb"【答案】B9.判断文件是否成功打开,通常检查fopen的返回值是否为()A.0B.NULLC.EOFD.1【答案】B10.fclose函数的作用是()A.打开文件B.关闭文件,并把缓冲区中的数据写入文件C.删除文件D.读出文件内容【答案】B11.函数fgetc的返回值类型是()A.charB.intC.voidD.FILE*【答案】B12.表达式5&3的值是()A.1B.7C.8D.0【答案】A13.表达式5|3的值是()A.1B.7C.8D.15【答案】B14.表达式5^3的值是()A.2B.6C.8D.15【答案】B15.表达式~5的值是()A.-6B.6C.-5D.10【答案】A16.表达式1<<3的值是()A.3B.6C.8D.16【答案】C二、多选题(第17—26题)17.关于结构体,下列说法正确的有()A.结构体类型定义本身不分配内存空间B.同类型的结构体变量之间可以整体赋值C.结构体的成员可以是另一个结构体类型D.结构体各成员的数据类型必须相同【答案】ABC18.关于typedef,下列说法正确的有()A.可以为已有类型起一个别名B.定义的是类型名而不是变量C.常用于简化结构体类型名的书写D.会创建出一种全新的数据类型【答案】ABC19.关于宏定义,下列说法正确的有()A.宏名习惯上使用大写字母B.宏替换在预处理阶段完成C.宏定义不是语句,末尾不加分号D.带参数的宏,其参数应加括号以避免优先级错误【答案】ABCD20.关于文件操作,下列说法正确的有()A.文件使用完毕后应及时关闭B.文本文件与二进制文件的打开方式不同C.fread、fwrite用于二进制文件的成块读写D.文件指针指向FILE类型的结构体【答案】ABCD21.下列属于C语言文件读写函数的有()A.fputcB.fgetsC.fscanfD.fclose【答案】ABC22.关于位运算,下列说法正确的有()A.&是按位与B.|是按位或C.^是按位异或D.~是按位取反【答案】ABCD23.关于条件编译,下列说法正确的有()A.#ifdef用于判断某个宏是否已经定义B.#ifndef常用于头文件保护,防止重复包含C.#endif用于结束条件编译段D.条件编译是在程序运行时进行判断的【答案】ABC24.关于结构体数组,下列说法正确的有()A.可以定义结构体数组来存放多条记录B.可以通过下标访问数组元素C.元素的成员用圆点运算符访问D.结构体数组不能初始化【答案】ABC25.下列运算符中属于位运算符的有()A.&B.|C.^D.&&【答案】ABC26.关于#include,下列说法正确的有()A.用尖括号<>一般用于包含系统头文件B.用双引号""一般用于包含用户自

温馨提示

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

评论

0/150

提交评论