一、选择题

1、一个C程序的执行是从()。

A.本程序的main函数开始,到main函数结束

B.本函数的第一个数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本函数的第一个数开始,到本程序main函数结束

2、以下叙述正确的是()。

A.在C程序中,main函数必须位于程序的最前面

B.C程序的每行只能写一条语句

C.C语言的本身没有输入输出语句

D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误

在头文件stdio中定义了输入输出函数,c语言本身只提供语法规则。

3、以下叙述不正确的是()。

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包括一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

4、C语言规定:在一个源程序中,main函数的位置()。

A.必须在最开始

B.必须在系统调用的库函数的后面

C.可以任意

D.必须在最后

5、一个C语言程序是由()。

A.一个主程序和若干子程序组成

B. 函数组成

C.若干过程组成

D.若干子程序组成

6、以下叙述中正确的是()。

A.C程序的基本组成单位是语句

B.C程序中的每一行只能写一条语句

C.C语句必须以分号结束

D.C语言必须在一行内写完

7、以下叙述中正确的是()。

A.C程序中的注释只能出现在程序的开始位置和语句的后面

B.C程序书写格式严格,要求一行内只能写一个语句

C.C程序书写格式自由,一个语句可以写在多行上

D.用C语言编写的程序只能放在一个程序文件中

8、下列叙述中正确的是()。

A.每个C程序文件中都必须要有一个main函数

B.在C程序中main()位置是固定的

C.C程序中所有函数之间都可以相互调用,与函数所在位置无关

D.在C程序的函数中不能定义另一个函数

9、C语言源程序的基本单位是()。

A.过程 B.函数 C.子程序 D. 标识符

10、下列关于算法的特点描述中错误的是()。

A.有穷性 B.确定性 C.有零个或多个输入 D.有零个或多个输出

  • 每个C程序文件中都必须要有一个main函数, main函数可以在任意位置,比如可以先定义函数后面再写main()
  • C程序的基本组成单位是函数

11、下列几个选项中,属于C语言的基本数据类型的是()。

A.整型、实型、结构体类型

B.整型、实型、字符型

C.整型、逻辑型、实型

D.整型、字符型、数组类型

12、下列标识符中,合法的标识符为()。

A.6adc B._max1 C.a*$bn D.123bc

  • 不能是关键字
  • 不能以数字开头,只能由字母、下划线(_)、数字组成。

13、下列标识符中,不合法的标识符为()。

A.int B._n5 C. i_5ab D. q5n

14、下列不合法的字符常量是()。

A.'a' B."\ " C.'\n' D."a"

字符常量包括普通字符与转义字符,以及各类ASCII码,值得注意的是:用\o,\oo,\ooo来表示八进制数,用\h+(1~a,b,c,d,e,f,g)来表示十六进制数字,当然,八进制中不包含8,位数最多为三位,十六进制不包含g以后的字母(h i j k l m n)。

15、下列不合法的字符串常量是()。

A.'abc' B."abc" C."dfb345" D.""

字符串常量为双引号包裹,字符常量为单引号包裹。

16、下列不合法的转义字符是() 。

A.'\' B.'\t' C.'\x6a ' D.'\89'

八进制不包含8

17、下面四个选项中,均是不合法的转义字符的选项是()。

A、'\ ' ''\t''

B、'\1234' '\018' '\x3h'

C、'\n' '\16' '\ '

D、'\x8a' '&' '\101'

八进制不能大于四位,不包含8, 含h

18、下列整型常量中,不合法的是()。

A.89 B.-16 C.0x4b D.0668

八进制转义字符却含8

19、下列实型常量中,不合法的是()。

A.0.0 B.12.3 C.123 D.2.34

实型,小数也。

20、下列实型常量中,合法的是()。

A.e3 B.2e4.3 C.–e4 D.2e-4

21、在 C语言中,int、char和short三种类型数据在内存中所占用的字节数()。

A.由用户自己定义 B.均为2个字节 C.是任意的 D.由所使用的编译系统决定

22、若有说明语句:char c='\72';则变量c()。

A.包含1个字符 B.包含2个字符 C.包含3个字符 D.说明不合法,c的值不确定

ASCII值

23、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。

A.int B.float C.double D.不确定

数据类型

24、设有说明语句:char w;int x;float y;double z; 则表达式w*x+z-y值的数据类型为()。

A.float B.char C.int D.double

25、在C语言中,设一个float型数据在内存中占用4个字节来存储,则一个float型数据的有效数字位数为()。

A.5位 B.6~7位 C.15~16位 D.18~19位

26、已知小写字母'a'的 ASCII码为十进制数 97,则执行语句 c='a'+2后,变量 c中的字符为()。

A.A B.c C.C D.b

27、设有定义float x=3.5;则执行(int)x之后,x的值为()。

A.3.500000 B.3 C.4 D.3.0

自动类型转换

28、若想确定所使用的编译系统中,int型数据所占用的存储宽度,可使用()进行测试。

A.int B.sizeof(int) C.(int)x D.(sizeof)int

29、在C语言中,要求运算数必须是整型的运算符是()。

A. / B.= C.++ D.%

30、若有定义语句: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

​ x+a%3*(int)(x+y)%2/4

=2.5+(7%3) * (int)[(7.2) %2 /4]

