C语言程序设计期末考试试题及其答案.docx
- 文档编号:6749108
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:59
- 大小:46.80KB
C语言程序设计期末考试试题及其答案.docx
《C语言程序设计期末考试试题及其答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末考试试题及其答案.docx(59页珍藏版)》请在冰豆网上搜索。
C语言程序设计期末考试试题及其答案
一、单项选择题(本大题共20题,每题2 分,共40分)
1、以下不是C语言的特点的是( )
A、C语言简洁、紧凑
B、能够编制出功能复杂的程序
C、C语言可以直接对硬件进行操作
D、C语言移植性好
2、以下不正确的C语言标识符是( )
A、ABCB、abcC、a_bcD、ab.c
3、一个C语言程序是由( )
A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成
4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( )
A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性
5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为 ( )
A、int B、float C、double D、不确定
6、在C语言中,char型数据在内存中的存储形式是( )
A、补码B、反码C、源码D、ASCII码
7、有如下程序,输入数据:
12345M678<cR>后(
#include
main(){
int x;
float y;
scanf("%3d%f",&x,&y);
}
A、12345 B、123 C、45 D、345
8、若有以下定义int a,b; float x,则不正确的赋值语句是( )
A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x);
9、以下程序的执行结果是( )
#include
{
int i=10,j=10;
printf("%d,%d\n",++i,j--);
}
A、11,10 B、9,10 C、11,9 D、10,9
10、巳知字母A的ASCII码是65,以下程序的执行结果是 ( )
#include
main()
{
char c1='A',c2='Y';
printf("%d,%d\n",c1,c2);
A、A,Y B、65,65C、65,90 D、65,89
11、下列运算符中优先级最高的是( )
A、<B、十C、% D、!
=
12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。
A、’x’&&’y’B、 x<=y C、 x||y+z&&y-z D、!
((x<y)&&!
z ||1)
13、判断char型变量cl是否为小写字母的正确表达式为( )
A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z)
C、 (‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’)
14、字符串"a"在内存中占据的字节个数为( )
A、0 B、1 C、2 D、3
15、下面有关for循环的正确描述是( )
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判定表达式
C、 在for循环中,不能用break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要用花括号括起来
16、下面程序的运行结果是( )
#include
main()
{int num=0;
while(num<=2)
{num++;
printf(“%d ,num);
}
}
A、 1 B、1 2 C、1 2 3 D、1 2 3 4
17、以下描述正确的是( )
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、 do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。
C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。
D、do-while循环中,根据情况可以省略while。
18、以下对一维整形数组a的正确说明是 ( )
A、int a(10);B、int n=10,a[n];C、int n;D、int a[10]; scanf(“%d”,&n);
int a[n];
19、以下对二维数组a的正确说明是 ( )
A、inta[3][]; B、float a(3,4); C、double a[1][4]; D、float a(3)(4);
20、若二维数组a有m列,则在a[j]前面的元素个数为 ( )
A、j*m+i B、i*m+j C、i*m+j-1 D、i*m+j+1
二、填空题(本大题共10空,每空2分,共20分)
1、结构化设计中的三种基本结构是___________________
2、在C语言中的实型变量分为两种类型,它们是_______ 和________
3、当a=5,b=4,c=2时,表达式a>b!
= c的值是_______
4、下列程序运行后的输出结果是_____________
#include
main()
{
int i,j;
for(i=4;i>=1;i--)
{printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}
5、若有定义:
int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是___________ a[2][1]得到的初值是________________
6、在C语言中,二维数组元素的内存中的存放顺序是______________
三、程序分析题(本大题共2题,每题4分,共8分,描述程序功能并写出程序执行结果)
1、#include
main()
{int a,s,n,count;
a=2;s=0;n=1;count=1;
while(count<=7) {n=n*a; s=s+n; ++count;}
printf(“s=%d”,s);
}
2、#include
main()
{int a=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for (i=0;i<3;i++)
for(j=0;j<3;j++)
if (i==j) sum=sum+a[j];
printf(“sum=%d\n”,sum);
}
四、编程题(本大题共4题,每题8分,共32分)
1、编写摄氏温度、华氏温度转换程序。
要求:
从键盘输入一个摄氏温度,屏
幕就显示对应的华氏温度,输出取两位小数。
转换公式:
F=(C+32)×9/5 。
2、试编程判断输入的正整数是否既是5又是7的正倍数。
若是,则输出yes;否则输出no。
3、判断数m是否为素数(只能被1和它本身整除的整数)?
4、对15个数进行排序,按从小到大的顺序输出。
《C语言程序设计》期末考试试卷(A卷)评分标准及标准答案
一、单项选择题(本大题共20题,每题2 分,共40分)
1、B 2、 D 3、B 4、B 5、C 6、D 7、B 8、 B 9、 A 10、D
11、C 12、D 13、D 14、C 15、D 16、C 17、C 18、D 19、C 20B
二、填空题(本大题共10空,每空2分,共20分)
1、顺序结构 分支结构 循环结构
2、单精度型(或:
float型) 双精度型(或;double型]
3、1
4、 *
* *
* * *
* * * *
5、0 6
6、按行主顺序存放
三、程序分析题(本大题共2题,每题4分,共8分)能正确表达出题目的含义、要求,即可得分,部分正确可按比例得分,否则不得分。
1、功能:
求S=0+2+4+8+16+32+64+128 和。
输出结果:
s=254
2、功能:
出矩形阵a的主对角线上的元素之和。
输出结果:
27
四、编程题(本大题共4题,每题8分,共32分)
能正确表达出题目的含义、要求,且格式正确,即可得满分,不要求形式完全
相同。
部分正确可按比例得分,否则不得分。
1、#include
main()
{ float c,f;
printf("input c:
"); …………………………………………….2分
scanf("%f",&c); …………………………………………….2分
f= (c+32.0)*9.0/5.0; …………………………………………….2分
printf("F=%.2f \n",f); …………………………………………….2分
}
2、#include
main()
{int x;
scanf("%d",&x); …………………………………………….2分
if(x%5==0&&x%7==0) …………………………………………….2分
printf("yes");…………………………………………….2分
else
printf("no");…………………………………………….2分
}
3、# include
# include
main()
{int m,i,k;
scanf("%d\n",&m);
k=sqrt(m); …………………………………………….2分
for(i=2;i<=k;i++)…………………………………………….2分
{if(m%i==0)
break; …………………………………………….2分
}
if(i>k) printf("m is a prime number!
\n");…………………………………………….2分
}
4、# include
main()
{int i,j,a[15],t;
printf("input 15 numbers:
\n");
for(i=0;i<15;i++)
scanf("%d",&a); …………………………………………….2分
for(j=0;j<15;j++)…………………………………………….2分
for(i=0;i<15-j;i++)…………………………………………….2分
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;} …………………………………………….2分
for(i=0;i<15;i++)
printf("%6d",a)
一.选择题
1.以下关于运算符优先顺序的描述中正确的是(C)。
A.关系运算符<算术运算符<赋值运算符<逻辑与运算符
B.逻辑运算符<关系运算符<算术运算符<赋值运算符
C.赋值运算符<逻辑与运算符<关系运算符<算术运算符
D.算术运算符<关系运算符<赋值运算符<逻辑与运算符
2.下列选项中合法的变量名是______C___
A.#defineB.intC.a594_3D. abs(x)
3.以下正确的描述是(A)。
A.break语句的作用是结束整个循环的执行
B.在C程序中,注释说明只能位于一条语句的后面
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
4.以下说法正确的是(C)
A.#define和printf都是C语句。
B.#define是C语句,而printf不是。
C.若程序中要调用数学函数,必须在文件开头输入语句#include“math.h”
D.#define和printf都不是C语句。
5.下面的函数定义正确的是____D__________
A)floatfun(floatx;floaty){returnx*y;}
B)floatfun(floatx,y){returnx*y;}
C)floatfun(x,y){intx,y;returnx*y;}
D)intfun(intx,inty){returnx*y;}
6.执行下面语句后的输出为(D)
inti=-1;
if(i<=0)printf(“****\n”)
elseprintf(“%%%%\n”)
A).****B).%%%%
C).%%%%cD).有语法错误,不能正确执行
7.以下程序的输出结果是(A)
voidmain()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}
A).17,21,11B).17,17,17
C).17,0x11,021D).17,21,1
8.以下不正确的叙述是(C)
A)#define是宏定义命令
B)宏定义只是做简单的置换,不做正确性检查
C)宏定义是C语句,必须在行末加分号
D)printf是C语句,但#define不是。
9.一个C语言程序是由(D)
A)一个主程序和若干子程序组成B)若干子程序组成
C)若干过程组成D)函数组成
10.C语言规定,在一个源程序中,main()函数的位置(C)。
A.必须在最开始B.必须在最后
C.可以任意D.必须在系统调用的库函数的后面
11.以下对二维数组a的正确说明是(C)。
A)inta[3][];B)floatfa(3,4);
C)chara[1][3];D)floata(3)(5);
12.若有说明:
inta[3][2]={10};则下面正确的叙述是(A)
A)只有元素a[0][0]可得到初值10
B)此说明语句不正确:
。
C)数组a中各元素都可得到初值,但其值不一定为0。
D)数组a中每个元素均可得到初值10
13.以下叙述不正确的是(C)。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是语句
D)只能在循环体内和switch语句体内使用break语句
14.为了避免在嵌套的条件语句If一else中产生二义性,C语言规定else子句总是与(B)配对。
A)缩排位置相同的ifB)其之前最近的未配对的if
C)之后最近的ifD)同一行上的if
15.能正确表示a和b同时为正或同时为负的逻辑表达式是(B)
A)(a>=0||b>=0)&&(a<0||b<0)
B)(a>=0&&b>=0)||(a<0&&b<0)
C)(a+b>0)&&(a+b<=0)
D)(a-b>0)&&(a-b<=0)
16.已知x=5,ch='A',y=0,则表达式(x>=y&&ch<'a'&&!
y)的值是(C)
A)0B)语法错C)1D)"假"
17.下列关于单目运算符++、--的叙述中正确的是(D)
A)它们的运算对象可以是任何变量和常量
B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D)它们的运算对象可以是char型变量、int型变量和float型变量
18.下面的程序(B)
voidmain()
{intx=3;
do{
printf(“%d\n”,x-=2);
}while(!
(--x));
}
A).输出的是1B).输出的是1和-2
C).输出的是3和0D).是死循环
19.如下程序:
voidmain()
{inta=6;printf(“%d\n”,(a+=3,2*a));}
执行后,输出结果是(D)
A)9B)6C)2D)18
20.若有以下说明和语句,请选出哪个是对C数组元素的正确引用(D)
intc[4][5],(*cp)[5];cp=c;
A).cp+1B).*(cp+3)C).*(cp+1)+3D).*(*cp+2)
21.下面程序的输出是(B)
main()
{intx=023;
printf("%d\n",--x);}
A).17B).18C).23D).24
22.执行下列程序的结果是(B)
main()
{floatx=1,y;y=++x*++x;printf(“%f\n”,y);}
A).9.000000B).6.000000
C).1.000000D).程序有错误
23.下面程序的输出是(A)
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
A).3B).4C).1D).2
24.执行下面程序中的输出语句后,a的值是(B)
main()
{inta;
printf("%d\n",(a=3*5,a*4,a+5));}
A).65B).20C).15D).10
25.下面程序的输出是(C)
main()
{inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
printf("%d%d%d\n",k,a,b);}
A).003B).012C).103D).112
26.设有如下的程序段:
charstr[]="Hello";char*ptr;ptr=str;
执行完上面的程序段后,*(ptr+5)的值为(B)
A).'0'B).'\0'C).不确定的值D).'0'的地址
27.在宏定义#definePI3.14159中,用宏名PI代替一个(C)
A).单精度数B).双精度数C).常量D).字符串
28.若i是整型变量,pb是基本型为整型的指针变量,则正确的赋值表达式是(A)
A).pb=&iB).pb=iC).*pb=&iD).*pb=*i
29.有以下程序段
intm=0,n=0;charc=’d’;
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:
6D6<回车>,则输出结果是(C)
A)0,d,6B)6,d,6C)6,D,6D)6,D,0
30.printf()函数中用到格式符%-7s,其中数字7表示输出的字符串占用7列。
如果字符串长度小于7,则输出按方式(A)
A)从左起输出该字串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
31.以下能正确地定义整型变量a,b和c并为其赋初值3的语句是(A)
A)inta=3,b=3,c=3;B)inta,b,c=3;
C)a=3,b=3,c=3;D)a=b=c=3;
32.以下程序的输出结果是(D)
voidmain()
{intx=6,y=6,i;
for(i=2;x>4;y=++i)
printf("%d,%d",x--,y);
}
A)5,55,3B)6,62,3C)6,55,2D)6,65,3
33.以下程序的输出结果是(B)
voidmain()
{intw=4;
intfun(intk);
fun(w);
printf("\n");
}
fun(intk)
{if(k>0)fun(k-1);
printf("%d",k);}
A)4321B)01234
C)1234D)43210
34.下面程序的输出是(B)
main()
{intx=023;
printf("%d\n",--x);}
A).17B).18C).23D).24
35.以下程序的输出结果是(C)
main()
{charch[3][4]={"123","456","78"},*p[3];inti;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);
}
A).123456780B).123456780
C).12345678D).147
36.下面程序的输出结果为(B)
char*alpha[6]={"ABCD","EFGH","IJKL",
"MNOP","QRST","UVWX"};
char**p;
voidmain()
{inti;p=alpha;
for(i=0;i<4;i++)
printf("%c",(*p)[i]);
printf("\n");
}
A).EIMCB).ABCDC).EFGHD).AEIM
37.根据下面的定义,能打印出字母M的语句是(D)
structperson{charname[9];intage;};
structpersonclass[10]={"John",17,"Paul",19,
"Mary",18,"Adam",16}
A).printf("%c\n",class[3].name);
B).printf("%c\n",class[3].name[1]);
C).printf("%c\n",class[2].name[1]);
D).printf("%c\n",class[2].name[0]);
38.有以下程序
voidmain()
{intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i];i++;}
printf("%d\n",k);
}
执行后输出结果是(D)
A)58B)56C)45D)24
39.以下程序的输出结果是(A)
voidmain()
{inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p;
p=&x[1][1];
for(i=0;i<6;i+=3)
printf("%d",p[i]);
}
A)5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 期末考试 试题 及其 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)