重庆文理学院C语言程序设计期末试题及答案_第1页
重庆文理学院C语言程序设计期末试题及答案_第2页
重庆文理学院C语言程序设计期末试题及答案_第3页
重庆文理学院C语言程序设计期末试题及答案_第4页
重庆文理学院C语言程序设计期末试题及答案_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

2/2C语言程序设计期末试题(总分100分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、下列字符中,ascii码值最小的是________。 A、a B、A C、x D、Y【答案】B【解析】a、A、x、Y对应的ASCII码值分别是0001110、0001100、1000111、1001101,故正确答案为B。2、inta=1,b=2,c=3;

if(a>c)b=a;

a=c;

c=b;

则c的值为________。 A、1 B、2 C、3 D、不一定【答案】B3、c语言的基本数据类型包括________。 A、字符型和数值型 B、字符型和逻辑型 C、整型和实型 D、指针型和数据型【答案】A4、假定所有变量均已正确定义,下列程序段运行后x的值是()。

k1=1;

k2=2;

k3=3;

x=15;

if(!k1)x--;

elseif(k2)x=4;

elsex=3; A、14 B、4 C、15 D、3【答案】B5、若i、j已定义成int型,则下列程序段中内循环体的总执行次数是________。

for(i=6;i>0;i--)for(j=0;j<4;j++)

{

} A、20 B、24 C、25 D、30【答案】B6、若各选项中所有变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是______。 A、main(){……x=fun(2,10);……}floatfun(intA,intb){……} B、floatfun(intA,intb){……}

main()

{……x=fun(i,j);……} C、floatfun(intint);main()

{……x=fun(2,10);……}floatfun(intA,intb){……} D、main()

{

floatfun(inti,intj);……x=fun(i,j);……}floatfun(intA,intb){……}【答案】A7、以下不能正确计算代数式值的c语言表达式是________。 A、1/3*sin(1/2)*sin(1/2) B、sin(0.5)*sin(0.5)/3 C、pow(sin(0.5),2)/3 D、1/3.0*pow(sin(1.0/2),2)【答案】A8、有如下定义语句:inta[]={1,2,3,4,5},则对语句int*p=a;正确的描述是________。 A、语句int*p=a;定义不正确 B、语句int*p=a;初始化变量p,使其指向数组对象a的第一个元素 C、语句int*p=a;是把a[0]的值赋给变量p D、语句int*p=a;是把a[1]的值赋给变量p【答案】B9、以下关于c语言的叙述中正确的是________。 A、C语言中的注释不可以夹在变量名或关键字的中间 B、C语言中的变量可以再使用之前的任何位置进行定义 C、在C语言算术的书写中,运算符两侧的运算数类型必须一致 D、C语言的数值常量中夹带空格不影响常量值的正确表示【答案】B【解析】C语言中的注释”/**/”或者”//”可以放在程序中的任何位置,但是不可以加在变量名或者关键字中间,会导致该变量名和关键字不被C语言识别,选项A)正确;C语言中变量的定义必须在变量使用之前,而且定义时该变量的作用域一定要能涵盖该变量的使用,所以定义的位置不是任意的,选项B)错误;算术运算符两侧的运算数类型可以不一致,如加减乘除运算符都没有对运算数类型进行限制,如果不一致,系统会对其进行相应的数据类型转换,选项C)错误;空格一般作为分隔符使用,数值常量中夹带空格就会把该数值常量分作两部分:123和123是不一样的,选项D)错误;答案选A)。知识模块:数据类型、运算符与表达式10、以下能正确定义字符串的语句是________。 A、charstr[]={′\064′}; B、charstr="kx43"; C、charstr="; D、charstr[]="\0";【答案】D11、若有以下语句,则正确的描述是chara[]="toyou";

charb[]={′t′,′o′,′y′,′o′,′u′}; A、a数组和b数组的长度相同 B、a数组长度小于b数组长度 C、a数组长度大于b数组长度 D、a数组等价于b数组【答案】C12、以下正确的函数头定义形式是________。 A、doublefun(intx,inty) B、doublefun(intx;inty) C、doublefun(intx,inty); D、doublefun(intx,y);【答案】A【解析】函数的形式参数之间以逗号“,”隔开,且每个变量均需说明其数据类型,圆括号后面不能有分号。只有选项A)符合要求。13、已知大写字母a的ascii码是65,小写字母a的ascii码是97,以下不能将变量c中的大写字母转换为对应小写字母的语句是______。 A、c=(c-'A')%26+'a' B、c=c+32 C、c=c-'A'+'a' D、c=('A'+c)%26-'a'【答案】D【解析】由97-65=32可知大写字母对应的小写字母之间相差32,所以将大写字母加上32就得到小写字母,所以选项B和C是正确的。选项A中(c-'A')%26可以求出变量c中的字母与字母A相差几位,那么小写字母a的ASCII码向后移动相差的位数就是对应的小写字母,所以选项A也是正确的。14、若有定义"floata=25,b,*p=&b;",则下列对赋值语句"*p=a;"和"p=&a;"的正确解释为()。 A、两个语句都是将变量a的值赋予变量P B、*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P C、*p=a是将变量a的值赋予变量b,而&a是使P指向变量a D、两个语句都是使P指向变量a【答案】C15、下面程序的输出结果为________。

