C语言期末考试样题_c语言期末考试样题
C语言期末考试样题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言期末考试样题”。
------------------
一、选择题(每小题1分,共30分)1. 以下叙述正确的是()。
A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 2.一个C语言程序的基本单位是()A)函数
B)子程序
C)过程 D)命令 3.一个C语言的语句必须使用的结束符号是()
A),B)。
C):
D);
4.下列选项中,可以作为C语言标识符的是()
A)3stu B)#stu C)stuD)stu.3 5.设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为()
A)float B)char C)int D)double 6.下列叙述正确的是()
A)赋值语句中的“=”是表示左边变量等于右边表达式 B)赋值语句中左边的变量值不一定等于右边表达式的值 C)赋值语句是由赋值表达式加上分号构成的 D)x+=y;不是赋值语句
7.若x为int型变量,则执行x=6;x+=x-=x*x;语句后,x的值为()
A)36
B)-60
C)60
D)-24 8.若有a=2,b=3,c=4,则表达式a= =3和a=3的值分别为()
A)0和0 B)1和3 C)3和3 D)0和3
9.使条件表达式(year%4==0&&year%100!=0)||(year%400==0)结果为假的值是()
A)1950
B)2000 C)1996 D)2004 10. 若x、i、j、k都是int型变量,则计算下面表达式后,x的值为()。x=(i=4,j=16,k=32)A)4 B)16 C)32 D)52 11. 逻辑运算符两侧运算对象的数据类型()
A)只能是0和1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据
12. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()
A)A%2==1 B)!(A%2==0)C)!(A%2)D)A%2 13.语句while(!E);中的表达式!E等价于()。
A)E==0 B)E!=1 C)E!=0 D)E==1 14.下面程序段的运行结果是()a=1;b=2;c=2 while(a
x=x*x;} while(!x);A)是死循环 B)循环执行二次
C)循环执行一次 D)有语法错误 16.以下正确的函数原形说明语句是()
A)void fun(int x);
B)float fun(void y);C)double fun(x);
D)int(char ch);17.在C语言中,形参必须是()
A)常量
B)变量
C.)数值
D)表达式 18.C语言的函数()
A)可以嵌套调用,不能递归调用
B)可以嵌套定义
C)既可以嵌套调用,也可以递归调用
D)不可以嵌套调用 19.合法的数组定义是()
A)int a[ ]=”string”;
B)int a[5]={0,1,2,3,4,5};C)char a=”string”;
D)char a[ ]={0,1,2,3,4,5};20.表达式strlen(“string”)+strlen(“C”)的运算结果为()
A)9
B)10
C)7
D)8 21.若有定义和语句:char s[10];s=“abcd”;printf(“%sn”,s);则结果是()(以下u代表空格)
A)abcd
B)a C)abcd u u u u u
D)编译不通过
正确形式char s[10] =“abcd”;22.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()
A)p+1 B)a+1
C)a++
D)++p 23.若有int x, *pb;则正确的赋值表达式是
A)pb=&x
B)pb=x;C)*pb=&x;D)*pb=*x 24.设有程序段:char s[ ]=”china”;char *p;p=s;则下面叙述正确的是()
A)s和p完全相同 错,s是字符数组,p是指向字符串的指针
B)数组s中的内容和指针变量p中的内容相等 错,s内容与p指向的字符串内容相等才对
C)*p与s[0]相等
D)s数组长度和p所指向的字符串长度相等 错,字符串长度大于数组 25.下面对结构变量的叙述中错误的是()
A)相同类型的结构变量间可以相互赋值 B)通过结构变量,可以任意引用它的成员
C)结构变量中某个成员与这个成员类型相同的简单变量间可相互赋值 D)结构变量与简单变量间可以赋值 26.若有结构类型定义如下:
struct bd {
int x;
float y;}r,*p=&r;那么,对r中的成员x的正确引用是()
A)(*p).r.x B)(*p).x
C)p->r.x D)p.r.x 27.在一个函数里不能说明()
A)全局变量
B)静态变量
C)局部变量
D)静态局部变量 28.以下关于文件包含的说法中错误的是()
A)文件包含是指一个源文件可以将另一个源文件的全部内容包含进来。B)文件包含处理命令的格式为
#include “包含文件名” 或 #include C)一条包含命令可以指定多个被包含文件
D)文件包含可以嵌套,即被包含文件中又包含另一个文件。29.下列语句中,将C定义为文件型指针的是()
A)FILE c;
B)FILE *c;
C)file c;
D)file *c;30.下面对typedef的叙述中不正确的是()
A)用typedef可以定义各种类型名,但不能用来定义变量 B)用typedef可以增加新类型
C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用typedef有利于程序的通用和移植
二、写出下列程序的运行结果(每小题3分,共24分)1.以下程序的输出结果是 x=3 换行x>3。
#include “stdio.h” main(){ int x=3;switch(x)
{ case 1:
case 2:printf(“x
case 3:printf(”x=3n“);
case 4:
case 5:printf(”x>3n“);break;
default:printf(”x unknown“);
} }
2.以下程序的输出结果是 x=4。
#include
void main(){ int i,j,x=0;for(i=0;i
3.以下程序的输出结果是 20,f1()换行30,f2(),换行10,main()。
#include ”stdio.h“ static int x=20;void f1(int x){ x+=10;printf(“%d,f1()n”,x);} void f2(){ x+=10;printf(“%d,f2()n”,x);} void main(){ int x=10;f1(x);f2();printf(“%d,main()n”,x);
} 4.以下程序的输出结果是。
#include #define S ‘ ’ void main(){ int n=5,i,j;
for(i=1;i
5.以下程序的输出结果是 5,9,9,9。
#include void main(){ static int a[]={5,7,9};
int *p=a;++p;printf(“%d %d %d %dn”,*a,*(a+2),*(p+1),p[1]);} 6.下面程序的运行结果是()
#include “stdio.h” void main(){ char a[]=“ab12cd34ef”;int i,j;for(i=j=0;a[i];i++)if(a[i]>=’a’&&a[i]
7.下面程序的运行结果是(110 100)
#include “stdio.h” void main(){ int *p,i;
i=100;
p=&i;
i=*p+10;
printf(“%d %dn”,*p);}
8.下面程序的运行结果是()
void main(){ struct cmplx{ int x;int y;}cnum[2]={1,3,2,7};printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].x);}
三、程序填空:(根据题意,将空缺的语句补上。每空3分,共30分)1.以下程序对输入的两个整数,按从大到小顺序输出。请填空。main(){ int x,y,z;scanf(“%d,%d”,&x,&y);if((1)){ z=x;(2)} printf(“%d,%dn”,x,y);}
2..以下程序完成的功能是求1+2+3+„+10的累加和,并进行累加和的输出打印。变量sum是存放累加值的。
#include ”stdio.h“ main(){(3)i=1,sum=0;for(;i
} 3.下面程序的功能是用函数递归调用的方法定义函数int f(int m,int n)求m。请填空。
int f(int m,int n){ int s;if((5))s=1;else s=(6);return(s)} 4.以下程序的功能是求数组num中小于零的数据之和。请填空。
#include void main(){ int num[20]={10,20,1,-20,23,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20};int sum=0,i;for(i=0;i
四、编写程序(n