C语言知识学习期末试题A.docx
《C语言知识学习期末试题A.docx》由会员分享,可在线阅读,更多相关《C语言知识学习期末试题A.docx(13页珍藏版)》请在冰豆网上搜索。
C语言知识学习期末试题A
四川大学期末考试试题(A卷)
(2013——2014学年第一学期)
课程号:
303066030课序号:
课程名称:
计算机基础及C程序设计语言
任课教师:
刘亚梅刘洋任瑞玲曾晓东余勤罗伟王茂宁王忠邓丽华成绩:
适用专业年级:
2012级学生人数:
印题份数:
学号:
姓名:
考试须知
四川大学学生参加由学校组织或由学校承办的各级各类考试,必须严格执行《四川大学考试工作管理办法》和《四川大学考场规则》。
有考试违纪作弊行为的,一律按照《四川大学学生考试违纪作弊处罚条例》进行处理。
四川大学各级各类考试的监考人员,必须严格执行《四川大学考试工作管理办法》、《四川大学考场规则》和《四川大学监考人员职责》。
有违反学校有关规定的,严格按照《四川大学教学事故认定及处理办法》进行处理。
一、单项选择题(每题1.5分,共45分)(注:
本题及以下各题均以VC++6.0为软件编程平台)
1.一个C程序总是从_______开始执行的。
A)main函数B)程序的第一行
C)程序的第一个函数D)不固定位置
2.以下对C语言的描述正确的是。
A)函数允许嵌套定义B)编译时不检查语法
C)用户所定义的标识符必须以字母开头D)转义字符以“\”开头
3.下列C语言中运算对象必须是整型的运算符是。
A)%=B)&&C)=D)*=
4.若有以下程序段:
intc1,c2=3,c3=2;c1=(float)c2/c3;则执行后,c1、c2的值分别是。
A)0,3.0B)1,3.0C)0,3D)1,3
5.下列变量定义中合法的是。
A)short_a=0xda;B)doubleb=1+5e2.5;
C)inta=‘A’;D)float2_and=1-e-3;
6.若变量已正确定义并赋值,符合C语言语法的表达式是。
A)++(a+1)B)a=7+b/c=a++
C)a=a+7=c+bD)a=’\0’
7.设inta=1,b=2,c=3,m=4,n=5,p=3;,则执行表达式(a=mA)1,1,1B)1,0,3C)1,0,0D)1,2,3
8.下列合法的常量是:
。
A)’abc’B)’\0x3a’C)“四川大学”D)’\xaif’
9.有整型变量x,单精度变量y=2.5,表达式x=(float)(y*3+((int)y)%4)执行后,x的值为。
A)9.0B)9C)7D)9.5
10.有变量说明和语句inta=10,b=1;b=(a==10&&++a>10);,则a和b的值分别是。
A)10和1B)10和0C)11和0D)11和1
11.以下4个选项中,不能看作一条语句的是。
A)if(b==0)m=1;n=2;B)a=0,b=0,c=0;
C)if(b==0){m=1;n=2;}D)if(a>0);
注:
1试题字迹务必清晰,书写工整。
本题8页,本页为第1页
2题间不留空,一般应题卷分开教务处试题编号:
学号:
姓名
12.若有语句scanf(“%d%c%f”,&a,&b,&c),假设输入序列为12.3A47,则a、b、c的值为。
A)无值B)12.3,A,47
C)12,.,无D)12,.,3.0
13.语句“printf("%d",(a=2)&&(b=-2));”的输出结果是。
A)2B)-2C)1D)0
14.以下语句中无限循环语句是。
A)for(;2&&5;);B)while(1,2,0);
C)while(‘\0’);D)for(;’\0’;);
15.下列if语句中,不正确的是。
A)if(xB)if(xC)if(x==y)x+=y;
D)if(x16.以下循环体的执行次数是。
#include
voidmain()
{
inti,j;
for(i=0,j=2;i<=j+1;i+=2,j--)
printf("%d\n",i);
}
A)3B)2C)1D)0
17.下面程序的输出结果是()。
#include
voidmain()
{
intx=5,a=0,b=0;
if(x!
=(a+b))printf("x=5\n");
elseprintf("a=b=0\n");
}
A)有语法错,不能通过编译B)通过编译,但不能连接
C)x=5D)a=b=0
18.定义:
inta=10,b=11,c=12;后,则下面表达式为0的是。
A)'a'&&'b'B)a<=b
C)a||b+c&&a-bD)!
((a
a||1)
19.运行以下程序后,如果从键盘上输入Monkey&<回车>,则输出结果为。
#include
voidmain()
{
intv1=0,v2=0;
charch;
本题8页,本页为第2页
教务处试题编号:
学号:
姓名
while((ch=getchar())!
='&')switch(ch)
{
case'o':
case'n':
default:
v1++;
case'&':
v2++;
}
printf("%d,%d\n",v1,v2);
}
A)2,1B)6,0C)6,6D)2,7
20.若有定义:
chara[10],*p=a;则不能给数组a输入字符串的语句是。
A)gets(a)B)gets(a[0])C)gets(&a[0]);D)gets(p);
21.有两个字符数组str1、str2,则下面能正确对str1、str2进行输入的语句是。
A)gets(str1,str2);B)scanf(“%s%s”,str1,str2);
C)scanf(“%s%s”,&str1,&str2);D)gets(“str1”);gets(“str2”);
22.下面能正确进行字符串赋值操作的是。
A)chars[5]={"abcde"}B)chars[5]={'a','b','c','d','e'}
C)char*s;s="abcde"D)char*s;scanf("%s",s);
23.设有数组定义:
chara[]="ABCDE\0123";则数组a所占的空间为个字节。
A)9B)10C)5D)8
24.有以下程序
#include
#include
voidmain()
{
chars1[]={'a','b','c'},s2[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
以下叙述中正确的是______。
A)在给s1和s2数组置初值时,系统会自动添加字符串结束符,故长度都为3
B)由于s1数组中没有字符串结束符,长度不能确定;但s2数组中字符串长度为3
C)由于s1和s2数组中都没有字符串结束符,故长度都不能确定
D)以上说法都不对
25.若有定义:
inta=0,*p=&a;,则语句printf("%d\n",*p);的输出结果是______。
A)随机值B)0C)a的地址D)p的地址
26.下面程序段,输出*的个数是
char*s="\tx++\016yz";
for(;*s!
='\0';s++)printf("*");
A)4B)9C)7D)11
27.若有以下说明,且0≤i≤10,则对数组元素的错误引用是_______。
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a,i;
A)p[i]B)a[p-a+i]C)p+iD)*(&a[i])
本题8页,本页为第3页
教务处试题编号:
学号:
姓名
28.若有以下说明,且0≤i<10,以下表达式中错误的是_______。
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a,i;
A)p[i++]B)*(a+i)C)*(i+a)D)*((a++)+i)
29.以下程序程序运行后的输出结果是______。
#include
voidmain()
{
inta[]={2,4,6,8,10},y=0,x,*p;
p=&a[1];
for(x=1;x<3;x++)
y+=p[x];
printf("%d\n",y);
}
A)10B)11C)14D)15
30.以下程序运行后的输出结果是______。
#include
voidmain()
{
chars[]="158",*p;
p=s;
printf("%c",*p++);
printf("%s",p);
}
A)158B)1258C)58D)269
二、判断对错,对的划“√”,错的划“×”(每小题1分,共10分,)
1.C语言中,每个函数都可以单独编译、单独执行。
()
2.可以对字符型数组进行整体输入、输出。
()
3.以下两种初始化是等价的。
()
charx[]="abcdefg";
charx[]={'a','b','c','d','e','f','g'};
4.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息。
()
5.数组的元素实质上就是一个变量,代表内存中的一个存储单元。
()
6.设有以下程序段:
charr=’A’,*p=&r;
*p=r;
则“charr=’A’,*p=&r;”是把r的地址赋值给了p所指的存储单元.()
7.设有程序段,则s数组长度和p所指向的字符串长度相等。
()
chars[]=“china”;char*p;p=s;
本题8页,本页为第4页
教务处试题编号:
学号:
姓名
8.若有函数定义voidfunc(inta,intb){…},则对函数的引用fuc((rec1,rec2+rec3),(rec4,rec5));是错误的,因为实参与形参数量不匹配。
()
9.switch语句中,case后面只能是整型或字符型常量表达式。
()
10.在C中,凡用while循环能完成的,都能用for或do…while循环实现。
()
三、写出下列程序的运行结果(5小题,每题5分,共25分)
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("%d,%d\n",a,b);
}
2、#include
voidfunc(intx,int*y)
{
x+=*y;
*y+=x;
}
voidmain()
{
intx=2,y=4;
func(x,&y);
printf("%d%d\n",x,y);
}
3、#include
voidmain()
{
charc;
c=getchar();
while((c=getchar())!
='?
')
putchar(++c);
}
输入:
Today?
↙
4、#include
#include
voidmain()
{
charb[30];
strcpy(&b[0],"ABC");
strcpy(&b[1],"DEF");
strcpy(&b[2],"KFC");
printf("%s\n",b);
}
本题8页,本页为第5页
教务处试题编号:
学号:
姓名
5、#include
#include
voidfun(char*w,intm)
{
chars,*p1,*p2;
p1=w;p2=w+m-1;
while(p1{
s=*p1++;
*p1=*p2--;
*p2=s;
}
}
voidmain()
{
chara[]="Good";
fun(a,strlen(a));
puts(a);
}
四、程序填空(每空2分,共20分)
1、下面程序的功能是计算1+1/3+1/5+…+1/99并显示结果,请填空使程序完整。
#include
voidmain()
{
inti;
floatsum;
【1】;
i=1;
while(i<100)
{
sum+=【2】;
i+=2;
}
printf("sum=%f",sum);
}
本题8页,本页为第6页
教务处试题编号:
学号:
姓名
2、以下程序用“选择排序法”对一维数组a中的整数进行排序,使其元素的值是按从小到大的顺序排列。
请填空使程序完整。
for(i=0;i<【3】;i++)scanf("%d",&a[i]);
for(k=0;k{【4】;
for(i=k+1;iif(a[i]if(min_k!
=k)
{temp=a[min_k],a[min_k]=a[k],a[k]=temp;}
}
for(i=0;iprintf("\n");
}
3、以下程序通过函数SunFun求。
其中,由F函数实现。
请填空使程序完整。
#include
intSunFun(intn);
intF(intx);
voidmain()
{
printf(“Thesum=%d\n”,SunFun(10));
}
intSunFun(intn)
{
intx,s=0;
for(x=0;x<=n;x++)s+=F【6】;
returns;
}
intF(intx)
{
return【7】;
}
本题8页,本页为第7页
教务处试题编号:
学号:
姓名
4、下列count函数用于计算子串substr在母串str中出现的次数,请填空使程序完整。
#include
intcount(char*str,char*substr)
{
intx,y,z;
intnum=0;
for(x=0;【8】;x++)
for(y=x,z=0;substr[z]==str[y];z++,y++)
if(substr[【9】]=='\0')
{
num++;
break;
}
returnnum;
}
voidmain()
{
chara[100],b[100];
gets(a);gets(b);
printf("%d\n",【10】);
}
本题8页,本页为第8页
教务处试题编号: