一、选择题
- 一个C程序由若干个C函数组成,各个函数在文件中的位置为____A_______。
- 任意
- 第一个函数必须是主函数,其他函数任意
- 必须完全按照顺序排列
- 其他函数必须在前,主函数必须在最后
- D下列四个叙述中,正确的是______D_________。
- C程序中的所有字母都必须小写
- C程序中的关键字必须小写,其他标示符不区分大小写
- C程序中的所有字母都不区分大小写
- C语言中的所有关键字必须小写
- 下列四个叙述中,错误的是______C_________。
- 一个C源程序必须有且只能有一个主函数
- 一个C源程序可以含零个或多个子函数
- 在C源程序中注释说明必须位于语句之后
- C源程序的基本结构是函数
- 下面属于C语言关键字的是_____ABCD________。
A、int B、typedef C、enum D、union
- 以下叙述不正确的是________D____。
- 分号是C语句的必要组成部分
- C程序的注释可以写在语句的后面
- 函数是C程序的基本单位
- 主函数的名字不一定用mian表示
- 语言中允许的基本数据类型包括___B____。
- 整型、实型、逻辑型(bool )
- 整型、实型、字符型
- 整型、字符型、逻辑型
- 整型、实型、逻辑型、字符型
- C语言中能用八进制表示的数据类型为___A_____。
A、字符型、整型 B、整形、实型
C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型
- 下列属于C语言合法的字符常数是_____ C____。
A、’\97’ B、”A” C、’ ’ D、”\0”
A、'\97'
:这个写法是不正确的。在C语言中,\
后面跟的数字通常表示一个八进制数,但\97
并不是一个有效的八进制数(因为八进制数只包含0-7的数字)。如果你想要表示字符’a’(其ASCII值为97),你应该使用'a'
(十六进制表示)或97
(但这不是字符常量,而是整数常量)。
B、"A"
:这个写法是不正确的。它用双引号括起来,表示一个字符串常量,而不是字符常量。
C、' '
:这个写法是正确的。
是一个转义字符,代表水平制表符(tab)。
D、"\0"
:这个写法是不正确的。它用双引号括起来,表示一个包含空字符(null character)的字符串常量,而不是字符常量。字符常量应该使用单引号,例如'\0'
。但是,虽然"\0"
表示一个字符串,'\0'
是一个合法的字符常量。
9、在C语言中,合法的长整型常数是______A______。
A、0L B、4962710 C、0412765 D、0xa34b7fe
A、0L
:这是一个合法的长整型常数。它表示数值0,并且后缀L
表明它是一个长整型。
B、4962710
:这是一个普通的整型常数,没有指定为长整型。在大多数现代系统上,它的类型可能是int
,但具体取决于编译器和平台。
C、0412765
:这是一个以0开头的八进制数,但同样没有指定为长整型。在C语言中,以0开头的整数常量被认为是八进制数。
D、0xa34b7fe
:这是一个十六进制数,但同样没有指定为长整型。在C语言中,以0x
或0X
开头的整数常量被认为是十六进制数
10、若有以下定义语句char c1=’b’, c2=’e’; printf(“%d,%c
”,c2-c1,c2-‘a’+’A’);则输出结果是___B_______。
A、2,M B、3,E C、2,E
D、输出项与相应的格式控制不一致,输出结果不确定
11、以下合法的赋值语句是______AB_____。
A、x=y=100 B、d–; C、x+y D、c=int(a+b)
12、在以下一组运算符中,优先级最高的是_______D_____。
A、<= B、= = C、% D、&&
在C语言中,运算符的优先级决定了表达式中各个部分如何被分组和求值。以下是C语言中运算符的优先级从高到低的大致列表:
- 后缀运算符(Postfix Operators):函数调用、数组下标、结构体成员访问(
.
和->
)、后置递增(++
)和递减(--
)。 - 一元运算符(Unary Operators):间接引用(解引用,
*
)、取地址(&
)、正号(+
)、负号(-
)、位非(~
)、逻辑非(!
)、前置递增(++
)和递减(--
)、类型转换((type)
)、sizeof
和?:
(条件运算符)。 - 乘法类运算符(Multiplicative Operators):乘法(
*
)、除法(/
)、取模(模运算,%
)。 - 加法类运算符(Additive Operators):加法(
+
)、减法(-
)。 - 移位运算符(Shift Operators):左移(
<<
)、右移(>>
)。 - 关系运算符(Relational Operators):小于(
<
)、大于(>
)、小于等于(<=
)、大于等于(>=
)。 - 相等运算符(Equality Operators):等于(
==
)、不等于(!=
)。 - 位与运算符(Bitwise AND Operator):
&
- 位异或运算符(Bitwise XOR Operator):
^
- 位或运算符(Bitwise OR Operator):
|
- 逻辑与运算符(Logical AND Operator):&&
- 逻辑或运算符(Logical OR Operator):
||
- 条件运算符(Conditional Operator):
?:
(注意:尽管条件运算符?:
在一元运算符列表中已提及,但它也作为三目运算符,其优先级低于逻辑或运算符||
) - 赋值运算符(Assignment Operators):
=
、+=
、-=
、*=
、/=
、%=
、<<=
、>>=
、&=
、^=
、|=
- 逗号运算符(Comma Operator):
,
13、下列能正确表示a≥10或a≤0的关系表达式是___C__-。
A、a>=10 or a=10 | a<=0
C、a>=10 || a=10 && a<=0
二、填空题
- 若有以下定义语句:int u=010,v=0x10,w=10; printf(“%d,%d,%d
”,u,v,w); 则输出结果是 _____8,_16 10____。 - 下面程序的输出是_____________。 int 当作16 位
Main()
{unsigned a=32768;
printf(“a=%d
”,a)}
printf(“a=%d
输出结果是
”,a);a=32768
(假设编译器支持16位无符号整数)。但请注意,如果 int
是16位,则32768无法用 int
存储,而 unsigned
通常至少为32位,所以这个假设可能不成立
- 下面程序的输出是___11 13 b______。
Main()
{int k=11;
printf(“k=%d,k=%o,k=%x
”,k,k,k);}
- 若有以下定义语句:int a=5; printf(“%d
”,a++); 则输出结果是_____5_______。 - 设x为int型变量,执行以下语句,x=10; x+=x-=x-x; x的值为___10_______。 逗号运算所有的运算都是独立的
- 若定义x和y为double型变量,则表达式x=1, y=x+3/2的值是____2.5______。
- 若t为double型变量,表达式t=1, t+5, t++的值是___2______。
- 表达式10!=9的值是______1________。
- 设x,y,z和t均为int型变量,执行以下语句:x=y=z=1; t=++x||++y&&++z; 后t的值为______1______。
10、a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的值为_____1_______。
11、以下程序段的运行结果是_____###b=3______。
int a=2,b=3;
printf(a>b?”***a=%d”:”###b=%d”,a,b);
12、假定w,x,y,z和m均为int型变量,如下程序执行后m的值为__1_____。
w=1; x=2; y=3; z=4;
m=(w<x)?w:x;
m=(m<y)?m:y;
m=(m<z)?m:z;
13、语句printf(“a\bre\’hi\’y\\bou
”);的输出结果是_________re’hi’you________。\b退格符
14、以下程序的输出结果是_______0_________。
Main()
{unsigned short a=65536;
int b;
printf(“%d
”,b=a);}
15、若有定义int a=10,b=9,c=8; 接着顺序执行下列语句后,变量b的值为____3______。
c=(a-=b-5);
c=(a%11)+(b=3);
16、设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为_____
_1.000000(整数相除保留整数)____。
17、语句x++;、++x;、x=x+1;和x=1+x;执行后都使变量x的值增1,请写出一条同一功能的赋值语句(不得与列举相同)____x+=1_______。
18、表示“整数x的绝对值大于5”时值为“真”的C语言表达式是______x>5&&x<-5_______。
19、设y是int型变量,请写出判断y为奇数的关系表达式___________y%2!=0_________。
20、若以定义int a=25,b=14,c=19;以下语句的执行结果是__###_a=26,b=13,c=19______-。
a++<=25&&b–<=2&&c++<=18?printf(“***a=%d,b=%d,c=%d
”,a,b,c):printf(“###a=%d,b=%d,c=%d
”,a,b,c);
21、设有以下定义,并以赋予了确定的值:char w; int x; float y; double z;则表达式w*x+z-y所求得值的数据类型为_____double_________。
22、设有int x=11;表达式(x++*1/3)的值为___3________。
23、设以定义int x=1,y=1;则表达式(!x||y–)的值是_______1_____。
24、若有以下程序段,int c1=1,c2=2,c3; c3=1.0/c2*c1;执行后,变量c3的值为____0_______-。
25、下列程序的输出结果是16.00,请将程序填写完整。
Main()
{int a=9,b=2;
float x=____6.6f_____,y=1.1,z;
z=a/2+b*x/y+1/2;
printf(“%5.2f
”,z);}
26、设x和y均为int型变量,且x=10和y=3则以下语句的输出结果是_____10,2______。
Printf(“%d,%d
”,x++,–y);
27、以下程序的输出结果是______0 0__________。
Main()
{int a= -1,b=4;
k=(++a<0)&&!(b–<0);
printf(“%d %d
”,k,a,b);}
28、下列程序的输出结果是__0.000000__________。
Main()
{double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf(“%f
”,d*y);}
29、下列程序执行后的输出结果是_________6 6 6.000000 6.000000_____。
Main()
{double d; float f; long l; int j;
j=f=l=d=20/3;
printf(“%d %d %f %f
”,j,l,f,d);}
30、下列程序的输出结果是_______2,1______。
Main()
{int a=1,b=2;
a+=b; b=a-b; a-=b;
printf(“%d,%d
”,a,b);}
三、编程题
1、编写程序,输入两个整数:1500和350,求出它们的商和余数并输出。
#include
int main()
{
int num1 = 0;
int num2 = 0;
puts(“输入两个整数:”);
scanf(“%d%d”, &num1, &num2);
if (num2==0)
{
printf(“输入有误!”);
return 0;
}
printf(“商为:%d, 余数为:%d
“, num1/num2, num1%num2);
return 0;
2、编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,b中原来的值给c, c中原来的值给a,且输出改变后的a,b,c的值。
#include
int main()
{
int a, b, c;
int temp;
puts(“输入将要交换的三个整数:”);
scanf(“%d%d%d”, &a, &b, &c);
temp=a;
a=c;
c=b;
b=temp;
puts(“交换后的值为:”);
printf(“%d, %d, %d
“, a, b, c);
return 0;
}
3、输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。
例:a等于10,b等于5,a+b的结果输成
10+5=15
#include
int main()
{
int a = 0, b = 0;
puts(“请输入a, b:”);
scanf(“%d%d”, &a, &b);
//a+b,a-b,a*b,a/b,(float)a/b,a%b
printf(“%d+%d=%d
“, a, b, a+b);
printf(“%d-%d=%d
“, a, b, a-b);
printf(“%d*%d=%d
“, a, b, a*b);
printf(“%d/%d=%d
“, a, b, a/b);
printf(“(float)%d/%d=%f
“, a, b, (float)a/b);
printf(“%d%%%d=%d
“, a, b, a%b);
return 0;
}
4、输入一个非负数,计算以这个数为半径的圆周长和面积。
#include
int main()
{
float r = 0.0f;
puts(“输入圆半径:
“);
scanf(“%f”, &r);
printf(“圆周长为:%.2f, 圆面积为:%.2f
“, 3.14*2*r,3.14*r*r);//半径的圆周长和面积
return 0;
}
5、 正确输入年份后,输出该年是闰年还是平年。
#include
int main()
{
int year;
printf(“请输入年份:”);
scanf(“%d”,&year);
if ((year%4==0&&year%100!=0)||year%400==0)
{
printf(“%d是闰年!
“,year);
}
else
{
printf(“%d是平年!
“,year);
}
return 0;
}