=2.5+1*(int)(1/4)

=2.5+1 * 0

=2.5

优先级

31、若有定义int x=5,y=2,则表达式5/2的结果为()。

A.2.5 B.2 C.2.0 D.3

32、判断char型变量ch是否为大写字母的正确表达式是()。

A.'A'<=ch<='Z'

B.(ch>='A')&(ch<='Z')

C.(ch>='A')&&(ch<='Z')

D.(ch>='A')and(ch<='Z')

逻辑运算符:

  • !:否运算符
  • &&:与运算符
  • ||:或运算符

33、为表示关系a≥b≥c,则正确的C语言表达式为()。

A.a>=b>=c

B.(a>=b)&(b>=c)

C.(a>=b)&&(b>=c)

D.(a>=b)||(b>=c)

34、逻辑运算符两侧运算对象的数据类型()。

A.只能是0或1 B.只能是0或非0 正数

C.只能是整型或字符型 D.可以是任何数据类型

逻辑运算即把数据两端的二进制进行比较

35、下列运算符中,优先级最高的是()。

A.< B.+ C.&& D.==

36、设x、y、z是int型变量,且有x=3,y=4,z=5,则下面表达式中值为0的是()。

A.'x'&&'y' B.x<=y

C.x||y+z&&y-z D.!((x<y)&&!z||1)

  • ! > && > ||
  • 非(没)与(遇)或(祸)
    • A: 3 & 4 --> 1
    • B: 3 <= 4 --> 1
    • C: 3 or (9 & -1) --> 3 or 1 --> 1
    • D: !( (3<4) & 0) or 1 ) --> !( (1 & 0 ) or 1 ) --> !(1 or 1 ) --> 0

37、已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值为()。

A.0 B.1 C.“假" D.true

(1) and (1) and (1) --> 1

38、判断char型变量c 是否为0到9的数字的正确表达式为()。

A.'0'<=c<='9'

B.0<=c<=9

C.c>='0'&&c<='9'

D.c>=0&&c<=9

39、设有int x=3,y=4,z=5,则执行表达式!(x+y)+z-1&&y+z/2的结果是( )。

A.6 B.0 C.2 D.1

逻辑非>算数运算符>关系运算符>逻辑与>逻辑或

肥蒜管运货

!(3+4)+5-1 && 4+5/2

= !7 +5 -1 && 4+2

=0 + 5 -1 && 6

= 4 && 6

= 1

40、以下程序的运行结果是( )。

