目录
第一单元程序设计和C语言 (1)
第二单元顺序程序设计 (3)
第三单元分支程序设计 (7)
第四单元循环程序设计...........................................................错误!未定义书签。第五单元数组........................................................................错误!未定义书签。第六单元函数........................................................................错误!未定义书签。
第一单元程序设计和C语言
一、选择题
1.C语言的基本构成单位是:。
A.函数
B.函数和过程
C.超文本过程
D.子程序
2.一个C语言程序总是从开始执行。
A.主过程
B.主函数
C.子程序
D.主程序
3.C语言的程序一行写不下时,可以。
A.用逗号换行
B.用分号换行
C.在任意一空格处换行
D.用回车符换行
4.以下叙述不正确的是:。
A.在C程序中,语句之间必须要用分号";"分隔
B.若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数
C.在C程序中,无论是整数还是实数都能正确无误地表示
D.在C程序中,%是只能用于整数运算的运算符
5.以下不正确的C语言标识符是。
A.ABC
B.abc
C.a_bc
D.ab.c
6.下列字符串是标识符的是:。
A._HJ
B.9_student
C.long
D.LINE1
7.以下说法中正确的是:。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须放在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
8.不合法的常量是:。
A.‘\2’
B.""
C.‘3’
D.‘\483’
9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:。
int k,a,b;
unsigned long w=5;
double x=1.422;
A.x%(-3)
B.w+=-2
C.k=(a=2,b=3,a+b)
D.a+=a=+(b=4)*(a=3)
10.在C语言中,字符型数据在内存中以形式存放。
A.原码
B.BCD码
C.反码
D.ASCII码
11.若有定义:int a=7;float x=2.5;y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值是:。
A.2.500000
B.2.750000
C.3.500000
D.0.000000
12.设有说明:char w;int x;float y;double z;
则表达式w*x+z-y值的数据类型为:。
A.float
B.char
C.int
D.double
13.以下是不正确的转义字符。
A.'\\'
B.'\'
C.'081'
D.'\0'
14.若x为int型变量,则执行以下语句后,x的值为。
x=6;x+=x-=x*x;
A.36
B.-60
C.60
D.-24
15.字符串"\\\"ABC\"\\"的长度是。
A.11
B.7
C.5
D.3
二、填空题
1.一个函数由两部分组成,它们是和。
2.一个C源程序至少包含一个,即。
3.设int a=12;则表达式a/=a+a的值是。
4.表达式x=(a=3,6*a)和表达式x=a=3,6*a分别是表达式和表达式,两个表达式执行完的结果分别是和,x值分别是
和。
5.在C语言中,实数有两种表示形式,即和。
6.在C语言中,运算符的优先级最小的是运算符。
7.整形数在内存中占两个字节,那么-10的补码是________________。
第二单元顺序程序设计
一、选择题
1.若m为float型变量,则执行以下语句后的输出为。
m=1234.123;
printf("%-8.3f\n",m);
printf("%10.3f\n",m);
A.1234.123
B.1234.123
C.1234.123
D.-1234.123
1234.1231234.1231234.123001234.123
2.若x,y,z均为int型变量,则执行以下语句后的输出为。
x=(y=(z=10)+5)-5;
printf("x=%d,y=%d,z=%d\n",x,y,z);
y=(z=x=0,x+10);
printf("x=%d,y=%d,z=%d\n",x,y,z);
A.X=10,Y=15,Z=10
B.X=10,Y=10,Z=10
X=0,Y=10,Z=0X=0,Y=10,Z=10
C.X=10,Y=15,Z=10
D.X=10,Y=10,Z=10
X=10,Y=10,Z=0X=0,Y=10,Z=0
3.若x是int型变量,y是float型变量,所用的scanf调用语句格式为:
scanf("x=%d,y=%f",&x,&y);
则为了将数据10和66.6分别赋给x和y,正确的输入应是:。
A.x=10,y=66.6<回车>
B.1066.6<回车>
C.10<回车>66.6<回车>
D.x=10<回车>y=66.6<回车>
4.已知有变量定义:int a;char c;用scanf(“%d%c”,&a,&c);语句给a和c输入数据,使30存入a,字符‘b’存入c,则正确的输入是:。
A.30’b’<回车>
B.30b<回车>
C.30<回车>b<回车>
D.30b<回车>
5.已知有变量定义:double x;long a;要给a和x输入数据,正确的输入语句是。若要输出a和x的值,正确的输出语句。
A.scanf(“%d%f”,&a,&x);
B.scanf(“%ld%f”,&a,&x);
printf(“%d,%f”,a,x);printf(“%ld,%f”,a,x);
C.scanf(“%ld%lf”,&a,&x);
D.scanf(“%ld%lf”,&a,&x);
printf(“%ld,%lf”,a,x);printf(“%ld,%f”,a,x);
6.若有定义double x=1,y;则以下的语句执行的结果是。
y=x+3/2;printf(“%f”,y);
A.2.500000
B.2.5
C.2.000000
D.2
7.若a为整型变量,则以下语句。
a=-2L;printf("%d\n",a);
A.赋值不合法
B.输出为不确定的值
C.输出值为-2
D.输出值为2
二、读程序写结果
1.main()
{int x,y;
scanf("%2d%*2d%ld",&x,&y);
printf("%d\n",x+y);
}
执行时输入:1234567
2.main()
{int x=4,y=0,z;
x*=3+2;
printf("%d",x);
x*=y=z=4;
printf("%d",x);
}
3.main()
{float x;int i;
x=3.6;i=(int)x;
printf("x=%f,i=%d",x,i);
}
4.main()
{int a=2;
a%=4-1;printf("%d,",a);
a+=a*=a-=a*=3;printf("%d",a);
}
5.main()
{int x=02,y=3;
printf("x=%d,y=%%d",x,y);
}
6.main()
{char c1=’6’,c2=’0’;
printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);
}
7.main()
{int x,y,z;
x=y=1;z=++x-1;
printf("%d,%d\n",x,z);
z+=y++;
printf("%d,%d\n",y,z);
}
三、填空题
1.在C语言中,字符型数据和整型数据之间可以通用,一个字符数据既能以输出,也能以输出。
2."%-ms"表示如果串长小于m,则在m列范围内,字符串向靠,补空格。
3.printf函数的“格式控制”包括两部分,它们是和。
4.编写程序求矩形的面积和周长,矩形的长和宽由键盘输入,请填空。
#include
void main()
{float l,w;
printf(“please input length and width of the rectangle\n”);
scanf(“%f%f”,&l,&w);
area=;
girth=;
}
5.编写程序,输入一个数字字符(‘0’~‘9’)存入变量c,把c转换成它所对应的整数存入n,如:字符‘0’所对应的整数就是0。请填空。
void main()
{char c;
;
printf(“please input a char:\n”);
c=;
n=;
printf(,c,n);
}
四、编程
输入一个3位整数,求出该数每个位上的数字之和。如123,每个位上的数字和就是1+2+3=6。
第三单元分支程序设计
一、选择题
1.若x=0,y=3,z=3,以下表达式值为0的是
A.!x
B.x C.x%2&&y==z D.y=x||z/3 2.以下运算符中优先级最低的运算符为,优先级最高的为。 A.&& B.! C.!= D.|| E.?: F.== 3.若w=1,x=2,y=3,z=4,则条件表达式w A.4 B.3 C.2 D.1 4.若w,x,z均为int型变量,则执行以下语句后的输出为。 w=3;z=7;x=10; printf("%d\n",x>10?x+100:x-10); printf("%d\n",w++||z++); printf("%d\n",!w>z); printf("%d\n",w&&z); A.0 B.1 C.0 D.0 1111 1100 1110 5.分析以下程序,下列说法正确的是。 main() {int x=5,a=0,b=0; if(x=a+b)printf("****\n"); else printf("####\n"); } A.有语法错,不能通过编译 B.通过编译,但不能连接 C.输出**** D.输出#### 6.分析以下程序,下列说法正确的是。 main() {int x=5,a=0,b=3; if(x=a+b)printf("****\n"); else printf("####\n"); } A.有语法错,不能通过编译 B.通过编译,但不能连接 C.输出**** D.输出#### 7.分析以下程序,下列说法正确的是。 main() {int x=0,a=0,b=0; if(x=a+b)printf("****\n"); else printf("####\n"); } A.有语法错,不能通过编译 B.通过编译,但不能连接 C.输出**** D.输出#### 8.分析以下程序,下列说法正确的是。 main() {int x=0,a=0,b=0; if(x==a+b)printf("****\n"); else printf("####\n"); } A.有语法错,不能通过编译 B.通过编译,但不能连接 C.输出**** D.输出#### 二、读程序写结果 1.include main() {int a=-1,b=4,k; k=(a++<=0)&&(!(b--<=0)); printf("%d,%d,%d\n",k,a,b); } 2.main() {int x=4,y=0,z; x*=3+2; printf("%d",x); x*=(y==(z=4)); printf("%d",x); } 3.main() {int x,y,z; x=3;y=z=4; printf("%d",(x>=z>=x)?1:0); printf("%d",z>=y&&y>=x); } 4.main() {int x=1,y=1,z=10; if(z<0) if(y>0)x=3; else x=5; printf("%d\t",x); if(z=y<0)x=3; else if(y==0)x=5; else x=7; printf("%d\t",x); printf("%d\t",z); } 5.main() {char x=‘B’; switch(x) {case‘A’:printf(“It is A.”); case‘B’:printf(“It is B.”); case‘C’:printf(“It is C.”); default:printf(“other.”); } } 6.main() {int x=1,y=0,a=0,b=0; switch(x) {case1:switch(y) {case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++; } printf("a=%d,b=%d\n",a,b); } 三、填空题 1.若a=5,b=6,c=7,d=8,则表达式d=a/2&&b==c||!a的值为 2.定义int x=10,y,z;执行y=z=x;x=y==z后,变量x的值为。 3.分段函数:输入x,计算y值,输出y,其中: x<0y=2x+3 x=0,y=0 x>0,y=(x+7)/3 #include main() { int x,y; scanf("%d",&x); if(x<0)(1); (2)y=0; (3)y=(x+7)/3; printf(“%d”,y); } 4.由键盘输入三个数,计算以这三个数为边长的三角形面积。 (1) main() { (2); printf("Please enter3reals:\n"); scanf("%f%f%f",&a,&b,&c); if((3)) {s=(a+b+c)*0.5; s1=s*(s-a)*(s-b)*(s-c); s=(4); printf("\nArea of the triangle is%f\n",s); } (5) printf("It is not triangle!\n"); } 5.有一方程a x2+bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解。 (1)a=0,b≠0 (2)a=0,b=0,c=0 (3)a=0,b=0,c≠0 (4)a≠0,b2-4ac≥0 (5)a≠0,b2-4ac≤0 #include"math.h" main() {float a,b,c,d,pr,pi,x1,x2; scanf("%f%f%f",&a,&b,&c); printf("a=%f,b=%f,c=%f\n",a,b,c); if(a==0) {if((1)) printf("only one solution x=%f\n",-c/b); else if((2))printf("no solution\n"); else printf("x is any value\n"); } else {d=b*b-4*a*c; if((3)) {x1=(-b+sqrt(d))/(4); x2=(-b-sqrt(d))/(5); printf("x1=%6.2f,x2=%6.2f\n",x1,x2); } else {pr=-b/(2*a);(6); printf("x1=%6.2f+%6.2fi\n",pr,pi); printf("x2=%6.2f-%6.2fi\n",pr,pi); } } } 6.投票表决器: –输入Y、y,打印agree –输入N、n,打印disagree –输入其他,打印lose main() { char c; scanf("%c",&c); (1) { case‘Y’: case‘y’:printf(“agree”);(2); case‘N’: case‘n’:printf(“disagree”);(3); (4):printf(“lose”); } 四、编程 1.有三个数a、b、c,由键盘输入,输出其中最大的数。 2.输入一个数,判断它能否被3或者被5整除,如至少能被这两个数中的一个整除则将此数打印出来,否则不打印,编出程序。 3.读入1到7之间的某个数,输出表示一星期中相应的某一天的单词:Monday、Tuesday 等等,用switch语句做。 4.给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’,90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。 5.有一函数 ???? ?? ??? ??? ?<≤--<≤-+<≤--<≤<≤+=) )9075()75(151060)7545() 45(302040)4530()30(151050)3015(50)150(101540 (其它无意义x x x x x x x x x y 请编程序计算y 的值(x 的值由键盘输入)。 1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式c语言试题及答案
大一C语言期末考试题