c语言第三章练习

作者 : admin 本文共6010个字,预计阅读时间需要16分钟 发布时间: 2024-06-6 共3人阅读

一、选择题

  1. 一个C程序由若干个C函数组成,各个函数在文件中的位置为____A_______。
    1. 任意                             
    2. 第一个函数必须是主函数,其他函数任意
    3. 必须完全按照顺序排列
    4. 其他函数必须在前,主函数必须在最后

  1. D下列四个叙述中,正确的是______D_________。
    1. C程序中的所有字母都必须小写
    2. C程序中的关键字必须小写,其他标示符不区分大小写
    3. C程序中的所有字母都不区分大小写
    4. C语言中的所有关键字必须小写
  2. 下列四个叙述中,错误的是______C_________。
    1. 一个C源程序必须有且只能有一个主函数
    2. 一个C源程序可以含零个或多个子函数
    3. 在C源程序中注释说明必须位于语句之后
    4. C源程序的基本结构是函数
  3. 下面属于C语言关键字的是_____ABCD________。

A、int          B、typedef        C、enum      D、union

  1. 以下叙述不正确的是________D____。
    1. 分号是C语句的必要组成部分
    2. C程序的注释可以写在语句的后面
    3. 函数是C程序的基本单位
    4. 主函数的名字不一定用mian表示
  2. 语言中允许的基本数据类型包括___B____。
    1. 整型、实型、逻辑型(bool )
    2. 整型、实型、字符型
    3. 整型、字符型、逻辑型
    4. 整型、实型、逻辑型、字符型
  3. C语言中能用八进制表示的数据类型为___A_____。

A、字符型、整型                B、整形、实型

C、字符型、实型、双精度型      D、字符型、整型、实型、双精度型

  1. 下列属于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语言中,以0x0X开头的整数常量被认为是十六进制数

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语言中运算符的优先级从高到低的大致列表:

  1. 后缀运算符(Postfix Operators):函数调用、数组下标、结构体成员访问(. 和 ->)、后置递增(++)和递减(--)。
  2. 一元运算符(Unary Operators):间接引用(解引用,*)、取地址(&)、正号(+)、负号(-)、位非(~)、逻辑非(!)、前置递增(++)和递减(--)、类型转换((type))、sizeof 和 ?:(条件运算符)。
  3. 乘法类运算符(Multiplicative Operators):乘法(*)、除法(/)、取模(模运算,%)。
  4. 加法类运算符(Additive Operators):加法(+)、减法(-)。
  5. 移位运算符(Shift Operators):左移(<<)、右移(>>)。
  6. 关系运算符(Relational Operators):小于(<)、大于(>)、小于等于(<=)、大于等于(>=)。
  7. 相等运算符(Equality Operators):等于(==)、不等于(!=)。
  8. 位与运算符(Bitwise AND Operator):&
  9. 位异或运算符(Bitwise XOR Operator):^
  10. 位或运算符(Bitwise OR Operator):|
  11. 逻辑与运算符(Logical AND Operator):&&
  12. 逻辑或运算符(Logical OR Operator):||
  13. 条件运算符(Conditional Operator):?:(注意:尽管条件运算符 ?: 在一元运算符列表中已提及,但它也作为三目运算符,其优先级低于逻辑或运算符 ||
  14. 赋值运算符(Assignment Operators):=+=-=*=/=%=<<=>>=&=^=|=
  15. 逗号运算符(Comma Operator):,

13、下列能正确表示a≥10或a≤0的关系表达式是___C__-。

   A、a>=10 or a=10 | a<=0

   C、a>=10 || a=10 && a<=0

二、填空题

  1. 若有以下定义语句:int u=010,v=0x10,w=10; printf(“%d,%d,%d
    ”,u,v,w); 则输出结果是    _____8,_16 10____。
  2. 下面程序的输出是_____________。  int 当作16 位

Main()

 {unsigned a=32768;

  printf(“a=%d
”,a)}

printf(“a=%d
”,a);
 输出结果是 a=32768(假设编译器支持16位无符号整数)。但请注意,如果 int 是16位,则32768无法用 int 存储,而 unsigned 通常至少为32位,所以这个假设可能不成立

  1. 下面程序的输出是___11 13 b______。

Main()

{int k=11;

 printf(“k=%d,k=%o,k=%x
”,k,k,k);}

  1. 若有以下定义语句:int a=5; printf(“%d
    ”,a++); 则输出结果是_____5_______。
  2. 设x为int型变量,执行以下语句,x=10; x+=x-=x-x; x的值为___10_______。 逗号运算所有的运算都是独立的
  3. 若定义x和y为double型变量,则表达式x=1, y=x+3/2的值是____2.5______。
  4. 若t为double型变量,表达式t=1, t+5, t++的值是___2______。
  5. 表达式10!=9的值是______1________。
  6. 设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;

}

本站无任何商业行为
个人在线分享 » c语言第三章练习
E-->