1
2
3
4
5
6
#include <stdio.h>
void main( )
{int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d\n",a,b);}

A.6,1 B.2,1 C.6,0 D.2,0

&&和||却是逻辑运算符,除了0之外,其他的非零整数都可以看做真。

a=241 / 100 % 9 = 2 % 9 = 0 (... 2 )=2

b= 1 && 1 =1

41、执行以下语句后x的值为,y的值为( )。

intx=5, y=6, t=1, a=2, b=3, z=4;

(x=t>a)&&(y=b>z)

A.5,6 B.5,0 C.0,6 D.0,0

关系运算符的优先级:[< >  ()]>[= ()][{\color{magenta}<\ >\ \le \ \ge (\to)}]>[{\color{teal}=\ \ne(\to)}]

从左到右执行,&&前一条件为假,无论后面什么情况结果都为假,则右侧不执行,y还是初始值。

(5=1>2) && (6=3>4)

=(5=0) && (6=0)

=0 && 0

=0

42、以下表达式中,与表达式!a等价的是()。

A.a0 B.a1 C.!a0 D.!a1

43、设以下变量均为int类型,则值不等于7的表达式是( )。

A.(x=y=6,x+y,x+1)

B.(x=y=6,x+y,y+1)

C.(x=6,x+1,y=6,x+y)

D.(y=6,y+1,x=y,x+1)

无法理解

44、执行下面程序段后,输出结果为( )。

int x=13, y=5;

printf(“%d",x%=(y/2));

A.3 B.2 C.1 D.0

x=x%(5/2)

x= 13%2

x=1

45、若 w、x、y、z、m均为 int型变量,则执行下面语句后,m的值为()。

w=1;x=2,y=3;z=4

m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;

A. 1 B.2 C.3 D.4

?是判断,:为选择。为真就选前面的赋值,为假就选后面的

m=(w<x)?w:x;

​ m=(1<2)?1;2-->m=1

m=(m<y)?m:y

​ m=(2<3)?2;3-->m=1

m=(m<z)?m:z;

​ m=(3<4)?3;4-->m=1

46、若有int x=11,则表达式(x++*1/3)的结果为()。

A. 5 B.3 C.4 D.6

自加运算后才改变变量的值,参与运算的还是之前的变量值。

11 * 1/3

=11 / 3

=3

47、若有定义语句:int x=3;则以下表达式中,值为5的是()。

A.++x,x+1 B.x+=2,--x C.x+=2,x+1 D.x++,x++

48、以下关于运算符优先顺序的描述中正确的是()。

A.关系运算符<算术运算符<赋值运算符<逻辑与运算符

B.逻辑与运算符<关系运算符<算术运算符<赋值运算符

C.赋值运算符<逻辑与运算符<关系运算符<算术运算符

D.算术运算符<关系运算符<赋值运算符<逻辑与运算符

肥蒜管运货

49、C语言程序的三种基本结构是()。

A.顺序结构、选择结构、循环结构

B.递归结构、循环结构、转移结构

C.嵌套结构、递归结构、顺序结构

D.循环结构、转移结构、顺序结构

50、在下列选项中,不正确的赋值语句是()。

A.++t;

B.n1=(n2=(n3=0));

C.k=i==j;

D.a=b+c=1

51、以下程序的输出结果是()。

1
2
3
4
5
main()

{int a=010, b=10, c=0x10;

printf("%d,%d,%d",a,b,c);}

A.8,10,16

B.8,10,10

C.10,10,10

D.10,10,16

52、设有以下程序:

1
2
3
4
5
6
# include <stdio.h>
main ( )
{
int a=201, b=012;
printf(“%2d,%2d\ n",a,b);
}

程序执行后的输出结果是()。

A.01,02

B.201,10

C.01,10

D.20,01

%2d只是向后缩进了两个字符,b=012定义了八进制数,亦即8+2=10

53、有输入语句:scanf(“a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为 1,b的值为3,c的值为2;从键盘输入数据的正确形式应当是()。(注:□表示空格)

A.132<回车>

B.1,3,2<回车>

C.a=1□b=3□c=2<回车>

D.a=1,b=3,c=2<回车>

54、已知 ch是字符型变量,下面不正确的赋值语句是()。

A.ch='a+b';//(不是字符串!!!)

B.ch='\0';

C.ch='7'+'9';

D.ch=5+9;

55、在C语言中,紧跟在关键字if后一对圆括号里的表达式()。

A.只能用逻辑表达式

B.只能用关系表达式

C.只能用逻辑表达式或关系表达式

D.可以是任意表达式

56、以下程序的输出是()。

1
2
3
4
5
6
7
8
9
int main( )
{int x=2, y=-1, z=2;
if(x<y)
if(y<0)
z=0;
else
z+=1;
printf(“%d\n",z);
}

A.3 B.2 C.1 D.0

57、下面程序的运行结果是()。

1
2
3
4
5
6
7
#include <stdio.h>
int main()
{ int y=10;
do {y--;}
while(--y);
printf("%d\n",y--);
}

A.-1 B.1 C.8 D.0

二、判断题

1、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这组语句用{}括起来组成一个复合语句。

2、continue不是结束本次循环;而是终止整个循环的执行()

只是结束了本次循环,并没有终止整个循环

3、在对数组全部元素赋初值时,不可以省略行数,但能省略列数。()

不可以,可以同时省略行号与列号,或者省略两者任意一个,例如下面2X3数组

a[2][3]={11,12,21,22,31,32}

省略行号:a[2][3]={{11,12},{21,22},{31,32}}

省略列号:a[2][3]={{11,12,21},{22,31,32}}

4、函数的实参传递到形参有两种方式值传递和地址传递()

5、C语言标准输入操作中,gets() 函数一次只可读取一个字符。()

6、结构体变量可以作数组元素。()

7、内部静态类变量的作用域和寿命与自动类变量的相同。()

8、字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串()

9、有指针变量P和数组a,指针变量和数组都可以实现本身的值的改变,如p和a()

一看就错有木有!!!!!

只能改变指向的地址!!!

10、fseek函数一般用于文本文件。()

11、两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数()

12、枚举类型中的元素都具有一个整型值。()

13、for循环的三个表达式可以任意省略,while,do-while也是如此。()

14、指针变量和它指向的变量之间的关系,可以用指针运算符“*"表示()

15、C语言标准格式输出函数printf()的参数表是由若干个表达式组成。()

16、fseek函数一般用于二进制文件。()

因为16对,所以10错

17、循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。()

18、函数形参的存储单元是动态分配的()

19、结构体名在定义结构体时不可省略。()

20、变量的类型通常指存储类和数据类型两种。()

21、局部变量如果没有指定初值,则其初值为0()

乱码啊,老哥

22、 在C语言中,逗号既可以作为运算符,也可以作为分隔符。()

逗号运算符即:顺序求值运算符

23、C语言的三种循环不可以互相嵌套。()

屁话

24、以“a"方式打开一个文件时,文件指针指向文件首。()

25、共用体变量不可以进行初始化。()

26、文件的读函数是从输入文件中读取信息,并存放在内存中。()

27、寄存器类变量的作用域和寿命与自动类变量的相同。()

28、在一个函数内部调用另一个函数的调用方式称为嵌套调用()

29、结构体类型本身不占用内存空间,结构体变量占用内存空间。()

30、C语言中,字符串常量存放在字符数组中要有一个结束符,该结束符是0。()

31、结构体成员的类型必须是基本数据类型。()

32、函数的实参传递到形参有两种方式值传递和地址传递()

33、内存中的每个存储单元都有一个惟一的地址()

34、枚举类型中的元素都具有一个整型值。()

35、文件是否打开是可以判断的。()

36、函数的实参可以是常量,变量或表达式()

37、在多层循环中,一个break语句只向外跳一层。()

只跳出当前循环

38、在switch语句中,多个case可以共用一组执行语句。()

39、do-while语句先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。()

40、输入操作称为写操作,将输入流中的信息存到内存时,使用写函数。()

41、数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。().

42、函数的形参可以是常量,变量或表达式()

43、指针变量可以存放指针(地址)、数值和字符()

44、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。()

45、变量被定义后,它的作用域和寿命就被确定了,并且不可改变。()。

46、break可用于循环体中,不可用于switch语句中。()

47、使用static定义的变量属于静态变量()

48、指针变量,只能作为函数的形参,不可以作函数的实参()

49、文件指针用于指向文件,文件只有被打开后才有对应的文件指针。()

50、函数返回值的类型是由在定义函数时所指定的函数类型().

51、逻辑表达式的值只能为1或0。()

52、continue只能用于循环体中。().

53、变量被定义后,它不仅有一个确定的地址值,还会有一个确定的本身值。()

54、一个数组是由连续的一块内存单元组成的,指针变量就是这块连续内存单元的首地址()

55、if(a=5)是允许的。()

56、C语言的三种循环不可以互相嵌套。()

57、在对数组全部元素赋初值时,可以省略行数,但不能省略列数()

58、函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值()

59、指向结构体变量的指针可以作函数参数,实现传址调用。()

60、函数的实参可以是常量,变量或表达式()

61、如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素().

62、break则是结束整个循环过程,不再判断执行循环的条件是否成立。()

63、C语言允许用字符串的方式对数组作初始化赋值。()

64、如果函数定义出现在函数调用之前,可以不必加函数原型声明()

65、case语句后如没有break,顺序向下执行。()

66、do-while循环至少要执行一次循环语句。()

先执行循环,后判断条件,

while循环是先判断条件,再执行循环。

67、 int(*p)[4]它表示p是一个指针数组,它包含4个指针变量元素()

68、结构体变量可以作数组元素。()

69、函数stamp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。()

三、填空题

1、C 语言中的实型变量分为两种类型,它们是和floatdouble。 2、C语言的源程序必须通过编译连接后,才能被计算机执行。 3、C语言源程序文件的后缀是.c;经过编译后,生成文件的后缀是.obj;经过连接后,生成文件的后缀是.exe。 4、C语言从源程序的书写到上机运行输出结果要经过编译、编辑连接、执行四个步骤。 5、结构化程序由顺序结构、选择结构和循环结构三种基本结构组成。 6、C语言源程序的基本单位是函数。 7、一个C语言源程序是由若干函数组成,其中至少应含有一个主函数。 8、在一个C语言源程序中,注释部分两侧的分界符为/*...*/。 9、算法是程序设计的灵魂。 10、C语言程序只能从main函数开始执行。 11、自然语言、流程图和伪代码都可以用来表示算法,其中流程图是算法的图形化表示方法。 12、C语言中的常量分为普通常量符号常量两种类型。 13、C语言中的标识符只能由3种字符组成,他们是字母、数字、下划线。 14、在C语言中,有一类特殊字符以“\”开头,称为转义字符。转义字符’\n’的功能是回车换行;转义字符’\r’的功能是回车不换行。 15、在C语言中,用关键字float定义单精度实型变量,用关键字double定义双精度实型变量,用关键字char定义字符型变量。 16、要定义双精度实型变量a和b,并使它们的初值都为5.6,则定义语句为doube a=5.6,b=5.6;。 17、设C语言中一个short型数据占用2个字节存储,一个int 型数据占用4个字节存储,则要将数值32768正确无误的存储在变量x中,应使用的定义语句为int x =32768 。 18、若有定义char ch;则执行ch=‘A’+32 后,变量ch中的字符为'a'。 19、若s是int型变量,且有s=6,则表达式s%2+(s+1)%2的值为1。 20、若a是int型变量,则计算表达式a=25/3 % 3后,a的值为2

(25/3=8.1) % 3 = 2 ......2.1

21、若有定义: int b=7; float a=2.5, c=4.7;则表达式 a+(int)(b/3(int)(a+c)/2)%4的值为5.5

2.5 + ( 7 / 3(7.2/2) )%4 = 2.5 + (7/3 * 3.6 ) %4 = 2.5 + 3 = 5.5

22、若有定义:inta=2,b=3; floatx=3.5,y=2.5; 则表达式(float)(a+b)/2+(int)x%(int)y的值为3.5

2.5+ 3%2=2.5+1=3.5

**23、**若 有 定 义 : int x=3,y=2; float a=2.5,b=3.5; 则 表 达 式 (x+y)%2+(int)a/(int)b的 值 为0

2+2/3=2

24、当a=3,b=2,c=1时,表达式f=a>b>c 的值为0。 25、当a=5,b=4,c=2时,表达式a>b&&!c的值为0。 26、C 语言提供的三种逻辑运算符是&&||! 。 27、若a=2,b=4,则表达式!(x=a)||(y=b)&&0的值为0。 28、若a=1,b=4,c=3,则表达式!(a<b)||!c&&1的值为0。 29、若a=6,b=4,c=3,则表达式a&&b+c||b-c 的值为1。 30、若a=3,b=4,c=5,则表达式a||b+c&&b==c的值为1。 31、条件“ 0 ≤ x≤1或-1 ≤ x ≤0 ”的C语言表达式是x>=0&&x<=1||x>=-1&&x<=0 。 32、若有定义:intm=5,y=2;则计算表达式y+=y-=m=y后,y的值为-16。 33、若a是 int型变量,且a的初值为6,则计算表达式 a+=a-=a*a后,a的值为-60。 34、若a是int型变量,则表达式(a=45,a2),a+6的值为26。 35、若x和n均为int型变量,且有x=n=5,则计算表达式x+=n++后,x的值为10,n的值为6。 36、若n、i均为int型变量,则表达式n=i=2,i,i的值为3。 37、若有定义:intx=1,y=0;则表达式x<(y+x)?’B’:’C’>y++?’A’:’Z’的值为A。 38、若有定义:intx=0,y=1;则表达式x++*x--!=’y’?8-4:y的值为4。 39、C语句的最后用结束;。 40、若有定义floata[3][5];则a数组所含数组元素个数是15。 41、在C语言中,二维数组元素在内存中的存放顺序是按行主顺序存放 。 42、若有定义:doublex[3][5];则x数组中行下标的下限为0,列下标的上限为5。 43、假设M为已经声明的符号常量,则定义一个具有M*M个元素的双精度型数组a,且所有元素初值为0的形式是doublea[M][M]={0}; 。 44、若有定义:inta[3] [4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1] [2]的值为0a[2] [1]的值为6。 45、有定义charstr[]={‘D’,’o’,’g’,’\0’};若执行puts(str);则输出结果为Dog。 46、字符串"ab\n\012\""的长度是9

四、程序填空题

1、已有定义int a;float b,x;char c1,c2;为使a=3,b=6.5,x=12.6,c1='a',c2='A',正确的scanf函数调用语句是。

1
scanf("%d %f %f %c %c",&a,&b,&x,&c1,&c2);  

2、若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7 b=9 请完成输出语句:printf(" a=%d\nb=%d\n",a,b);。 3、若要求下列程序的输出结果为8.00,则[]中应填入的是。

1
2
3
4
5
6
7
#include<stdio.h>
main( )
{int k=2,m=5;
float s,x=1.2,y=[3.6];
s=2/3+k*y/x+m/2;
# 0 + y/0.6 + 2 = 8
printf("%4.2f\n",s);}

4、以下程序的功能是:输出 x、y、z三个数中的最大者。请填空。

1
2
3
4
5
6
7
8
9
10
11
main ( )
{int x=4,y=6,z=7
int u,v;
if()//******************* x>y
u=x;
else u=y;

if(u>z)
v=u;
else v=z;
printf(“v=%d”,v);}

5、下面程序的功能是:根据函数关系(当 2<x<=10,y =x(x+2);当-1<x<=2,y =2x;当 x<=-1,y=x-1)),对输入的每个x值计算出相应的y值,请填空。

1
2
3
4
5
6
7
8
9
10
11
12
13
main( )
{int x,y; scanf(“%d”,&x);
if(x>2&&x<=10)
y=x*(x+2);
else if()//***********x>-1&&x<=2
y=2*x;
else if(x<=-1)
y=x-1;
else y=-1
if(y!=-1) printf(“%d”,y);
else
printf(“error”);
}

6、以下程序的功能是:根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积。请填空。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<math.h>
main ( )
{float a,b,c;
float s ,area;
scanf(“%f %f %f”,&a,&b,&c);
if()//*********a+b>c&&b+c>a&&a+c>b
{ s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c) );
printf(“%f”,area);
}

else printf(“不能输出三角形”);
}

7、以下程序的功能是计算x、y、z 中的最小值。请填空。

1
2
3
4
5
6
main( )
{ int x=4,y=5,z=8; int u,v;
u=x<y?;v=u<z? u:z;
printf(“%d”,v);
}

8、将以下含有 switch语句的程序段改写成对应的含有非嵌套 if语句的程序段。请填空。 *含有 switch 语句的程序段:

1
2
3
4
5
6
7
8
9
10
int x,y,m; 
y=(int)(x/10);
switch(y)
{case 10:m=5;break;
case 9:m=4;break;
case 8:m=3;break;
case 7:m=2;break;
case 6:m=1;break;
default:m=0;
}

含有含 if 语句的程序段:

1
2
3
4
5
6
7
int x,m;
if() m=5//***********x<110&&x=100
if (x<100)&&(x>=90) )m=4;
if (x<90)&&(x>=80) ) m=3;
if (x<80)&&(x>=70) ) m=2;
if (x<70)&&(x>=60) ) m=1;
if((x<60)| |(x>109)) m=0

