C语言练习题一

判断题(每题2分):

1、C 语言属于一种机器语言
2、函数是由函数头和函数体组成
3、printf函数总是从新行的起始位置开始打印
4、C语言认为变量 isTrue和 ISTrue是相同的
5、所有的变量在使用前都必须予以声明

选择题(每题2分):

1、能正确表达字母 c 为大写字母的 C 语言表达式是()

A、c >= 'A' and c <= 'Z'
B、c >= 'A' || c <= 'Z'
C、c >= 'A' or c <= 'Z'
D、c >= 'A' && c <= 'Z'

2、运行以下程序片段的输出结果是()

int main() {
    int x, y = 6, z = 5;
    x = y == z;
    printf("%d\n", x);
    return 0;
}

A、 6
B、 0
C、 1
D、 5

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

#define M(x, y, z)  x * y + z

int main() {
    int a = 1, b = 2, c = 3;
    printf("%d\n", M(a + b, b + c, c + a));
    return 0;
}

A、19
B、17
C、15
D、12

4、下列运算符中,结合性是从右到左的是:

A、*
B、!=
C、&&
D、++

5、下列叙述正确的是:
A、预处理命令行必须位于源文件的开头
B、在源文件的一行上可以有多条预处理命令
C、宏名必须用大写字母表示
D、宏替换不占用程序运行时间

6、有以下程序

int main() {
    int a = 3, b = 4, c = 5, d = 2;
    if (a > b)
        if (b > c)
            printf("%d", d++ + 1);
        else
            printf("%d", ++d + 1);
    printf("%d\n", d);
    return 0;
}

程序运行后的输出结果是()
A、2
B、3
C、43
D、44

7、下列程序的输出结果为( )

int main() {
    int m = 7, n = 4;
    float a = 38.4, b = 6.4, x;
    x = m/2 + n*a/b + 1/2;
    printf("%f\n", x);
    return 0;
}

A、27.000000
B、27.500000
C、28.000000
D、28.500000

8、设 a,b,c 为整型变量,执行下面语句

a = 2;
b = 9;
a++;
c = --b;
a += b - c;

后 a 的值为( )
A、7
B、4
C、3
D、2

9、C语言中运算对象必须是整型的运算符是()

A、/
B、%
C、-
D、+=

10、已定义ch为字符型变量,以下赋值语句中可能出错的是()

A、ch='#';
B、ch=62+3;
C、ch=NULL;
D、ch='\xaa';

11、设以下变量均为int类型,表达式的值不为9的是()

A、(x=y=8,x+y,x+1)
B、(x=y=8,x+y,y+1)
C、(x=8,x+1,y=8,x+y)
D、(y=8,y+1,x=y,x+1)

12、在32位机器上,代码段的执行结果为()

char x = 65;
float y = 7.3;
int a = 100;
double b = 4.5;
printf("%d,%d,%d,%d\n",sizeof(x), sizeof(y), sizeof(a), sizeof(b));

A、2,2,2,4
B、1,2,4,4
C、1,4,4,8
D、2,4,4,8

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

void main() {
    int a = 5, b = 4, c = 6, d;
    printf("%d\n", d = a > b ? (a > c ? a : c) :(b));
}

A、5
B、4
C、6
D、不确定

14、以下程序的结果分别是()

printf("%d\n", sizeof("123hello\012\t\08\b56"));
printf("%d\n", strlen("123hello\012\t\08\b56"));

A、10,16
B、16,16
C、16,10
D、10, 10

15、C语言中最简单的数据类型包括()
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型

16、若执行下面的程序时从键盘上输入3和4,则输出是:()

int main() {     
      int a,b,s; 
      scanf("%d%d",&a,&b); 
      s=a; 
      if(a<b)  
          s=b; 
      s *=s; 
      printf("%d\n",s); 
}

A、14
B、16
C、18
D、20

17、char类型值的数值区间为()

A、0~32767
B、0~65535
C、-128~127
D、-2^15~2^15-1

