青岛科技大学c语言试题库完整.docx
《青岛科技大学c语言试题库完整.docx》由会员分享,可在线阅读,更多相关《青岛科技大学c语言试题库完整.docx(66页珍藏版)》请在冰豆网上搜索。
青岛科技大学c语言试题库完整
第一套试题
、单项选择题(15个小题,每题2分,共30分):
1•一个C语言程序的执行是从
A.main函数开始,直到main函数结束
B.第一个函数开始,直到最后一个函数结束
C.第一个函数开始,直到最后一个语句结束
D.main函数开始,直到最后一个函数结束
2.正确的自定义标识符是
A.x_2B.a-bC.2sumD.$123
3.下面程序的运行结果是
#defineF(x)x*x
voidmain()
{inta=2,b=1;
prinft(“n”,F(a+b));
}
A.3B.5C.8D.9
4•读以下程序段,判断a的值为
int*p,a=10,b=1;
P=&a;
a=*p+b;
A.12B.10C.11D.编译出错
5.根据以下说明语句,贝U下面的叙述中不正确的是。
structstudent
{intnum;
charname[10];
intscore;
}stu;
A.struct是定义结构体类型的关键字
B.stu是结构体变量名
C.num,name,score都是结构体成员名
D.stu是结构体类型名
6.已知字母A的ASCII码为十进制数65,变量ch1为字符型,则执行语句ch1=‘A'-+后5/;ch1
中的值是
A.DB.67C.一个不确定的值D.C
7.以下哪种方法不能对一维数组进行正确的初始化。
A.inta[]={1,2,3};B.inta[5]={};
C.inta[5]=(1,2,3,4,5);D.inta[]={2,3,4*5,6};
8.已正确定义字符变量ch1,下面能正确赋值的是
A.ch仁“a”;B.ch1=‘a';
C.ch1="语言程序设计”;Dch1='语言程序设计';
9.逗号表达式(a=3*4,a*4),a+5的值是
A.53B.17C.20D.48
10.设n为float型,m为int型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五
入的表达式是
A.n=(n*100+0.5)/100.0B.n=n*100+0.5/100.0
C.m=n*100+0.5,n=m/100.0D.n=(n/100+0.5)*100.0
11.设i=2,j=3,则表达式(i++)*(++j)的值为
A.6B.8C.9D.12
12.关于以下程序段,说法正确的是
x=_1;
do
{x=x*x;}while(!
x);
A.死循环B.循环体执行二次C.循环体执行一次D.有语法错误
13.若有下列定义:
charc[5],*p=c;则对c数组元素地址的正确引用是
A.p+2B.&c[5]C.c++D.&c
14.当调用函数时,实参是一个数组名,则向函数传送的是
A.数组的长度B.数组每个元素中的值
C.数组每一个元素的地址D.数组的首地址
15.文件中利用fopen函数打开文件,如果以只读方式打开二进制文件,则以下打开方式正确的是
A.叶B.rbC.wbD.ab
二、填空题(5个小题,每题2分,共10分):
1.若有inti=1,j=7,a;执行语句a=i+(j%4!
=0);后,a的值是
2.执行以下程序后,运行结果是
#include
voidmain()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=10)break;
if(b%3==1){b+=3;continue;}
}
printf(“n%d,a);}
3.源程序中用到了strcat函数,需要包含的头文件(即库文件)为
4.执行以下程序后,运行结果是
#include
voidmain()
{inta=2;
floatn=5.888,b;
b=a+(int)n;
printf('h%f,b);}
5.语句scanf("a=%d,b=%d",&a,&b);若将3和4分别输入给a和b,则正确的输入方式为
。
三、程序分析题,写岀程序的运行结果(5个小题,每题4分,共20分):
1.#include
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;}
printf(“an”,a,b);}
2.
写岀程序的运行结果
在运行以下程序时,输入“TurboC++3.0
#include
voidmain()
{charstr[40];
printf("Inputastring:
");
scanf("%s",str);
puts(str);}
3.#include
voidf(inty)
{staticinti=5;
intj=3;
j++;
printf(“%d+%d+%d=%id”,i,jj+j+y);
i*=2;}
voidmain()
{intx;
for(x=1;x<=2;++x)f(x);}
4.#include
voidswap(int*pa,int*pb)
{int*p;
p=pa;
pa=pb;
pb=p;}
voidmain()
{inta=10,b=20;
int*p仁&a,*p2=&b;
if(a
printf("%d,%d\n",a,b);}
5.#include
inta=5;intb=7;
intplus(intx,inty)
{intz;
z=x+y;
return(z);}
voidmain()
{inta=4,b=5,c;
c=plus(a,b);
printf(“a+b=%nd,c);}
四、程序填空题,将下面程序补充完整(10个填空,每空2分,共20分):
1.输岀九九表。
#include“stdio.h”
voidmain()
{inti,j;
for(i=1;i<=9;i++)
{for(j=1;j+①;
printf(“%3d*%d=%2d”,i,j,i*j);
②;
}
}
2.利用函数形式,求x数组所有元素的平均值并输岀。
#include“stdio.h”
①;
voidmain()
{floatavg,x[10]={1.2,3.6,4.5,5.1,6.9,7,8,9,10.5,11.3};
avg=average(x);
printf(“Theaverageis%5.Qf,avg);
}
floataverage(floata[10])
{inti;
floatsum=0;
for(i=0;i<10;i++)sum=sum+a[i];
②;
}
3.编写一个计算字符串长度的函数length。
#include“stdio.h”
voidmain()
{charstr[20];
intm;
intlength(char*p);
printf("Inputastring:
\n");
gets(str);
①;
printf("\nthelengthofstris%d",m);
}
intlength(char*p)
{intn=0;
while(②){n++;p++;}
returnn;}
4.输入10个整数,按每行3个数输岀这些整数,最后输岀10个整数的平均值
#include“stdio.h”
voidmain()
{inti,n=10,a[10];
floatavg=0;
for(i=0;iscanf(“%d”,&a[i]);
for(i=0;i{if(①)prints”);“
printf(“%d”,a[i]);
}
for(i=0;i②;
avg=avg/n;
printf(“average=%”,avg);
}
5.将字符数组中大写字符改为小写字符,将小写字符改为大写字符,利用指针完成。
#include“stdio.h”
voidmain()
{charstr[30]=“WelcometoCLanguage”,*cp=str;
while(*cp)
{if(*cp>=‘A'&&*cp<=‘Z')
①;
elseif(*cp>=‘a'&&*cp<=‘z')
*cp=*cp-32;
②;
}
puts(str);
}
五、程序设计题(3个小题,共20分):
1.设三个整型变量a,b,c,编写程序为a,b,c输入数据,并要求a,b,c按由小到大排序后输岀。
(5分)
2.学生成绩可分为五分制与百分制,编程将百分制转换为五分制输岀。
(5分)
3.编写排序函数sort(inta[]),实现对数组a中的元素进行排序,并利用该函数,从键盘输入若干个数(如10个)将其按升序排列。
(10分)
第一套试题
一、单项选择题(15个小题,每题2分,共30分):
1-5:
AABCD6-10:
ACBBC11-15:
BCADB
二、填空题(5个小题,每题2分,共10分):
1.22.43.string.h
4.7.0000005.a=3,b=4
三、程序分析题,写岀程序的运行结果(5个小题,每题4分,共20分)
1.a=2,b=12.Turbo3.5+4+1=10
4.10,205.a+b=910+4+2=16
四、程序填空题,将下面程序补充完整(10个填空,每空2分,共20分)
1.①jv=i②printf(n”)“
2.①floataverage(floata[10])或floataverage(floata[])
②return(sum/10)
3.①m=length(str)②*p!
=或*p
4.①i%3==0②avg+=a[i]或avg=avg+a[i]
5.①*cp=*cp+32或*cp=*cp+-a''②cp++
五、程序设计题(3个小题,共20分):
1.#include“stdio.h”
voidmain()
{inta,b,c,t;
printf("inputa,bandc:
");
scanf("%d%d%d",&a,&b,&c);•.分1
if(a>b){t=a;a=b;b=t;}分3
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
printf("%d%d%d",a,b,c);分……1
}
2.#include“stdio.h”
voidmain()
{floatscore;
printf(“Inputascore:
”);
scanf(“%f”,&score);
while(score>100||score<0)2分
{printf(“Error!
Pleaseinputagain:
);
scanf(“%f”,&score);
}
if(score>=90)printf(n”);aA-分・3elseif(score>=80)printf(n”);“B
elseif(score>=70)printf(n”);“C
elseif(score>=60)printf(n”);“D
elseprintf(n”“E
}
3.#include"stdio.h"
#defineN10
voidsort(inta[]);分1
voidmain()
{inta[N],i,j;
printf("input%dnumbers:
\n",N);for(i=0;iscanf("%d",&a[i]);
sort(a);分…2
for(i=0;iprintf("%d",a[i]);
}
voidsort(inta[])
{inti,j,temp;
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
}
第二套试题
一、单项选择题(15个小题,每小题2分,共30分):
1.在一个源程序中,main函数的位置
A.必须在最前面B.必须在系统调用的库函数的后面
C.没有具体要求D.必须在最后
2.正确的用户自定义标识符是
A.a=2B.a+bC.nameD.default
3.以下叙述中正确的是
A.break语句只能用于switch语句体中
B.continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
C.break语句只能用在循环体内和switch语句体内
D.在循环体内使用break语句和continue语句的作用相同
4.C语言中最简单的数据类型包括。
A.整型、实型、逻辑型B.整型、实型、字符型
C.整型、字符型、逻辑型D.字符型、实型、逻辑型
5.设ch是char型变量,其值为‘A且有表达式ch=(ch>=‘A'&&ch<=‘Z')?
(ch+该表达式的值为
A.AB.aC.ZD.z
6.以下叙述正确的是_
A.用do-while
B.用do-whileC.用do-whileD.用do-while
语句构成的循环不能用其它语句构成的循环来代替
语句构成的循环只能用break语句退出
语句构成循环时,当while后的表达式成立时结束循环
语句构成循环时,当while后的表达式不成立时结束循环
7.为了判断两个字符串s1和S2是否相等,应当使用。
A.if(s1==s2)B.if(s1=s2)
C.if(strcmp(s1,s2))真D.if(strcmp(s1,s2)==0)假
8.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是
A.k%2(k/2)B.k%2==1C.(k%2)!
=0D.!
k%2==1
9.下列是关于数组的叙述,不正确的是
A.在定义数组时,数组名前的类型是指明数组各元素的类型
B.数组各元素的类型是相同的,而且是有序的
C.在引用数组元素时,数组元素的下标表达式必须是常量整型表达式
D.对整型数组来说,未初始化时,各数组元素的值是不确定的
10.有字符数组x[50],y[50],则正确的输出语句是
A.printf("%s",”%s"puts(X);puts(y);
C.putchar(x,y);D.puts(x,y);
11.以下对一维数组a进行不正确初始化的是
A.intx[5]={};B.intx[5]=(0,0,0);
C.intx[]={0};D.intx[5]={2*3};
12.下列叙述中错误的是
A.主函数中定义的变量在整个程序中都是有效的
B.在其他函数中定义的变量,没有特殊声明在主函数中不能使用
C.形式参数也是局部变量
D.复合语句中定义的变量只在该复合语句中有效
13.设有函数原型、一维数组和变量定义如下:
函数原型voidfun(intx[],intn);
数组定义inta[4]={1,2,3,4};floatb[4]={1.0,2.0,3.0,4.0};
变量定义intm=4,value;
下列函数调用中,正确的是(函数返回值?
)
A.fun(a,m);B.value=fun(a[1],m);
C.value=fun(a,4);D.fun(b,m);
14.以下对指针定义合法的语句是
A.int*p=&x=3;B.inty[5]={1,2,3,4,5},*p=&y;
C.charch[12]="HelloWorld"D,*c=Ctair*c,c=‘x',c=&c;
15.以只读”方式打开文本文件aa.dat,下列语句中哪一个是正确的
A.fp=fopen("aa.dat"B."fp=f6pen("aa.dat","a");
C.fp=fopen("aa.dat"D.Wp='fopen("aa.dat","r");
二、填空题(15个小题,每空1分,共15分):
1.结构化程序设计的三种基本程序结构为顺序结构、选择结构和
2.条件“303.C语言源程序文件的后缀是
4.有如下定义:
intm=1,n=1,x=3;则执行语句:
if(!
n)x+=1;if(m)x-=2;后,x的值是
5.执行如下语句:
inti=10;
do
{i=i+10;}while(i>20);后,i的值是
6.若a、b、c和d都是int型变量,则执行表达式d=(a=2,b=4,c=a*b);后,d的值为
7.在使用数组元素的过程中,C语言编译系统(是/否)检查下标越界”。
8.设m=4,n=7,表达式x=(m++)*(--n)的值是
9.执行如下语句:
intk;k值不确定
for(k=0;k=1;k++);则该循环执行的次数是
10.有如下定义:
intx[5]={1,3,5,7,9},*p=&x[2];则执行语句printf("%d",*p);的输出结果是
11.有如下结构体定义:
structdate
{intyear;
intmonthintday;
};
structworklist
{charname[20];
charsex;
structdatebirthday;
}person;
若对结构体变量person的出生年份赋值为1990,则正确的赋值语句是
12.C语言提供的预处理命令有、文件包含和条件编译三种。
13.设有数组定义:
charstring[]="Student",则数组所占的存储空间为个字节
14.指针变量只能存放内存储单元的
15.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是
三、写岀程序的运行结果(5个小题,每小题4分,共20分):
1.#include"stdio.h"
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf(“a=%d,b=%d,a,b);
}
2.#include"stdio.h"
voidf(intb[])
{inti;
for(i=2;i<6;i++)
b[i]*=2;
}
voidmain()
{inta[10]={1,2,3,4,5,6,7,8,9,10}
f(a);
for(i=0;i<10;i++)
printf(“%d",a[i]);
}
3.#include"stdio.h"
inta=5,b=7;
intplus(intx,inty)
{intz;
z=x+y;
return(z);
}
voidmain()
{inta=4,b=5,c;
c=plus(a+b);printf("a+b=%d\n",c)
}
4.#include"stdio.h"
intd=1;
fun(intp)
{staticintd=5;
d+=p;
return(d);
}
voidmain()
{inta=3;
printf("%d\n",fun(a+fun(d)))
5.#include"stdio.h"
voidmain()
{charch[15]={“abcdefg”};
charc,*cp1,*cp2;
inti,n=0;
cp1=ch;
cp2=ch;
while(*cp2!
=0'')
{n++;cp2++;}
cp2--;
n=n/2;
for(i=0;i{c=*cp1;*cp1=*cp2;*cp2=c;
cp1++;cp2--;
}
puts(ch);
}
四、完善程序,在空白处填上相应的语句内容(5个小题,每小题4分,共20分)
1.输入10个整数,按每行3个数输岀这些整数,最后输岀10个整数的平均值。
#include"stdio.h"
voidmain()
{inti,n=10,a[10];
floatavg=0;
for(i=O;iscanf(“%d”,&a[i]);
for(i=0;i{if(i%3==0)
(1)
printf(“%d”,a[i]);
}
for(i=0;i⑵
printf(“average=%”,avg);
}
2.利用选择排序法使数组中的数按照从大到小的次序(升序)排列。
#include"stdio.h"
#defineN10
voidmain()
{inta[N]={3,8,5,2,10,9,4,1,7,6},i,j,r,temp;
for(i=0;i{
(1)
for(j=i+1;jif(⑵)r=j;
if