9、以下程序的功能是比较两个数乘积与和的大小

1
2
3
4
5
6
7
8
9
10
11
12
#include”stdio.h”
main( )
{int x,y,sum,product;
printf(“Enter x and y:”);
scanf(%d,%d”,&x,&y);
sum=x+y;
product=x*y;
if(sum>product)
printf(“(x+y)>(x*y)”);
else
printf(“(x*y)>=(x+y)”);
}

10、根据以下给出的嵌套 if语句,填写对应的 switch 语句,使它完成相同的功能。(假设 mark 的值在 1~100 之间。) if语句:

1
2
3
4
5
if( mark<60)k=1;
else if(mark<70) k=2;
else if(mark<80) k=3;
else if(mark<90) k=4;
else if(mark<100) k=5;

switch语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
switch()//*********mark/10
{ case 0:
case1:
case2:
case3:
case4:
case 5:k=1;break;
case 6:k=2;break;
case 7:k=3;break;
case 8:k=4;break;
case 9:
case 10: k=5;
}

11、以下程序的功能是求出数组num中小于零的数据之和,请填空。

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
void main( )
{
int num[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20};
int sum=0,i;
for(i=0;i<=19;i++)
if()//***********mum[i]<0
sum=num[i]+sum;
printf("sum=%6d",sum);
}