18、设 int a,b,c; 执行表达式 a=b=1; a++; b+1; c=a+b–; 后, a,b和c的值分别是
A、2,1,2
B、2,0,3
C、2,2,3
D、2,1,3

19、C语言中,若有定义: int a=8,b=5,c; 执行语句c=a/b+0.4;后,c的值是()
A、1.4
B、1
C、2.0
D、2

20、请选择表达式 ‘0’ + 1 的结果是()
A、2
B、31
C、32
D、49

21、以下程序运行后的输出结果是()

int main() {
    int a=1,b=2,m=0,n=0,k;
    k=(n=b<a)&&(m=a) ;
    printf("%d,%d\n",k,m);
    return 0;
}

A、0,0
B、0,1
C、1,0
D、1,1

22、在C语言源程序的开始处通常加上预处理命令 #include 的原因是()
A、stdio.h文件中包含标准输入输出函数的函数声明,通过引用此文件以便能正确使用printf、scanf等函数
B、将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接
C、将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接
D、将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行

23、以下叙述不正确的是()
A、一个C语言源程序可由一个或多个函数组成
B、一个C语言源程序必须包含一个main函数
C、C语言程序的基本组成单位是函数
D、在C语言程序中,注释说明只能位于一条语句的后面

24、若有声明int x=5,y=1,z;则执行z=x A、1
B、2
C、3
D、4

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

int main() {
    printf("%d", 150 / -50 % -5);
    return 0;
}

A、5
B、3
C、-3
D、-5

26、C语言,设有宏定义,则表达式B*B的值为

#define A 4+5
#define B A*A

A、81
B、69
C、6561
D、33

27、以下程序的输出结果是:

#define SUM(x,y) x+y

int a = 3;
int b = 2;
a += a*SUM(a, b)*b;

A、16
B、30
C、33
D、39

28、阅读以下程序,程序运行后,如果从键盘上输入5,则输出结果是

int main() {
    int x = 20;
    scanf("%d", &x);
    if (x-- < 5)
        printf("%d", x);
    else
        printf("%d", x++);
    return 0;
}

A、 6
B、 20
C、 4
D、 5

29、以下叙述正确的是()
A、在C程序中,main函数必须位于程序的最前面
B、C程序的每行中只能写一条语句
C、C语言本身没有输入输出语句
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误

30、十进制数50表示成符合C语言规定的八进制数为()

A、20
B、032
C、62
D、062

问答题(每题4分):

1、C语言中的三大基本结构分别是?
2、C语言中标识符的规则是?
3、请简述C语言的编译流程?
4、函数式宏和无参宏的区别,在定义宏的过程中,应该注意什么?
5、sizeof和strlen的区别是?‘

编程题(每题5分)

1、整数的拆分计算:
从控制台输入一个四位数
如果这个数是偶数且这个数十位上的值是5,计算它每一位上的累加后的结果, 如果计算后的结果乘以3后,在ASCII码表中的大写字母范围内,则输出对应的字母,如果不在,则输出累加后的对应的数字;
否则,计算它每一位上的累乘后的结果,如果计算后的结果除以5后,在ASCII码表中的小写字母范围内,则输出对应的字母,如果不在,则输出累乘后的对应的数字;

示例1:
输入:8852
输出:E
说明: 输入的8852是一个偶数且这个数的十位上是5,所以计算累加,每一位累加后的结果是23,乘以3后的结果为69,刚好在[‘A’,‘Z’]的范围中,所以结果为’E’

示例2:
输入:1234
输出:24
说明: 输入的1234不是偶数,所以计算累乘,每一位累乘后的结果是24,除以5后的结果为4,4不在[‘a’,‘z’]的范围中,所以结果为24

示例3:
输入:8833
输出:s
说明: 输入的8833不是偶数,所以计算累乘,每一位累乘后的结果是576,除以5后的结果为115,刚好在[‘a’,‘z’]的范围中,所以结果为’s’

2、阶梯电价:
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(<=50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。
输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

输入样例1:
10
输出样例1:
cost = 5.30

输入样例2:
100
输出样例2:
cost = 55.50

你可能感兴趣的:(c,c语言,开发语言)