




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言专升本测试卷(一)
(总分100分,考试时长90分钟)
一、单项选择题(每小题2分,共40分)
1、若程序中有宏定义行:#defineN100,则以下叙述中正确的是。
A、宏定义行中定义了标识符N的值为整数100
B、在编译程序对C源程序进行预处理时用100替换标识符N
C、对C源程序进行编译时用100替换标识符N
D、在运行时用100替换标识符N
2、有如下程序段int*p,a=l,b=2;p=&b;a=*p+a;执行该程序段后,a的值为
A、2
B、3
C、4
D、编译出错
3、下列赋值语句错误的是o
A、A
B、i==0;
C、i=i+l:
D、i+=l:
4、有以下程序
main()
{
inti;
for(i=0;i<3;i++)
switch(i)
(
case1:printfi);
case2:printfi);
default:printfi);
)
)
执行后输出的结果是o
A、011122
B、012
C、012020
D、120
5、可以作为自定义标识符的是o
A、2x
B、break
C、m-n
D、m_n
6、若各选项中所有变量已正确定义,函数fun中通过return语句返回一个函数
值,以下选项中错误的程序是o
A、main(){...x=fun(2,10);...}floatfun(intA,int
b){……}
B、floatfun(intA,intb){...}
mainO
{...x=fun(i,j);...}
C、floatfun(intint);main()
{...x=fun(2,10);...}floatfun(intA,intb){....}
D>mainO
(
floatfun(inti,intj);...x=fun(i,j);...}floatfun(intA,int
b){……}
7、能正确表示逻辑关系〃a>=10或aV=0〃的c语言表达式是。
A、a>=10ora=10
B、a>=01a<=10
C、a>=10&&a<=0
D、a>=10||a<=0
8、已知3个字符为:a、z和8,按它们的ascii码值升序排序,结果是。
A、8,a,Z
B、a,8,Z
C、a,Z,8
D、8,Z,a
9、程序必须在有限的步骤、有限的时间内执行完毕,指的是算法的()特点
A、确定性
B、有穷性
C、可行性
D、输入
10、下面关于编译预处理命令,正确的是O
A、#definecharCHAR
B、#DefineE0.0000034
C、##defineFALSE0
D、#defineDIM26
Ik设inta[10],*p=a;数组元素a[4]的正确引用是。
A、*(p+4)
B、p+4
C、*p+4
D、a+4
12、关于strcmpO函数,下列描述中错误的是。
A、strcmp。函数用于比较两个字符串的内容是否相等
B、如果两个字符串的内容相同,strcmpO函数返回0
C、strcmp。函数是可变参数的函数
D、strcmpO函数只能接收字符指针作为参数,并不接收单个字符
13、对于存储同样一组数据元素而言,o
A、顺序结构比链接结构多占存储空间
B、顺序结构与链接结构相比,更有利于对元素的插入、删除运算
C、顺序结构比链接结构易于扩充空间
D、顺序结构占用整块空间而链接结构不要求整块空间
14、下列说法正确的是o
A、main函数必须放在C程序的最后面
B、main函数必须放在C程序的最前面
C、main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头
执行的
D、main函数可以放在C程序的中间部分,但在执行C程序时是从main函
数开始的
15、下列程序的输出结果是-
char*pl="abcd”,*p2="abcd",str[50]="xyz";
strcpy(str+2,strcat(pl+2,p2+l));
printf("%s”,str);
A、xyabcAB
B、abcABz
C、ABabcz
D、xycdBCD
16、下面程序段的输出结果是.
x=3;
do
y=x";
if(!y)
(
printf("*");
continue;
)
printf("#");
)
while(x=2);
A、##
B、##*
C、死循环
D、输出错误信息
17、设有以下说明语句:
typedefstructstu
(
inta;
floatb;
}stutype;
则下面叙述中错误的是o
A、struct是结构类型的关键字
B、structstu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
18、下面程序的输出是
#include<stdio.h>
voidmain()
(
intk=ll;
printf(zzk=%d,k=%o,k=%x\n”,k,k,k);
)
A、k=ll,k=12,k=ll
B、k=ll,k=13,k=13
C、k=ll,k=013,k=0xb
D、k=ll,k=13,k=b
19、下列关于字符串的说法中错误的是o
A、在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符
'\0'作为字符串结束标志
B、'\0'作为标志占用存储空间,计入串的实际长度
C、在表示字符串常量的时候不需要人为在其末尾加入''0'
D、在C语言中,字符串常量隐含处理成以'\0'结尾
20、有以下程序
Sinclude<studio.h>
ttinclude<string.h>
structa
{
inta;
charb[10];
doublec;
);
voidf(structat);
mainO
(
structaa={1001,HzhangdaM,1098.0};
f(a);
pringt(n%d,%s,%6.lf\nn,a.a,a.b,a.c);
)
voidf(structat)
(
t.a=1002;
strcpy(t.b,"changrong");
t.c=1202.0;
)
程序运行后的输出结果是o
A^1001,ZhangDa,1098.0
B、1002,ChangRong,1202.0
C、1001,ChangRong,1098.0
D、1002,ZhangDa,1202.0
二、判断题(每小题2分,共20分)
()1、若有定义intx=1,y=2;则表达式x==y是将y的值赋值给x。()
()2、函数若无返回值,则它一定无形参。
()3、函数的实参传递到形参有两种方式:值传递和地址传递。
()4、在循环中使用break语句或者continue语句,其作用是相同的。
()5、字符串常量是由一对双引号括起来的字符序列。
()6、当多个函数发生多层嵌套调用时,最后被调用的函数却最先结束。
()7、用字符串常量给数组赋初值时,如果提供的字符个数大于数组长度,则
系统报错。
()8、c语言中sizeof是函数,而不是运算符。
()9、符号"a"和'a'的区别是"a〃是字符串常量,占2个字节;而‘a'是
字符常量,占1个字节。()
()10、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下
内容:#include<graphics.h>或#include'graphics.h"。
三、编程题(每小题分,共40分)
1、编写程序:从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+.......(共n
项)的和。例a=2,n=4,则sum=2+22+222+2222。(本题10分)
2、编写程序:计算sum=lT/3+l/5T/7+…+1/19(本题14分)
3、统计结构体数组中性别(sex)为'M'的变量的个数。
要求:
①数组元素依次赋初值为:{1,"Andy",'M'}、{2,"Mike",'F'}、
{3,"Rose",'M'}。
②结构体定义如下:structStudent{intnum;charname[30];charsex;};
(本题16分)
参考答案
一、单项选择题
1、B
2、B
3、B
4、A
【解析】当执行switch语句时,首先计算紧跟其后一对括号中的值,然后在语
句体内寻找与该值吻合的case标号。若相等,则执行该标号后开始的各语句,
包括在其后的所有case和default后的语句,直到switch语句体结束。
5、D
【解析】主要考查的知识点为自定义标识符。
[要点透析]A项以数字开头,B项为保留字,C项含有非字母、数字、下划线
的字符,只有D项是正确的。
6、A
7、D
【解析】在C语言中,逻辑运算符有与&&、或||、非!,关系运算符有大于〉、
小于V、大于等于>=、小于等于<=、等于==,根据逻辑关系很容易看出,符
合条件的选项为D。
8、D
【解析】在ASCH码袁中,根据码值由小到大的排列顺序是:控制符、数字
符、大写英文字母、小写英文字母。
9、B
10、D
【解析】无参宏定义的一般格式:#define标识符语言符号字符串,其
中:“define”为宏定义命令;"标识符为所定义的宏名,通常用大写字母表示,
以便于与变量区别;“语言符号字符串”可以是常数、表达式、格式串(格式串
是用双引号括起来的字符串)等,选项ABC错误,选项D正确;本题答案为
Do
IkA
12、C
【解析】strcmp。函数的参数是两个字符串
13、D
【解析】顺序结构的存储空间就是存放数据信息的空间,不需要附加空间,而
链接结构节点(即元素)的存储空间包括两部分:一部分存放数据信息,一部分
存放指针信息,因此A选项是错误的:在顺序结构中,要插入、删除元素需移
动其他元素;而在链接结构中,插入、删除元素不需要移动其他元素。因此,
选择项B是错误的;顺序结构中,存储空间必须事先定义,在运算过程中难以
扩充:链接结构中,元素之间通过指针链接,空间易于扩充。因此选择项C也
是错误的;顺序结构中,元素之间的关系通过存储单元的邻接关系来表示,其
存储空间必须占用整块空间:链接结构中,节点之间的关系通过指针来表示,
不要求整块空间。因此,D是正确答案。
14、D
【解析】每个C程序有且只有一个主函数(main),且程序必须从main()函数开
始执行。别外main()函数可以放在程序中的任意位置。
15、D
16、C
17、C
18、D
19、B
【解析】'\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字
符型指针赋值时,赋给这个指针的是这个字符串的地址。
20、A
二、判断题
1、错误
2、错误
3、正确
4、错误
5、正确
6、正确
7、正确
8、错误
9、正确
10、错误
三、编程题
1、ttinclude"stdio.h〃
main()
(
inta,ncount=l,sn=O,tn=O;
scanf(,,%d%d〃,&a,&n);
while(count<=n)
(
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
printf(〃%d〃,sn);
)
2、#include<stdio.h>
mainO
(
inti;
floatsum=0,k=-l;
for(i=l;i<=19;i=i+2)
(
sum=sum+L0/i*k;
k=-k;
)
printf(zz%f,z,sum);
getchO;
)
3、#include<stdio.h>
structStudent{
intnum;
charname[30];
charsex;
);
intFun(structStudent*s,intn)
{
intnum=0;
inti;
for(i=0;i<n;i++)
(
if(s[i].sex=='M')
(
num++;
)
)
)
intmain()
{
structStudents[3]={
1,"Andy",'M',2,"Mike",'F',3,"Rose",'M'
};
printf(〃%d〃,Fun(s,3));
return0;
C语言专升本测试卷(二)
(总分100分,考试时长90分钟)
一、单项选择题(每小题2分,共40分)
1、下面程序段的功能是
#include<stdio.h>
main()
(
charsi;
sl=putc(getc(stdin),stdout);
)
A、从键盘输入一个字符给字符变量si
B、从键盘输入一个字符,然后再输出到屏幕
C、从键盘输入一个字符,然后在输出到屏幕的同时赋给变量si
D、在屏幕上输出stdout的值
2、在c中,合法的字符常量是。
A、'084'
B、'\x43'
C、'ah'
D、“0”
3、现有定义inta;doubleb;floatc;chark;则表达式a/b+c-k值的类型
为
A、int
B、double
C、float
D、char
4、设a、b、c、d、m、n均为int型变量,且a=5、b=6>c=7、d=8、m=2、n=3则
逻辑表达式(>11=2>13)&&(11=<:>€1)运算后,n的值为o
A、0
B、1
C、2
D、3
5、以下程序中,while循环的循环次数是
main()
{
inti=0;
while(i<10)
if(i<l)continue;
if(i==5)break;
i++;
)
A、1
B、10
C、6
D、死循环,不能确定次数
6、有以下程序:fun(intx,inty)
(
staticintm=0,i=2;
i+=m+l;
m=i+x+y;
returnm;
)
main()
(
intj=l,m=l,k;
k=fun(j,m);
printf("%d,"k);
k=fun(j,m);
printf("%d\n",k);
)
执行后的输出结果是o
A、5,5
B、5,11
C、11,11
D、11,5
7、下列选项中不会引起二义性的宏定义是o
A^#defineS(x)X*x
B、#defineS(x)(x)*(x)
C、#defineS(x)(x*x)
D、#defineS(x)((x)*(x))
8、有数组:chara[]="thisisanegg";。请问该数组到底占了几个字节?
A、11
B、12
C、14
D、15
9、以下选项中,当x为大于1的奇数时,值为0的表达式是o
A、x%2==l
B、x/2
C、x%2!=0
D、x%2==0
10、执行下列程序时输入:123〈空格>456〈空格>789V回车〉,输出结果是
main()
(
chars[100];
intc,i;
scanf("枇",&c);
scanf&i);
scanfs);
printf(/z%c,%d,%s\n,z,c,i,s);
)
A、1,456,789
B、1,23,456
C、1,23,456,789
D、123,456,789
11、以下叙述中正确的是o
A、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组
B、charca[3][4]={"A〃,〃BB","CCC"};是不合语法的
C、charca[][5]={"A〃,"BB","CCC"};是不合语法的
D、char*ca[3]={"A",〃BB〃,“CCC"};是不合语法的
12、以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。
#include<string.h>
voidf(charp[][10],intn)
(
chart[20];
inti,j;
for(i=0;i<n-l;i++)
for(j=i+l;j<n;j++)if(strcmp(p[i],p[j])<0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
)
)
main()
(
charp[][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
)
程序运行后的输出结果是。
A、6
B、4
C、5
D、3
13、运行以下程序后,如果从键盘上输入china
A、2,0
B、5,0
C、5,5
D、2,5
14、有如下程序段int*p,a=6,b=2;p=&a;a=*p+b;执行该程序段后,a的值为
A、6
B、8
C、7
D、编译出错
15、有以下程序:
#include<stdio.h>
main()
(
charcl=,1',c2=,2";
cl=getchar();
c2=getchar();
putchar(cl);
putchar(c2);
)
当程序运行时输入aV回车》后,下列叙述中正确的是—
A、变量cl被赋予字符a,c2被赋予回车符
B、程序将等待用户输入第2个字符
C、变量cl被赋予字符a,c2中仍是原有字符2
D、变量cl被赋予字符a,c2中将无确定值
16、下面程序段的运行结果是.
for(i=l;i<=5;)
printfi);
i++;
A、12345
B、1234
C、15
D、无限循环
17、若有以下说明语句:
structdate
(
intyear;
intmonth;
intday;
}brithday;
则下面的叙述不正确的是.
A、struct是声明结构体类型时用的关键字
B、structdate是用户定义的结构体类型名
C、brithday是用户定义的结构体类型名
D、year,day都是结构体成员名
18、下列程序段输出结果是o
a=l;
b=10;
do
(
b-=a:
a++;
)
while(b—<0);
printf(〃“a,b=%d,%d〃〃,a,b);
A^a,b=7,5
B、a,b=2,8
C、a,b—2,2
D、a,b=8,2
19、下列对字符数组进行初始化的语句中,是正确的。
A、chars1[]="abed”;
B>chars2[3]=”xyz”;
C、chars3口[3]={'a','x','y'}
D、chars3□[3]={"xyz","mnp"};
20、若有定义:
structkeyword
{
charkey[20];
intid;
)
kw[]={"void",1,"char",2,"int”,3,"float”,4,"double”,5};
则printf("%c,%d\n”,kw[3].key[0],kw[3].id);
语句的输出结果为o
A、i3
B>n3
C,f4
D、14
二、判断题(每小题2分,共20分)
()1、如果在共用体中有若干个不同类型的成员,在每一瞬间只有一个成员起
作用,实际上是最后一个存放成员起作用。
()2、在同一种类型中,变量值越大,它所占内存的字节数越多。()
()3、指针数组的每一个元素都是指针变量,且都指向相同的数据类型。
()4^在循环过程中,使用break语句和continue语句的作用是一样的
()5、字符串可以存储在字符数组中,也可以存储在字符型指针变量中
()6、函数定义在先、调用在后时,vc++允许省略函数声明。
()7、如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的
下一个元素。
()8、在标准c语言中,所有函数在调用之前都要进行声明。
()9、在标准c语言中,函数的定义和调用一样都是不可以嵌套的。
()10、若不希望其他源文件引用本文件中定义的全局变量,可在定义全局变
量时加上statico
三、编程题(每小题分,共40分)
1、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。(本题10分)
2、编写程序输入三位数(100—999),然后按数字逆序输出。(例:输入
123/,输出321)0(本题14分)
3、题目描述
完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,
Zhang和Fun。使用结构体存储每一个候选人的名字和得票数。记录每一张选票
的得票人名,输出每个候选人最终的得票数。结构体可以定义成如下的格式:
structperson{
charname[20];
intcount;
Header[3]={“Li”,0,“Zhang”,0,“Fun”,0};
输入
第一行有一个整数n,表示以下有n张选票信息将会输入。保证n不大于100。
以后的n行中,每一行包含一个人名,为选票的得票人。保证每一个人名都是
Li,Zhang和Fun中的某一个。
输出
有三行,分别为Li,Zhang和Fun每人的得票数。格式为首先输出人名,其后
输出一个冒号,最后输出候选人的得票数。
请注意行尾输出换行。
样例输入
10
Li
Li
Fun
Zhang
Zhang
Fun
Li
Fun
Zhang
Li
样例输出
Li:4
Zhang:3
Fun:3(本题16分)
参考答案
一、单项选择题
1、C
2、B
3、B
【解析】双目运算中两边运算量类型转换规律:在a/b的时候,a、b的类型
不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。
转化规则为char,short->int->unsigned->1ong->double*-floato
4、D
5、D
6、B
【解析】本题的fun()函数中定义的变量m和i是静态局部变量,第1次调用
fun()函数时m=0、i=2,执行i+=m+l后,i的值变为3,再执行m=i+x+y后,
m的值变为5,所以第1次输出的整数是5。第2次调用fun()函数时m=5、
i=3,执行i+初+1,i变为9,再执行m=i+x+y,口变为11,所以第2次输出的
整数是11。故本题应该选择B。
7、D
8、D
9、D
【解析】因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选
项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会
等于0;选项D)中表达式的结果为假,即等于0。
10、B
【解析】第一个输入语句只接收一个字符'1';第二个输入语句接收一个整数
23,遇到空格停止;第三个输入语句接收一个字符串〃456〃,遇到空格停止。
11、A
【解析】本题考查字符串数组的相关知识,选项BCD都是合语法的。
12、C
13、C
【解析】输入“c”时,运行default和case'0'的代码;输入“h”时,运行
case'h'、default和case'0"的代码;输入"i"时,运行default和case
'0'的代码;输入“n”时,运行default和case'0'的代码;输入“a”时,
运行case'a'、case'h'、default和case'O'的代码。
14、B
15、A
16、D
17、C
18、B
19、A
【解析】BCD选项都不合字符数组的定义。
20、C
【解析】kw[3].Key[0]是第4个元素中key数组的第1个字符即f;
kw[3].ID是第4个元素中成员ID值;
二、判断题
1、正确
2、错误
3、正确
4、错误
5、错误
6、正确
7、正确
8、错误
9、错误
10、正确
三、编程题
1、#include
voidmain()
(
inti,sum=0;
for(i=l;i<=99;i=i+2)
sum=sum+i*(i+l)*(i+2);
printf("%d\n",sum);
)
2、#include<stdio.h>
voidmain()
{intn,ge,shi,bai;
printf(〃请输入一个三位正整数:”);
scanf&n);
if((n<100)||(n>999))
printf(〃输入数据有误!\n");
else
{ge=n%10;
shi=n/10%10;
bai=n/100;
printf("此数的逆序输出结果为:%d%d%d\n/z,ge,shi,bai);
)
3、#include<stdio.h>
#include<string.h>
structperson{
charname[20];
intcount;
}leader[3]={"Li",0,"Zhang”,0,"Fun〃,0);
intmainO{
inti,j,n;
charleader_name[20];
scanf(〃%d〃,&n);
for(i=1;i<=n;i++){
scanf(,z%s,z,leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;
}
for(i=0;i<3;i++)
printf(〃%s:%d\n〃,leader[i].name,leader[i].count);
returnO;
C语言专升本测试卷(三)
(总分100分,考试时长90分钟)
一、单项选择题(每小题2分,共40分)
1、下列选项中,不能正确定义c语言整型常量是?
A、32L
B、51000
C、-1.2
D、567
2、表示关系xV=yV=z的c语言表达式为o
A、(x<=y)&&(y<=z)
B、(x<=y)and(y<=z)
C、(x<=y<=z)
D、(x<=y)&(y<=z)
3、有如下定义类型语句,若从键盘输入数据,正确的输入语句是oint
x;chary;charz[20];
A、scanf("%d%c%c”,&x,&y,&z);
B、scanf&x,&y,&z);
C、scanf("%d%c%c”,&x,&y,z);
D、scanf("%d%c%s”,&x,&y,z);
4、if语句的基本形式为:if(表达式)语句,其中"表达式"-
A、可以是任意合法的表达式
B、必须是逻辑表达式
C、必须是逻辑表达式或关系表达式
D、必须是关系表达式
5、若有程序段:x=99;while(x-2)x一;则循环结束时,x=。
A、99
B、2
C、1
D、0
6、以下函数调用语句中实参的个数为oexce((vl,v2),(v3,v4,v5),v6);
A、3
B、4
C、5
D、6
7、以下各标识符中,合法的是。
A、A&M
B、_sum
C、float
D、2x1
8、有字符数组a[80]和b[80],则正确的输出语句是o
A、puts(a,b):
B,printfa[],b[]);
C、putchar(a,b);
D、puts(a),puts(b);
9、以下标识符中,不能作为合法的c用户定义标识符的是0
A、For
B、printf
C、WORD
D、sizeof
10、下列合法的字符型常量是o
A、'\xl3'
B、'\081'
C、’65'
D、"\n\
11、设pl和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不
能正确执行的语句是o
A、k=*pl+*p2
B、p2=k;
C、pl=p2;
D、k=*pl*(*p2);
12、关于函数返回值类型和返回值表达式的类型的描述中,错误的是o
A、函数返回值类型决定了返回值表达式的类型
B、函数返回值的类型是在定义函数时确定的,在函数调用时不能改变
C、函数返回值的类型就是返回值表达式的类型
D、函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成
函数返回值类型
13、若以下选项中的变量已正确定义,则正确的赋值语句是o
A、xl=26.8%3;
B、l+2=x2;
C>x3=0xl2;
D、x4=1+2=3;
14、定义如下变量和数组:inti,x[3]定义{1,2,3,4,5,6,7,8,9
};则下面语句for(i=0;i<3;i++)printfx[i][2-i]);的输出结果是
A、159
B、147
C、357
D,369
15、有以下程序
main()
(
inta=l,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
//短路问题printf(线d,%d\n”,k,m);
)
程序运行后的输出结果是。
A、0,0
B、0,1
C、1,0
D、1,1
16、有如下程序
main()
{
intx=3;
do
(
printfx一);
)
while(!x);
)
该程序的执行结果是o
A、321
B、3
C、不输出任何内容
D、陷入死循环
17、定义共用体的关键字是0
A、union
B、enum
C、struct
D、typedef
18、下述程序段的运行结果是。
main()
(
staticinta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
intb[3][2],i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
(
b[i][j]=a[j][i]+a[i][j];
printfC'%5d'',b[i][j]);
)
printf(''\n'');
)
A、247
B、2610
C、181410
D、1823
19、若定义staticinta[2][2]={1,2,3,4},则a数组的各数组元素分别为
A、a[0][0]=Ka[0][l]=2.at[l][0]=3、a[l][1]=4
B、a[0][0]=ka[0][l]=3.a[l][0]=2,a[l][l]=4
C、a[0][0]=4、a[0]⑴=3、a[l][0]=2、
D、a[0][0]=4,a[0][1]=2,a[l][0]=3,a[l][1>1
20、以下叙述中正确的是o
A、使用typedef定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
二、判断题(每小题2分,共20分)
()1、模运算符先仅用于整型变量或整型常量。
()2、将int型变量x转换为float型应:float(x);
()3、函数返回值的类型是由在定义函数时所指定的函数类型
()4、while语句的一般形式如下,当表达式的值为‘'真"时,循环执行,直到表
达式的值为〃假”,循环中止并继续执行while的下一条语句。
()5、使用strcpy(字符数组,字符串)函数时,字符数组长度必须足够大。
()6、c程序是从函数开始执行的。
()7、二维数组元素在内存中的存放顺序是按列主顺序存放
()8,当函数的实参与形参同名时,它们将共占内存单元。()
()9、在标准c语言中,使用函数strcpy时可以将'0'一起复制到目标串
中
()10、在一个文件中定义的全局变量其作用域还可以扩展到其他文件。
三、编程题(每小题分,共40分)
1、编写程序:判断输入字符的字母的个数,以*结束输出。(本题10分)
2、输出9*9乘法表。(本题14分)
3、计算n名学生成绩的平均分并通过函数返回。要求:
结构体代码如下:
structStudentScore{
doublescore;
};(本题16分)
参考答案
一、单项选择题
1、C
2、A
【解析】C语言中没有关键词and,逻辑与运算符是&&,不是and,因此,选项
B是错误的;而&是c语言的按位与运算,因此选项D是错误的:选项C是数学
表达式,也是不对的。
3、D
4、A
【解析】本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达
式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值
号(=)时不会报错的,但是其值恒为1。
5、B
6、A
7、B
8、D
9、D
10、A
【解析】C语言的字符常量是用单引号C)括起来的一个字符,也可以用以一个
“\”开头的字符序列来表示字符常量。其中形式\ddd表示1到3位8进制数
所代表的字符;形式\xhh表示1到2位16进制数所代表的字符。在本题中
'\xl3'表示回车符,是一个字符常量;而'\081'用8进制数所代表的字符形式
不正确,因为8进制数所表示的字符中不会出现数字“8";’65'单引号(即撇
号)括起来的不是一个字符,而是一个十进制数字;"\<是用双引号括起来的一
个字符,表示一个字符串,而不是字符常量。
11、B
12、C
13、C
14、C
15、C
16、B
【解析】本题x赋初值为3,当执行printf(级d”,x-);时,由于x-的作用是先
运算x,再将x的值减1,所以,printf输出的x值为3,等输出后,x的值减
1变为2,继续执行,判断条件!x为假,循环只被执行一次。
17、A
18、B
19、A
20、A
【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新
的名字,结构体类型中的成分可以是数组和指针,所以B选项错误,结构体类型
的变量可以在声明结构体的时候一起定义,C选项错误,D选项中可以一起定
义。
二、判断题
1、正确
2、错误
3、正确
4、正确
5、正确
6、正确
7、错误
8、错误
9、正确
10、正确
三、编程题
1、#include<stdio.h>
main()
{
charch;
inti=0;
ch=getchar();
while(ch!=,*')if(ch>=,a&&ch<-z'||ch>='a'&&ch<=,z')
(
i++;
ch=getchar();
)
printf("%d\n',i);
)
2、ttinclude<stdio.h>
voidmain()
(
inti=l;
for(i;i<=9;i++)
(
intj=l;
for(j;j<=i;j++)
printfC%d*%d=%d,z,i,j,i*j);
)
printf("\n");
)
)
3、doubleFun(structStudentScore*a,intn){
inti;
doublesum=0.0;
for(i=0;i<n;i++)
{
sum+=a[i].score;
)
returnsum/n;
)
intmain()
(
structStudentScorea[100];
intn;〃学生数量
inti;
printf(“请输入学生数量:”);
scanf(级d”,&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的成绩:",i+1);
scanf&a[i].score);
)
printf(线If”,Fun(a,n));
return0;
)
请输入学生数量:3
请输入第1个学生的成绩:90
请输入第2个学生的成绩:100.0
请输入第3个学生的成绩:80
90.000000
C语言专升本测试卷(四)
(总分100分,考试时长90分钟)
一、单项选择题(每小题2分,共40分)
1、下列属于条件运算符的是。
A、:
B、&&
C、>>
D,+
2、下列()是合法标识符。
A、_book
B、5files
C、+static
D、-3.14159
3、以下选项中属于c语言数据类型的是o
A、复数型
B、逻辑型
C、双精度型
D、集合型
4、有如下程序
main()
{
intx=l,a=5,b=5;
switch(x)
(
case0:b一一;
case1:a―;
case2:a一一;
b一;
)
printf(〃a=%d,b二%d\n〃,a,b);
)
该程序的输出结果是o
A、a=3,b=4
B、a—3,b=3
C>a=4,b=5
D^a=4,b=4
5、下列for循环语句的执行次数是o
for(intx=0,y=0;(y!=0)&&(x<4);x++)
A、无限次
B、一次也不执行
C、执行一次
D、执行三次
6、c语言源程序的基本单位是o
A、过程
B、函数
C、子程序
D、标识符
7、运行下面程序后,输出是.
Sinclude<stdio.h>
voidmain()
(
intk=-3;
if(k<=0)printf("****\n");
elseprintf
)
A、####
B、****
C、####****
D、有语法错误不能通过编译
8、c语言中,数组名代表o
A、数组全部元素的值
B、数组首地址
C、数组第一个元素的值
D、数组元素的个数
9、在c语言中,数字029是一个()
A、八进制数
B、十进制数
C、十六进制数
D、非法数
10、以下不能正确进行字符串赋初值的语句是
A、charstr[5]="good!”;
B、charstr[]="good!”;
C、char*str="good!”;
D>charstr[5]={,"o',"o','d'};
11、若二维数组a有m行n歹1],则下面能够正确引用元素a[i][j]的为
A、*(a+j*n+i)
B、*(a+i*n+j)
C、*(*(a+i)+j)
D、*(*a+i)+j
12、已定义以下函数intfun(int*p)
(
return*p;
)
则fun函数返回值足
A、不确定的值
B、一个整数
C、形参p中存放的值
D、形参p的地址值
13、设c语言中,int类型数据占2个字节,则long类型数据占一
A、1个字节
B、2个字节
C、4个字节
D、8个字节
14、有以下函数intfun(char*s)
{
char*t=s;
while(*t++);
return(t-s);
)
该函数的功能是O
A、比较两个字符串的大小
B、计算S所指字符串占用内存字节的个数
C、计算S所指字符串的长度
D、将S所指字符串复制到字符串t中
15、以下程序运行后的输出结果是
main(){
charc;
intn=100;
floatf=10;
doublex;
x=f*=n/=(c=50);
printfC%dn,x);
)
A、220.000000
B、100,20.000000
C、240.000000
D、10040.000000
16、有以下程序:
#include<stdio.h>
main()
(
intx=8;
for(;x>0;x一)
{
if(x%3)
(
printf(z/%d,",x一);
continue;
}
printf("%d,",—x);
)
)
程序的运行结果是o
A、7,4,2
B、8,7,5,2
C、9,7,6,4
D、8,5,4,2
17、在c语言中,系统为一个结构体变量分配的内存是
A、各成员所需内存量的总和
B、结构体第一个成员所需的内存量
C、成员中占内存量最大者所需的容量的整数倍
D、结构体中最后一个成员所需的内存量
18、以下程序的输出结果是o
main()
(
intx=3,y=0,z=0;
if(x=y+z)printf(',****,,);
elseprintfC'####'');
}
A、####
B、****
C、1
D、4
19、以下对二维数组a的正确说明是
A、inta[3][]
B、floata(3,4)
C、doublea[l][4]
D、floata(3)(4)
20、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是
structstu
(
inti;
intname;
}St,*p;
p=&st;
A、si
B、*i
C、(*.i
D、p->i
二、判断题(每小题2分,共20分)
()1、c语言在判断一个表达式是否为真时,以非0值代表“真",以0值代表”
假〃
()2、在c语言的数据类型中,float的含义是单精度浮点型,double的含义
是双精度浮点型。
()3、预处理命令不是c语言的组成部分。
()4、break语句只能用在循环语句中。
()5、c语言约定''0'计入字符串的长度。
()6、c语言规定,函数返回值的类型是由return语句中表达式类型所决定
的。()
()7、一个数组是由连续的一块内存单元组成的,指针变量就是这块连续内存
单元的首地址
()8、用strcat(字符串1,字符串2)连接两个字符串函数时,将字符串1后
面的''0'取消,只在新串的最后保留一个‘'0'。
()9、当函数定义在后、调用在先时,vc++允许省略函数声明。
()10、fseek函数一般用于文本文件。
三、编程题(每小题分,共40分)
1、编写程序,使用循环结构输出下列图形:(本题10分)
2、编写程序:删除一个字符串中的指定字母,如:字符串〃aca〃,删除其中的
a字母。(本题14分)
3、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,
数据如下:201513135157张三90
1)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上
2)将学生中不及格学生的姓名显示出来
3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数
(本题16分)
参考答案
一、单项选择题
1、A
【解析】:为条件运算符;&&为布尔逻辑运算符;>>为位运算符;+为算术运
算符。
2、A
3、C
【解析】C语言的数据类型分为基本类型、构造类型、指针类型、空类型四大
类,其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单
精度型和双精度型两种。
4、A
5、B
6、B
7、D
8、B
9、D
10,A
11、C
12、D
13、C
14、B
【解析】循环语句while(*t++);执行完时,指针变量t就指向了字符串结束符
''0’之后的位置,所以语句retiwn(t-s);返回的就是字符串s所用内存的
字节个数。
15、A
【解析】对于C语言中的赋值运算符,必须遵循以下规则:赋值运算符的优先
级别只高于逗号运算符,比其他任何运算符的优先级都低,并且具有自右向左
的结合性。因此先得到变量c的值为50,变量n经过计算结果为2,最后通过
变量f的值10和n的值2相乘得到变量x的值,为20.000000o因此选项A)正
确。
16、D
【解析】本题考查for循环语句。x=8,for循环条件为真,8%3=2,不等于0,
则if条件表达式为真,执行第一个输出语句,先输出x的值8,然后将x的值
减1,此时x=7。然后执行continue语句结束本次循环。执行x—表示式,得
x=6,for循环条件为真.6%3=0,则if条件表达式为假,执行第二个输出语
句,先将x的值减1得x=5,然后输出x的值5。执行x—表示式,得x=4,for
循环条件为真,蝴3=1,不等于0,则if条件表达式为真,执行第一个输出语
句,先输出X的值4,然后将x的值减1,此时x=3。然后执行continue语句
结束本次循环。执行x—表示式,得x=2,for循环条件为真,2%3=2,不等于
0,则if条件表达式为真,执行第一个输出语句,先输出x的值2,然后将x
的值减1,此时x=l。执行x—表示式,得x=0,for循环条件为假,循环结
束。
17、C
18、A
19、C
20、B
【解析】本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变
量访问,即st.i,也可以用等价的指针形式即(*p).i和p->io
二、判断题
1、正确
2、正确
3、正确
4、错误
5、错误
6、错误
7、错误
8、正确
9、错误
10、错误
三、编程题
1、****
****
****
****
****
Sinclude
voidmain()
(
inti,j,k;
for(i=0;i<5;i++)
(
for(j=0;j<4-i;j++)
printf(,z");
for(k=0;k<4;k++)
printf("*");
printf(〃\n〃);
)
printf(〃\n〃);
)
2、#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//删除字符串中指定字母函数
char*deleteCharacters(char*str,char*charSet)
(
inthash[256];
if(NULL==charSet)
returnstr;
for(inti=0;i<256;i++)
hash[i]=0;
for(inti=0;i<strlen(charSet);i++)
hash[charSet[i]]=1;
intcurrentindex=0;
for(inti=0;i<strlen(str);i++)
(
if(!hash[str[i]])
str[currentIndex++]=str[i];
)
str[currentIndex]='\0';
returnstr;
)
intmain()
(
chars[2]=〃a〃;//要删除的字母
chars2[5]=〃aca〃;//目标字符串
printf(〃%s\n〃,deleteCharacters(s2,s));
return0;
)
3、ttinclude<stdio.h>
#defineNUM3
structstudent
char*sno=newchar[20];
char*name=newchar[20];
intscore;
boolfail=false;
);
voidstuSort(student*stu)
{
studenttmp;
for(inti=0;i<NUM;i++)
{
for(intj=0;j<NUM;j++)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 14496-32:2025 EN Information technology - Coding of audio-visual objects - Part 32: File format reference software and conformance
- 2025年信息技术课程考试题及答案
- 2025年心理学综合能力考试试题及答案
- 2025年心理学与教育专业考试试题及答案
- 2025年数字媒体与动画专业研究生入学考试试题及答案
- 2025年物流与供应链管理考试试卷及答案
- 2025年分析化学基础知识测试试卷及答案
- 2025年环境科学专业考试卷及答案
- 2025年保定市中考二模数学试题及答案
- 三个合伙人的合同范本
- 华北电力大学ppt模板
- 清朝治理新疆地区系统性治理课件(16ppt+视频)2022年新疆地方史读本(中学版)
- 旅游资源分类调查评价表 2017版
- 叉车日常维护保养检查记录表
- 《我的梦-中国梦》主题班会课件
- 超声波加工以及机床设计机械设计论文
- 义齿加工成本
- 综合教学楼建筑结构设计
- 苏教版三年级下册科学实验题
- 员工分红合作协议书54559
- 临时用电工作危害分析(JHA)记录表
评论
0/150
提交评论