12、下面程序给a数组输入数据并以每行4个数据的形式输出,请填空。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define N 20
#include<stdio.h>
void main( )
{
int a[N],i;
for(i=0;i<N;i++)
scanf("%d",);//*********&a[i]
for(i=0;i<N;i++)
{
if(i%4==0)
printf("\n");
printf("%3d",a[i]);
}
printf("\n");
}

13、数组 a包括 10个整型元素。下面程序的功能是求出 a中各相邻两个元素的和,并将这些和存在数组 b中,按每行 3个元素的形式输出。请填空。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
void main( )
{
int a[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d,",&a[i]);
for(i=1;i<10;i++);
//**************b[i]=a[i]+a[i-1]
for(i=1;i<10;i++)
{
printf("%3d",b[i]);
if(i%3==0) printf("\n");
}
}

14、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。请填空。

1
2
3
4
5
for(x=0;x<=30;x++)
{ y=30-x;
if()//**************x=15************2*x+4*y==90
printf("%d%d\n",x,y);
}

15、若for循环用以下形式表示:for(表达式1;表达式2;表达式3)循环体语句则执行语句for(i=0;i<3;i++)printf("");时,表达式1执行1次,表达式3执行3次。 16、下面程序的功能是打印100以内个位数为6且能被 3 整除的所有数。请填空。

1
2
3
4
5
6
7
8
9
#include<stdio.h>
main()
{int i,j;
for(i=0; i<=9;i++)
{j=i*10+6;
if() continue; //***********j%3!=0
printf("%d",j);
}
}

17、执行下面程序段后,k的值是36

1
2
3
k=1,n=263;
do {k*=n%10;n/=10;} while(n);
//k=3*6*2

18、下面程序段中循环体的执行次数是3

1
2
a=10;b=0;
do { b+=2;a-=2+b;}while(a>=0);

19、等差数列的第一项 a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有数的和。请填空。

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
main()
{ int a,d,sum;
a=2;d=3;sum=0;
do
{ sum+=a;
a+=d;
if()//**************sum%4==0
printf("%d\n",sum);
} while(sum<200);
}

20、下面程序的功能是求 1000 以内的所有完全数。请填空。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数。例如:6=1=2+3,6是完全数)

