2022年徽商职业学院公共课《C语言》科目期末试卷B(有答案)_第1页
2022年徽商职业学院公共课《C语言》科目期末试卷B(有答案)_第2页
2022年徽商职业学院公共课《C语言》科目期末试卷B(有答案)_第3页
2022年徽商职业学院公共课《C语言》科目期末试卷B(有答案)_第4页
2022年徽商职业学院公共课《C语言》科目期末试卷B(有答案)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

2022年徽商职业学院公共课《C语言》科目期末试卷B(有答案)一、单项选择题(每题2分,共30分)1.以下关于C语言的叙述中正确的是()A.C语言中的注释不可以夹在变量名或关键字中间B.C程序中的所有字母都必须小写C.源程序中包含多个函数时,程序执行的顺序与函数的定义顺序一致D.在C程序中,模块化是通过子程序实现的答案:A解析:C程序中字母大小写是敏感的,但不是所有字母都必须小写,B错误;程序执行从main函数开始,与函数定义顺序无关,C错误;在C程序中,模块化是通过函数实现的,而不是子程序(子程序在一些其他语言概念中有特定含义,C语言中一般说函数),D错误;注释不能夹在变量名或关键字中间,A正确。2.若有定义:inta=5;则表达式a++2的值是()A.10B.11C.12D.13答案:A解析:a++是后自增,先使用a的值进行运算,即52=10,然后a的值变为6。3.以下选项中,合法的C语言关键字是()A.integerB.FloatC.doubleD.Char答案:C解析:C语言中关键字都是小写,double是合法的关键字用于定义双精度浮点数类型;integer不是C语言关键字;Float和Char大小写不符合要求,C语言中是float和char。4.若有定义:intx=1,y=2;则表达式x>y?x:y的值是()A.1B.2C.0D.无法确定答案:B解析:条件表达式x>y?x:y,先判断x>y,1>2不成立,所以取冒号后面的值y,即2。5.以下关于数组的叙述中,错误的是()A.数组名代表数组的首地址B.数组的下标从0开始C.可以通过赋初值的方式确定数组的长度D.数组的元素类型可以不同答案:D解析:数组是一组相同类型数据的集合,元素类型必须相同;数组名代表数组首地址,下标从0开始,也可以通过赋初值的方式确定数组长度(如inta[]={1,2,3};此时数组长度为3)。6.若有定义:charstr[]="hello";则数组str所占的存储空间为()A.5个字节B.6个字节C.7个字节D.8个字节答案:B解析:字符串"hello"除了5个字符外,系统会自动在末尾添加一个'\0'作为字符串结束标志,所以共占6个字节。7.以下函数调用语句中,实参的个数是()func((exp1,exp2),(exp3,exp4,exp5));A.1B.2C.3D.5答案:B解析:函数调用中,(exp1,exp2)是一个逗号表达式,作为一个实参,(exp3,exp4,exp5)也是一个逗号表达式,作为一个实参,所以实参个数是2。8.若有定义:inta[][3]={1,2,3,4,5,6};则数组a的行数是()A.1B.2C.3D.无法确定答案:B解析:二维数组初始化时,省略第一维大小,根据初始化数据个数和第二维大小确定第一维大小。这里第二维大小为3,初始化数据有6个,6/3=2,所以行数是2。9.以下关于指针的叙述中,正确的是()A.指针变量中只能存放地址值B.一个指针变量可以指向不同类型的变量C.指针变量的值可以进行算术运算,如加、减、乘、除D.指针变量可以不初始化答案:A解析:指针变量是用来存放地址值的,A正确;一个指针变量只能指向同类型的变量,B错误;指针变量的值可以进行加、减算术运算(与地址的偏移有关),但不能进行乘、除运算,C错误;指针变量最好初始化,否则可能成为野指针,带来安全隐患,D错误。10.若有定义:intp,a=10;p=&a;则以下语句中错误的是()A.p=20;B.p=NULL;C.p=a;D.a=p;答案:C解析:p是指针变量,a是整型变量,不能将整型变量a的值直接赋给指针变量p,C错误;p表示指针p所指向的变量,p=20;是合法的赋值操作;p=NULL;使指针指向空地址;a=p;是将指针p所指向的值赋给a,都是合法的。11.以下关于函数的叙述中,正确的是()A.函数的形参在函数被调用时才分配内存单元B.函数的返回值只能通过return语句返回C.函数的实参和形参可以是不同类型的变量D.函数可以没有形参,但不能没有返回值答案:A解析:函数的形参在函数被调用时才分配内存单元,A正确;函数的返回值也可以通过全局变量等方式间接返回(虽然不推荐这种方式),B错误;函数的实参和形参类型要匹配,C错误;函数可以没有形参,也可以没有返回值(返回值类型为void的函数),D错误。12.若有定义:structstudent{intnum;charname[20];floatscore;};structstudentstu;则以下对结构体成员的引用中,错误的是()A.stu.num=1001;B.strcpy(,"Tom");C.stu.score=90.5;D.student.num=1002;答案:D解析:student是结构体类型名,不是结构体变量名,不能直接用student.num这样的方式引用成员,D错误;stu是结构体变量,stu.num=1001;、strcpy(,"Tom");、stu.score=90.5;都是正确的成员引用和赋值操作。13.以下关于文件操作的叙述中,错误的是()A.打开文件时,必须指定文件的打开方式B.对文件进行读写操作后,必须关闭文件C.可以用fgetc函数从文件中读取一个字符D.可以用fprintf函数向文件中写入一个字符串答案:D解析:fprintf函数可以按照指定格式向文件中写入数据,但它不是专门用于写入字符串的函数,写入字符串可以用fputs等函数;打开文件时必须指定打开方式,读写操作后要关闭文件,fgetc函数可以从文件中读取一个字符。14.若有定义:inta[10];则以下对数组a的引用中,错误的是()A.a[0]=10;B.a[10]=20;C.a[5]=a[3]+a[2];D.for(inti=0;i<10;i++)a[i]=i;答案:B解析:数组a的下标范围是09,a[10]越界,B错误;其他选项都是对数组合法的引用和操作。15.以下程序段的输出结果是()intx=10;do{x-=2;}while(x>10);printf("%d\n",x);A.8B.10C.12D.0答案:A解析:dowhile循环先执行循环体,x-=2;后x变为8,然后判断条件x>10不成立,退出循环,输出x的值8。二、填空题(每题2分,共20分)1.C语言中,数据类型可分为基本数据类型、______、指针类型、空类型。答案:构造数据类型解析:C语言数据类型分为基本数据类型(如int、float等)、构造数据类型(如结构体、数组等)、指针类型、空类型。2.若有定义:floata=3.14;则表达式(int)a的值是______。答案:3解析:(int)a是强制类型转换,将float类型的a转换为int类型,直接舍去小数部分,所以值为3。3.若有定义:charch='A';则表达式ch+32的值是______(用字符表示)。答案:'a'解析:'A'的ASCII码值加上32得到'a'的ASCII码值,所以结果是'a'。4.若有定义:inta[5]={1,2,3,4,5};则数组元素a[2]的值是______。答案:3解析:数组下标从0开始,a[2]是数组的第3个元素,值为3。5.以下函数的功能是求两个整数的最大值,请填空。intmax(intx,inty){return(x>y)?______:______;}答案:x,y解析:条件表达式判断x>y,如果成立返回x,否则返回y。6.若有定义:intp,a=5;p=&a;则p的值是______。答案:5解析:p指向a,p表示p所指向的变量a,所以p的值是5。7.若有定义:struct{intnum;charname[20];}stu;则结构体变量stu所占的存储空间为______字节(假设int类型占4个字节,char类型占1个字节)。答案:24解析:num占4个字节,name数组占20个字节,总共4+20=24个字节。8.若要打开一个名为"test.txt"的文本文件进行写入操作,文件打开方式应为______。答案:"w"解析:"w"用于以写入方式打开文本文件,如果文件不存在则创建,如果存在则覆盖原有内容。9.以下程序段的功能是将数组a中的元素逆序存放,请填空。inta[10]={1,2,3,4,5,6,7,8,9,10};inti,j,t;for(i=0,j=9;i<j;i++,j--){t=a[i];a[i]=a[j];a[j]=______;}答案:t解析:通过中间变量t交换a[i]和a[j]的值。10.若有定义:inta[3][4];则数组a中元素的个数是______。答案:12解析:二维数组a有3行4列,元素个数为34=12。三、程序阅读题(每题5分,共20分)1.阅读以下程序,写出输出结果。```cinclude<stdio.h>intmain(){inti,sum=0;for(i=1;i<=10;i++){if(i%2==0)continue;sum+=i;}printf("%d\n",sum);return0;}```答案:25解析:循环从1到10,当i是偶数时(i%2==0)执行continue跳过本次循环体后续语句,即不参与求和;当i是奇数时(1、3、5、7、9)参与求和,1+3+5+7+9=25。2.阅读以下程序,写出输出结果。```cinclude<stdio.h>voidfun(inta){a=a2;}intmain(){intx=5;fun(x);printf("%d\n",x);return0;}```答案:5解析:函数fun中形参a是实参x的副本,在函数内部对a的修改不会影响实参x,所以x的值还是5。3.阅读以下程序,写出输出结果。```cinclude<stdio.h>intmain(){inta[3][3]={1,2,3,4,5,6,7,8,9};inti,j,sum=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if(i==j)sum+=a[i][j];}}printf("%d\n",sum);return0;}```答案:15解析:程序计算二维数组a的主对角线元素之和,主对角线元素为a[0][0]、a[1][1]、a[2][2],1+5+9=15。4.阅读以下程序,写出输出结果。```cinclude<stdio.h>voidswap(intp1,intp2){inttemp;temp=p1;p1=p2;p2=temp;}intmain(){inta=10,b=20;swap(&a,&b);printf("a=%d,b=%d\n",a,b);return0;}```答案:a=20,b=10解析:函数swap通过指针交换两个变量的值,实参传递的是a和b的地址,在函数内部修改了a和b的值。四、程序设计题(每题10分,共30分)1.编写一个函数,计算一个整数的各位数字之和。例如,输入123,输出6(1+2+3=6)。```cinclude<stdio.h>intsumOfDigits(intnum){intsum=0;while(num>0){sum+=num%10;num/=10;}returnsum;}intmain(){intnum;printf("请输入一个整数:");scanf("%d",&num);intresult=sumOfDigits(num);printf("各位数字之和为:%d\n",result);return0;}```2.编写一个程序,使用冒泡排序法对一个整数数组进行升序排序。```cinclude<stdio.h>voidbubbleSort(intarr[],intn){inti,j,temp;for(i=0;i<n1;i++){for(j=0;j<ni1;j++){if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}intmain(){intarr[]={5,3,8,6,2};intn=sizeof(arr)/sizeof(arr[0]);bubbleSort(arr,n);printf("排序后的数组:");for(inti=0;i<n;i++){printf("%d",arr[i]);}printf("\n");return0;}```3.编写一个程序,从文件中读取一组整数,计算它们的平均值,并将结果写入另一个文件。假设文件中每行存放一个整数。```cinclude<stdio.h>i

温馨提示

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

最新文档

评论

0/150

提交评论