main()

{

inta,b;

b=(a=3*5,a*4,a*5);

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

} A、60 B、75 C、65 D、无确定值【答案】B16、下面程序的运行结果是________。

main()

{

inti,j,a=0;

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

{

for(j=0;j<4;j++)

{

if(j%2)break;

a++;

}

a++;

}

printf("%d\n",a);

} A、4 B、5 C、6 D、7【答案】A17、以下对结构体类型变量的定义中,不正确的是________。 A、typedefstructaa{

intn;

floatm;

}AA;

AAtdl; B、#defineAAstructaaAA{

intn;

floatm;

}tdl; C、struct{

intn;

floatm;

}aa;

structaatdl; D、struct{

intn;

floatm,

}tdl;【答案】C18、有以下程序

#include<stdio.h>

main(){

ints,t,a=10;

doubleb=6;

s=sizeof(a);

t=sizeof(b);

printf("%d,%d\n",s,t);

}在vc6平台上编译运行,程序运行后的输出结果是________。 A、2,4 B、4,4 C、4,8 D、10,6【答案】C19、若有定义:intaa[8];则以下表达式中不能代表数组元aa[1]的地址的是________。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1【答案】C20、有以下程序

structstu

{

charname[10];

intnum;

intscore;

}

;

main()

{

structstus[5]={{"yangsan",20041,703},{"lisiguo",20042,580,{"wangyin",20043,680},{"sundan",20044,550},{"penghua",20045,537}},*p[5],*t;

inti,j;

for(i=0;i<5;i++)p[i]=&s[i];

for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->score>p[j]->score)

{

t=p[i];

p[i]=p[j];

p[j]=t;

}

printf("5d%d\n",s[1].score,p[1]->score);

}

执行后输出结果是________。 A、550550 B、680680 C、580550 D、580680【答案】C二、判断题(每小题2分,共20分)()1、关于c语言c语言是结构化程序设计语言。【答案】正确()2、一个变量在内存中占据一定的存储单元【答案】正确()3、在if语句中,else前一个语句可不加";".【答案】错误()4、循环语句不能嵌套使用。【答案】错误()5、c语言约定'\0'计入字符串的长度。【答案】错误()6、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内容:#include<graphics.h>或#include"graphics.h"。【答案】错误()7、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。【答案】正确()8、函数形参的存储单元是动态分配的。【答案】正确()9、以“r”方式打开一个文件时,文件指针指向文件首。【答案】正确()10、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件。【答案】正确三、编程题(每小题分,共40分)1、从键盘输入n和a的值,计算a+aa+aaa+...+aa...a(n个a)的值。(本题10分)【答案】#include

voidmain()

{

inti,a,n;

longintsum=0,st=0;

printf("请输a和n:");

scanf("%d%d",&a,&n);

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

{

st=st+a;

sum=sum+st;

a=a*10;

}

printf("%ld\n",sum);

}2、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

char*proc(char(*a)[81],intnum)

{

}

voidmain()

{

charss[l0][81],*max;

intn,i=0;

printf("输入若干个字符串:");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")==0)

{

i++;

gets(ssei]);

puts(ss[i]);

}

n=i;

max=proe(ss,n);

printf("\nmax=%s\n",max);

}(本题14分)【答案】char*proc(char(*a)[81],intm)

{

char*max;

inti=0:max=a[0]:for(i=0;i<m;i++)if(strlen(max)<strlen(a[i]))//找出最长的字符串max=a[i];

returnmax;

//返回最长字符串的地址

}3、题⽬描述

输⼊⼀组学⽣的成绩,按照成绩降序输出成绩表。如有相同成绩,较⼩的学号排位靠前

输⼊

输⼊格式为每⾏两个数值,学号N为10位数字,成绩S取值为整数(0≤S≤100)读取输⼊直到输⼊结束(数据总量不超过50⾏,且不会出现重复的学号)

输出

输出格式为每⾏两个数值,学号N之后有⼀个空格,成绩值的输出宽度占3个位置

样例输⼊

20####040578

20####042680

20####040261

20####037795

20####042780

样例输出

20####037795

20####042680

20####042780

20####040578

20####040261

(本题16分)【答案】#include<stdio.h>

#include<string.h>

constintN=50+5;

typedefstructstudent{

charno[15];

intscore;

}STU;

voidswap(STU*,STU*);

voidbubbleSort(STU[],int);

intmain(){

STUstu[N];

intn=0;

while(scanf("%s%d",stu[n].no,&stu[n].score)!=EOF)

n++;

bubbleSort(

温馨提示

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

评论

0/150

提交评论