1
2
3
4
5
6
7
#include<stdio.h>
main()
{ int a,i,m;
for(a=1;a<=1000;a++)
{for(m=0,i=1;i<=a/2;i++)if(!(a%i));
if(m==a)printf("%4d",a);
}

21、下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,输出此数;若未找到,打印 notexit,请填空。

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
main()
{int i,a;
for(i=1;i<=10;i++)
{scanf(“%d”,&a);
if(a%7==0);
//break
}
if (i<=10) printf("%d\n",a);
else
printf("not exit\n");
}

22、下面程序段将输出computer,请填空。

1
2
3
char c[]="It's a computer";
for(i=0; ;i++)//i <=7
{j=i+8;printf(%c",c[j]);}

五、阅读程序写出运行输出的结果

1、以下程序运行后的输出结果是。9,90

1
2
3
4
5
6
#include<stdio.h>
void main()
{
int x=011,y=0x5a;
printf("%d,%d\n",x,y);
}

2、以下程序的输出结果是 。BeijingChina

1
2
3
4
5
#include<stdio.h>
void main( )
{
printf("Beijing\nChina\n",n);
}

3、以下程序的输出结果是。x=1y=2*sum*=3

1
2
3
4
main()
{int x=1,y=2;
printf("x=%d y=%d*sum*=%d\n",x,y,x+y);
}

4、以下程序的输出结果是。

1
2
3
4
5
6
7
#include<stdio.h>
main( )
{ int m=177;
printf("%o\n",m);
if(x>=3000&& x<=5999) y=36+0.6*x; if(x>=6000&&x<=10000) y=54+0.3*x;
printf(“%6.1f”,y);
}

十进制转八进制

5、以下程序的输出结果是。x=2

1
2
3
4
5
6
7
8
#include<stdio.h>
main( )
{ int x,y; x=y=2;
if(x= =1)
if(x= =2) printf(“x=%d\n”,x=x+y);
else
printf(“x=%d\n”,x=x-y); printf(“x=%d\n”,x);
}

6、以下程序的运行结果是。-1

1
2
3
4
5
6
7
#include<stdio.h>
main ()
{ int a=2,b=3,c; c=a;
if(a>b) c=1;
else if (a= =b) c=0; else c=-1;
printf(“%d\n”,c);
}

7、以下程序的运行结果是。0,1

1
2
3
4
5
#include<stdio.h>
main ()
{ int x,y,z; x=3;
y=z=4; printf(“%d,”,(x>=y>=x)?1:0); printf(“%d\n”,z>=y&&y>=x);
}

8、以下程序段的输出结果是。x=5 The value of x is unknown.

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
main( )
{int x,y; x=5;
switch(x)
{ case 1:
case2:
case3:
case 4:printf(“x<5\n”);
case 5:printf(“x=%d\n”,x);
default:printf(“The value of x is unknown.\n”);
}
}

9、以下程序的运行结果是。F

1
2
3
4
5
6
7
#include<stdio.h>
main ()
{if (2*2= =5<2*2= =4)
printf(“T”);
else
printf(“F”);
}

10、以下程序的运行结果是。2,0,0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
main()
{ int a,b,c;
int s,w,t;
s=w=t=0;
a=-1;b=3;c=3;
if(c>0) s=a+b;
if(a<=0)
{ if(b>0)
if(c<=0) w=a-b;
}
else if (c>0) w=a-b;
else t=c;
printf(“%d,%d,%d”,s,w,t);
}

11、以下程序的运行结果是。20

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
main()
{ int a,b,c,d,x;
a=c=0;
b=1;
d=20;
if(a) d=d-10;
else if(! b)
if(!c) x=15;
else x=25;
printf(“%d\n”,d);
}

12、若有以下程序段,且grade的值为C,则输出结果是60~69<60 Error!

1
2
3
4
5
6
7
switch(grade)
{case’A’:printf(“85~100\n”);
case’B’:printf(“70~84\n”);
case’C’:printf(“60~69\n”);
case’D’:printf(“<60\n”);
default:printf(“error! \n”);
}

13、下列程序段的输出结果是。Hello

1
2
3
4
5
#include<stdio.h>
void main()
{char b[]="Hello,you"; b[5]=0;
printf("%s \n", b );
}

14、下面程序段的运行结果是。600

1
2
3
4
charch[]="600";
int a,s=0; for(a=0;ch[a]>='0'&&ch[a]<='9';a++)
s=10*s+ch[a]-'0';
printf("%d",s)

15、下面程序段的运行结果是。t*M

1
2
3
4
5
6
7
8
9
#include<stdio.h>
void main( )
{
int i;
char a[]="Time",b[]="Tom";
for(i=0;a[i]!='\0'&&b[i]!='\0';i++) if(a[i]==b[i])
if(a[i]>='a'&&a[i]<='z') printf("%c",a[i]-32); else printf("%c",a[i]+32);
else printf("*");
}

16、下面程序的运行结果是。2 5 8 11 14

1
2
3
4
5
6
7
8
#include<stdio.h>
main()
{int i=1;
while(i<=15)
if(++i%3!=2) continue;
else printf("%d",i);
printf("\n");
}

17、当运行以下程序时,从键盘输入”12345-1<回车>“,则下面程序的运行结果是。k=14,n=-1

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
main()
{ int k=0,n;
do
{ scanf("%d",&n);
k+=n;
}
while(n!=-1);
printf("k=%d,n=%d\n",k,n);
}

18、下面程序的运行结果是。8

1
2
3
4
5
i=1;s=3;
do
{ s+=i++;
if(s%7= =0) continue; else ++i;
} while(s<15); printf("%d",i);

19、下面程序的运行结果是。x=1,y=20

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
main()
{ int i,x,y; i=x=y=0;
do{ ++i;
if(i%2!=0)
{x=x+i;i++;}
else y=y+i++;
} while(i<=7);
printf("x=%d,y=%d\n",x,y);
}

title: Clang-Q&A date: 2021-12-19 22:30:28 tags:

  • Clang categories:
  • code cover: description: 期末编程题汇总 comments: copyright: aside: password: hidden:

六、编程题

编写程序,输入十个学生的成绩,求平均分,并将低于平均分的成绩输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
float score[10],sum , fave;
int i;
int main(void ){
printf("please input the score of ten students:\n");
for (i=0;i<10;i++) //求总体成绩,并保存到数组s中
{
scanf("%f",&score[i]);
sum += score[i];
}
printf("the sum score is %6.4f\n",sum);
fave = sum / 10; //求平均数
printf("the average score is %6.4f\n",fave);
for (i=0;i<10;i++) {
if (score[i]<fave)
printf("the loser (%d)is %6.1f\n", i,score[i]);
}
return 0;
}

编写程序,从键盘输入整型变量 x 的值,判断并输出 x 是奇数还是偶数。

1
2
3
4
5
6
7
8
9
10
11
#include "stdio.h"
int i,x;
int main(void ){
printf("hello, 这里是奇偶数检查器,please input your number\n");
scanf("%d", &x);
if (x % 2 == 0)
printf("your number is 偶数.\n");
else
printf("your number is 奇数.\n");
return 0;
}

编写程序,从键盘输入一个大写字母赋给字符型变量ch,并将其转换成对应小写字母后输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdio.h"
char ch;
int main(void ){
printf("大写字母转换器,请输入大写字母:\n");
scanf("%c", &ch);
if (ch >= 65 && ch <= 90) {
ch += 32;
printf("转换后为:%c", ch);
return 0;
} else
{
printf("输入错误,您的输入为%c,其ASCII值为:%d.\n",ch,ch);
}
return 0;
}

编写程序,输入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。

1
2
3
4
5
6
7
8
#include "stdio.h"
char ch;
int main(void ){
printf("请输入:\n");
scanf("%c", &ch);
printf("您的输入为%c,其ASCII值为:%d.",ch,ch);
return 0;
}

编写程序,从键盘输入两个整数,分别计算出它们的商和余数。输出时,商要求保留 2为小数,并对第三位进行四舍五入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "stdio.h"
int a,b,mod;
float div;
int main(void )
{
printf("请输入第一个整数:\n");
scanf("%d",&a);
printf("请输入第二个整数:\n");
scanf("%d",&b);
mod=a %b;
div = (float )a /b;
printf("余数为:%d\n",mod);
printf("商为:%4.2f",div);
return 0;
}
//简单方法
#include "stdio.h"
int a,b;
int main(void )
{
printf("请输入整数:\n");
scanf("%d%d",&a,&b);
printf("两数之商为:%6.2f\n两数的余数为:%d\n",(float)a/b,a%b);
return 0;
}

编写程序,从键盘输入一个华氏温度,要求输出摄氏温度。公式为 c=5/9*(f-32),输出要有相应的文字说明。

1
2
3
4
5
6
7
8
9
10
#include "stdio.h"
float f,c;
int main(void )
{
printf("请输入华氏温度值:\n");
scanf("%f",&f);
c=5.0 /9.0 * (f - 32 );
printf("此温度对应的摄氏温度为:%.4f",c);
return 0;
}

编写程序,从键盘输入一个大写字母,要求输出对应的小写字母,输入输出都要有相应的文字提示。(同3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdio.h"
char ch;
int main(void ){
printf("请输入大写字母:\n");
scanf("%c", &ch);
if (ch >= 65 && ch <= 90) {
ch += 32;
printf("转换后为:%c", ch);
return 0;
} else
{
printf("输入错误,您的输入为%c,其ASCII值为:%d.\n",ch,ch);
}
return 0;
}

编写程序,从键盘输入三个整数,求它们的平均值。输出计算结果时要求有文字说明, 并取小数点后 2为数字。

1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdio.h"
int s[3];
float ave,sum=0;
int main(void ){
printf("请输入三个数字:\n");
for(int i=1;i<=3;i++) {
scanf("%d", &s[i]);
sum=sum+s[i];
}
ave=sum / 3;
printf("平均数为%.2f",ave);
return 0;
}

编写程序,从键盘输入两个整数给变量x和y,交换x和y的值后输出。输入输出都要有相应的文字提示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdio.h"
int x,y,z;
int main(void ){
printf("请输入x的值:\n");
scanf("%d", &x);
printf("请输入y的值:\n");
scanf("%d", &y);
z = x ;
x = y ;
y = z ;
printf("交换后的值为:\n");
printf("x=%d,y=%d\n",x,y);
return 0;
}

编写程序,用 gechar 函数读入两个字符给 ch1、ch2,然后分别用 putchar 函数和 printf函数输出这两个字符。

有问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdio.h"
char ch1,ch2;
int main(void )
{
printf("请输入两个字符:");
ch1=getchar(); ch2=getchar();
printf("用 putchar 函数输出结果为:");
putchar(ch1);
putchar(ch2);
putchar('\n');
printf("用 printf 函数输出结果为:");
printf("%c,%c\n",ch1,ch2);
return 0;
}

编写程序,计算1-3+5-7+…-99+101的值。

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{ int i,t=1,s=0;
for(i=1;i<=101;i+=2){
t=t*i;
s=s+t;
t=-t/i;
}
printf("%d\n",s);
return 0;
}

将 a的行列元素互换后存到另一个二维数组b 中。请编写程序并输出 a 和 b 数组中的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
int main(void)
{
printf("The array a is:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("The array b is:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j];
printf("\n");
}
return 0;
}

编写程序,通过循环按行顺序为一个 5×5的二维数组 a赋 1到 25的自然数,然后输出该数组的左下半三角。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
int a[5][5],i,j,n=1;
int main(void )
{
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=n++;
printf("The result is:\n");
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}

编写程序,求二维数组(5行 5列)中最大元素值及其行列号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

#include<stdio.h>
int a[5][5],i,j;
int sum,x,y;
int main(void ) {
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
scanf("%d", &a[i][j]);
}
}
sum = a[0][0];
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (sum < a[i][j]) {
sum = a[i][j];
x = i;
y = j;
}
}
}
return 0;
}

编写程序,从键盘输入两个字符串 a和 b,要求不用库函数 strcat把串 b的前五个字符连接到串 a中;如果 b的长度小于 5,则把 b的所有元素都连接到 a中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
char a[80],b[80];
int i=0,j;
int main(void)
{
printf("Input two strings:\n");
gets(a);
gets(b);
while(a[i++]!='\0');
for(j=0,i--; j<5&&b[j]!='\0'; j++)
a[i++]=b[j];
a[i]='\0';
puts(a);
}

编写程序,对于给定的一个百分制成绩,改用相应的五级分成绩表示。设:90分以上为A,80~89 为 B,70~79 为 C,60~69 为 D,60 以下为 E(要求用 switch 语句实现)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
int score,temp;
char grade;
int main( )
{
printf("请输入分数:");
scanf("%d",&score);
temp=score/10;
if((score>100)||(score<0))
printf("输入错误!\n");
else
{switch(temp)
{
case 10:grade='A';break;
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
default:grade='E';
}
printf("grade:%c",grade);}
getch();
}
return 0;
}